Skip to content

Commit 184d047

Browse files
authored
Merge branch 'EduMIPS64:master' into darkmode_test
2 parents aa1aaad + f7753dc commit 184d047

File tree

12 files changed

+119
-87
lines changed

12 files changed

+119
-87
lines changed

.devcontainer/devcontainer.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,10 @@
1212
"version": 3.11
1313
}
1414
},
15-
"postCreateCommand": "./gradlew init && npm install"
15+
"customizations": {
16+
"vscode": {
17+
"extensions": ["vscjava.vscode-java-pack", "mathematic.vscode-pdf" ]
18+
}
19+
},
20+
"postCreateCommand": "./gradlew init && npm install && npx playwright install"
1621
}

AUTHORS.md

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@
44

55
* Andrea Spadaccini - [**@lupino3**](http://github.com/lupino3)
66

7+
## Contributors
8+
9+
* Alessandro Di Stefano - [**@aleskandro**](http://github.com/aleskandro)
10+
* Maria Grazia Ciraulo - [**@GraziaCiraulo**](http://github.com/GraziaCiraulo)
11+
* Paolo Viotti - [**@pviotti**](http://github.com/pviotti)
12+
* Howard - [**@hbuie112358**](http://github.com/hbuie112358)
13+
* Matthew Crumley - [**@silentmatt**](http://github.com/silentmatt)
14+
* ancbro - [**@ancbro**](http://github.com/ancbro)
15+
* Grandroid - [**@Grandroid**](http://github.com/Grandroid)
16+
* Oscar Elhanafey - [**@Ooelhana**](http://github.com/Ooelhana)
17+
* Miguel Pinto - [**@rocas777**](http://github.com/rocas777)
18+
* Pimts - [**@pimts**](http://github.com/pimts)
19+
* iwodder - [**@iwodder**](http://github.com/iwodder)
20+
* jcarletta - [**jcarletta**](http://github.com/jcarletta)
21+
* hugmanrique - [**hugmanrique**](http://github.com/hugmanrique)
22+
* smallg0at - [**smallg0at**](http://github.com/smallg0at)
23+
* @galloj - [**galloj**](http://github.com/galloj)
24+
* @winstonpurnomo - [**winstonpurnomo**](http://github.com/galloj)
25+
726
## Former core developers (in alphabetical order)
827

928
* Alessandro Nicolosi - [**@alenico84**](http://github.com/alenico84)
@@ -19,19 +38,3 @@
1938
* Salvatore Scellato - <salvo.scellato@gmail.com>
2039
* Simona Ullo - <simon.u@tiscali.it>
2140
* Vanni Rizzo - <ascoltalatuasete@gmail.com>
22-
23-
## Contributors
24-
25-
* Alessandro Di Stefano - [**@aleskandro**](http://github.com/aleskandro)
26-
* Maria Grazia Ciraulo - [**@GraziaCiraulo**](http://github.com/GraziaCiraulo)
27-
* Paolo Viotti - [**@pviotti**](http://github.com/pviotti)
28-
* Howard - [**@hbuie112358**](http://github.com/hbuie112358)
29-
* Matthew Crumley - [**@silentmatt**](http://github.com/silentmatt)
30-
* ancbro - [**@ancbro**](http://github.com/ancbro)
31-
* Grandroid - [**@Grandroid**](http://github.com/Grandroid)
32-
* Oscar Elhanafey - [**@Ooelhana**](http://github.com/Ooelhana)
33-
* Miguel Pinto - [**@rocas777**](http://github.com/rocas777)
34-
* Pimts - [**@pimts**](http://github.com/pimts)
35-
* iwodder - [**@iwodder**](http://github.com/iwodder)
36-
* jcarletta - [**jcarletta**](http://github.com/jcarletta)
37-
* hugmanrique - [**hugmanrique**](http://github.com/hugmanrique)

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# EduMIPS64 ChangeLog
22

3+
## 1.3.0 (16/10/2023) - Lourdes
4+
5+
## Added
6+
- Simplified Chinese translation, both the in-application help and the HTML/PDF docs. (@smallg0at)
7+
- `DMUHU` instruction.
8+
- New, modern look & feel.
9+
- Dev container for easier development.
10+
11+
## Fixed
12+
- Documentation: fixed name of `SLTIU` (@galloj)
13+
- Documentation: fixed `BGEZ`
14+
- Documentation: fixed typo in dev docs (@winstonpurnomo)
15+
- Lots of dependency updates :)
16+
17+
## Changed
18+
- **BREAKING CHANGE**: `DMULU` is now correctly implemented according to MIPS64
19+
Release 6 ISA, and not using the old WinMIPS64 syntax. This will break older
20+
programs using the old syntax.
21+
- Major update to web UI dependencies (@pviotti)
22+
323
## 1.2.10 (05/03/2022) - FP - Freedom and Peace
424

525
### Added

RELEASE_NOTES.md

Lines changed: 63 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,83 @@
1-
# EduMIPS64 version 1.2.10
1+
# EduMIPS64 version 1.3.0
22

3-
*5th of March, 2021*
3+
*16th of October, 2023*
44

55
EduMIPS64 is a GPL MIPS64 Instruction Set Architecture (ISA) simulator and graphical debugger.
66

77
## Notes for this release
88

9-
This is version 1.2.10 of EduMIPS64. Its codename is **FP - Freedom and Peace**, because
10-
of the ongoing conflict in Ukraine, which is being invaded by Russia. Freedom and Peace
11-
is what I wish right now to the Ukrainians.
9+
This is version 1.3.0 of EduMIPS64. Its codename is **Lourdes**, as the release is being
10+
published from the french city of Lourdes, home to the Sanctuaire Notre-Dame de Lourdes.
1211

13-
This is mostly a bug-fixing release: issues #450, #646 and #304 (for the second time) were
14-
fixed. In terms of development changes, we moved to JDK (and JRE) 17 and we fixed the Snapcraft
15-
packages for the `armhf` architecture (among others). The latter means that EduMIPS64 is
16-
available on Raspberry PI via `snap`!
12+
Many complex conflicts are currently plaguing our world. We wish for reason and human
13+
kindness to prevail over reasoning that can only lead to destruction and death, and for
14+
those conflicts to end peacefully as soon as possible.
1715

18-
This version contains contributions from the following people, listed in no particular order:
16+
This release contains some small improvements, a whole new translation for the simulator
17+
and its documentation and a breaking change.
1918

20-
* @hugmanrique and @jcarletta - reported 2 critical bugs and provided MIPS64 code to reproduce them,
21-
which I was allowed to incorporate as regression tests.
22-
* Andrea Spadaccini - [**@lupino3**](http://github.com/lupino3)
19+
Let's start from the last one.
2320

24-
Please keep in mind that this is still EXPERIMENTAL SOFTWARE. It may
25-
BURN YOUR HARD DISK, DESTROY ALL YOUR DATA and even GO OUT WITH YOUR
26-
PARTNER. :)
21+
### Fixing DMULU
2722

28-
If you find a bug, please open an issue on GitHub.
23+
`DMULU` was historically implemented using a syntax that was made incorrect by Release 6
24+
of the MIPS64 ISA in 2014. This version of EduMIPS64 changes `DMULU` to use the new,
25+
correct syntax, and therefore it will break all code using the old `DMULU` syntax.
2926

30-
EduMIPS64 is hosted on GitHub: www.github.com/EduMIPS64/edumips64.
27+
Porting old code to the new code is pretty simple, as the old version store the results
28+
of the multiplication in the `LO` register, requiring an `MFLO` instruction to fetch it,
29+
while the new version allows users to directly specify the target register.
30+
31+
While the old code may have looked like the following:
32+
33+
```
34+
[...]
35+
DMULU r1, r2
36+
MFLO r3
37+
[...]
38+
```
39+
40+
The new code should instead be:
41+
42+
```
43+
[...]
44+
DMULU r3, r1, r1
45+
```
46+
47+
This is exactly how our internal tests changed, see [code](https://github.com/EduMIPS64/edumips64/commit/897f559ebda971760aae0bcad949b3cf38847b02#diff-24af5fcdf7f63916c891371766a8dc7875e89634fb6dfd5dad34d5b1969846e7).
3148

32-
Our web site is www.edumips.org, and our development blog is http://edumips64.blogspot.com.
3349

34-
## Main changes since 1.2.9
50+
### Simplified Chinese Translation
3551

36-
### Added
52+
Thanks to the effort of @smallg0at, EduMIPS64 now is fully translated to Simplified Chinese,
53+
including the in-app documentation and the HTML/PDF docs.
3754

38-
* New Snapcraft packages for armhf (e.g. Raspberry PI) and other architectures
55+
This change had us find and fix several smaller bugs related to rendering non-ASCII (and non-Italian)
56+
characters, as well as trying to get Sphinx to properly emit Simplified Chinese docs. We haven't
57+
fully succeeded, so the PDF has to be rendered through readthedocs.io, but it is usable and
58+
we have all the needed artifacts.
3959

40-
### Fixed
60+
Huge thanks to @smallg0at for this contribution!
4161

42-
* Parser incorrectly interprets hexadecimal immediates (Issue #450)
43-
* Some floating-point division cycles missing in Cycles window (Issue #646)
44-
* Infinite RAW stall in floating-point code (Issue #304) (yes, *again*)
62+
## Special mention: new Web UI
4563

46-
### Changed
64+
@smallg0at also implemented a brand new, IDE-like layout for the Web UI, which is already deployed
65+
to https://web.edumips.org. This is a major step forward in having a fully-functional version
66+
of EduMIPS64 on the web. Thanks agains, @smallg0at!
67+
68+
Also thanks to @pviotti for doing the foundational work of migrating to more recent major versions
69+
of React and Material UI, which made this work possible.
70+
71+
## Other changes
72+
73+
We also added the `DMUHU` instruction (pretty similar to `DMULU` in terms of implementation), fixed
74+
a few documentation issues (thanks @galloj and @winstonpurnomo) and also changed the look and feel to
75+
be more modern (goodbye, Metal!).
76+
77+
## The usual conclusion
78+
79+
If you find a bug, please open an issue on GitHub.
80+
EduMIPS64 is hosted on GitHub: www.github.com/EduMIPS64/edumips64.
4781

48-
* Migrated to JDK (and JRE) 17
82+
Our web site is https://www.edumips.org.
83+
The web version of EduMIPS64 is available at https://web.edumips.org.

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ tasks.register<PythonTask>("htmlDocsEn") {
7676
}
7777

7878
tasks.register<PythonTask>("htmlDocsIt") {
79-
workDir = "${projectDir}/docs/user/en/src"
79+
workDir = "${projectDir}/docs/user/it/src"
8080
command = buildDocsCmd("it", "html")
8181
}
8282
tasks.register<PythonTask>("htmlDocsZh") {

docs/developer-guide.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ not include the compiled help files.
7878
If you want to work on EduMIPS64 with Visual Studio Code, you need to download the Java Extension Pack
7979
(see [Java in Visual Studio Code](https://code.visualstudio.com/docs/languages/java)).
8080

81-
To make it recognize the EduMIPS64 folder as a project, run `./gradlew eclipse` to generate
82-
Eclipse-style project files, which are readable by the VSCode plugins.
81+
With the Java Extension Pack, you can directly import the Gradle project and use auto-complete, run unit tests, etc.
8382

8483
### Working on the Web UI
8584

@@ -118,6 +117,8 @@ Both `build` and `build-dbg` produce a `ui.js` file in the `build/gwt/war/edumip
118117

119118
The code was tested with Node.JS 16. The CI environment uses this version.
120119

120+
There are some basic Playwright tests for the web UI, which can be run with `npx run playwright`.
121+
121122
### Source code structure
122123

123124
The source code structure follows the [Gradle project layout conventions](https://docs.gradle.org/current/userguide/java_plugin.html#N152C8).

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=1.2.10
2-
codename="FP - Freedom and Peace"
1+
version=1.3.0
2+
codename="Lourdes"

scripts/edumips64-snap-wrapper.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/bin/sh
22

3-
$SNAP/usr/lib/jvm/java-17-openjdk-$SNAP_ARCH/bin/java -jar -Djava.util.prefs.userRoot="$SNAP_USER_DATA" $SNAP/jar/edumips64-1.2.10.jar $*
3+
$SNAP/usr/lib/jvm/java-17-openjdk-$SNAP_ARCH/bin/java -jar -Djava.util.prefs.userRoot="$SNAP_USER_DATA" $SNAP/jar/edumips64-1.3.0.jar $*

snapcraft.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: edumips64
2-
version: '1.2.10'
2+
version: '1.3.0'
33
summary: A free visual and cross-platform MIPS64 CPU simulator.
44
description: EduMIPS64 is a free MIPS64 visual simulator and debugger, used as a teaching tool in Computer Architecture courses.
55
grade: stable

src/test/webapp/basic-tests.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ test('test', async ({ page }) => {
88

99
// Ensure basic elements are available.
1010
await page.waitForSelector('#load-button');
11-
await page.waitForSelector('#widgetGrid');
11+
await page.waitForSelector('#main-grid');
1212
await page.waitForSelector('.monaco-editor');
1313

1414
// Click text=Load/Reset

src/webapp/components/Header.js

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,8 @@ export default function Header(props) {
6161
className="multi-step-button"
6262
id="multi-step-button"
6363
onClick={() => {
64-
let userInputValue = prompt(
65-
'Please input your desired step count:',
66-
10
67-
);
68-
if (!isNaN(userInputValue)) {
69-
if (userInputValue > 0) {
70-
props.onStepClick(userInputValue);
71-
} else {
72-
console.warn('User Input Non-positive Value for MultiStep');
73-
}
74-
} else {
75-
console.warn('User Input Invalid Value for MultiStep');
76-
}
64+
// TODO: make this customizable
65+
props.onStepClick(500);
7766
}}
7867
startIcon={<FastForwardIcon />}
7968
disabled={!props.stepEnabled}

src/webapp/static/style.css

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,6 @@ body {
3535
border-radius: 5px 0 0 5px;
3636
}
3737

38-
#widgetGrid {
39-
display: grid;
40-
grid-template-columns: repeat(auto-fill, minmax(500px, 1fr));
41-
grid-gap: 1rem;
42-
justify-content: stretch;
43-
}
44-
45-
#widgetGrid>div {
46-
height: 100%;
47-
font-family: monospace;
48-
border: 1px solid gray;
49-
padding: 0.5em;
50-
}
51-
52-
/* The React Monaco Editor container doesn't work well with padding,
53-
and also has some built-in padding. removing it. Also, set min height. */
54-
#widgetGrid>div.react-monaco-editor-container {
55-
padding: 0px;
56-
min-height: 500px;
57-
}
58-
5938
textarea {
6039
font-family: monospace;
6140
width: 100%;

0 commit comments

Comments
 (0)