- a Smalltalk-80 implementation,
- the original 1976 P4 Pascal compiler,
- the Scheme 9 virtual machine,
- the Project Oberon System running on the host,
- and the Micron System described in the textbook, the migrated Project Oberon System natively running on RISC-V.*
The idea was to migrate representative C, C++, Pascal and Oberon implementations to Micron to see whether the language is descriptive and practical enough, and indeed I made a lot of language changes because of this experience.
It seems like the language requires Pascal/C89 style declarations on top of the scope. I've never been sure why Pascal developers have stuck to this convention for so long. Is it the zeal to preserve single-pass compilation?
Yes, that's from the Pascal/Modula/Oberon heritage. It's both a design style and a feature to support single-pass compilation (know the stack size and offsets of all parameters and locals before parsing/generating the body). Even that C/C++ are my main languages, I have no problem with declaring variables and nested procedures on top. It's just a matter of taste and getting used to it.
I've always been super interested in Oberon (due to my Pascal / Object Pascal / Delphi heritage) and even tried things like A2 (https://en.wikipedia.org/wiki/A2_(operating_system)) but never fully got into the boat.
Micron makes me excited to try your latest incarnation.
Would be great to see Micron up on Rosetta with a good selection of examples ported there. Great work...will definitely be having a look!
Thanks. I made a kind of my own Rosetta project here: https://github.com/rochus-keller/are-we-fast-yet/
Love the examples you've implemented in Micron:
The examples subdirectory (https://github.com/rochus-keller/Micron/tree/master/examples) contains:
The idea was to migrate representative C, C++, Pascal and Oberon implementations to Micron to see whether the language is descriptive and practical enough, and indeed I made a lot of language changes because of this experience.
It seems like the language requires Pascal/C89 style declarations on top of the scope. I've never been sure why Pascal developers have stuck to this convention for so long. Is it the zeal to preserve single-pass compilation?
Yes, that's from the Pascal/Modula/Oberon heritage. It's both a design style and a feature to support single-pass compilation (know the stack size and offsets of all parameters and locals before parsing/generating the body). Even that C/C++ are my main languages, I have no problem with declaring variables and nested procedures on top. It's just a matter of taste and getting used to it.
Congratulations!
I've always been super interested in Oberon (due to my Pascal / Object Pascal / Delphi heritage) and even tried things like A2 (https://en.wikipedia.org/wiki/A2_(operating_system)) but never fully got into the boat.
Micron makes me excited to try your latest incarnation.
Thanks. I also spent significant time with ActiveOberon (https://github.com/rochus-keller/activeoberon/) and AOS/Bluebottle (the 2004 version of A2, see https://github.com/rochus-keller/activeobjectsystem), but it turned out to be much more difficult to migrate to multiboot than the Oberon system. Micron is supposed to replace assembler even in lowest level when there is no stack with dedicated language levels and full type-checking support. Working system examples are here: https://github.com/rochus-keller/OberonSystem/tree/micron-rv... and https://github.com/rochus-keller/micronsystem3/.