Project Oberon Emulator in JavaScript and Java
schierlm.github.io
schierlm.github.io
It’s fun to explore and play around with, has a Zooming UI with a virtually infinite (I think) desktop.
It’s not a “pure” Oberon system as it has some extensions, but they provide async/await (and seemingly a long time before that caught on as a generally good idea! It’s the basis of “active objects”)
The language report was updated 2 years ago (http://cas.inf.ethz.ch/projects/a2/repository/raw/trunk/Lang...), and the repository is fairly active given the relative obscurity of the system.
But even then it was a what-could-have-been. Now, twenty five years after that, it still has the mystique of a somehow more powerful feeling system. I stare at it and feel it is somehow more powerful than the mundane electron apps today, even though I know what simple principles and how little code underlies it, and how comparatively complicated and byzantine those dumb modern electron apps are.
If you (not pjmlp) are into compilers or Oberon I highly recommend Wirth's book, Compiler Construction, that walks through its implementation and his way of thinking about languages and implementations.
Edit: am I getting the language mixed up with the operating system he also designed?
By the way, Cedar was the inspiration for Oberon.
"Eric Bier Demonstrates Cedar"
http://spivey.oriel.ox.ac.uk/corner/Oxford_Oberon-2_compiler
http://www.edm2.com/index.php/The_Oakwood_Guidelines_for_Obe...
My remark was more about how Niklaus Wirth saw the system he designed and his goals behind it.
He created Oberon the language to implement Oberon the operation system and eventually designed a simple CPU to run the full stack.
Wirth and his systems are a treasure of the CS universe.
I also rather like Wirth's Lola hardware language and RISC CPU. Great stuff.
Huh - hadn't come across this before but very nice HDL
You could make the wish to run an Oberon the perfect excuse to go into retro-computing:
I think Modula-2 provided more of a realistic system to base real software on, whereas Oberon has been stripped to the bone to enable the whole CPU and OS to be implemented by one person. They've gone too far along the minimalism spectrum to be very useful. However it provides inspiration that an OS and user interface can be implemented from scratch.
Speaking of Modula-2, Lillith was even more bare bones, and used microcode (M-Code).
Talking about language obviously. Not the whole computer system
Search Joe Duffy's keynote at one of Rustconf, towards the end he mentions that even proven wrong with Midori running in front of them, the Windows team was telling him it wasn't possible.
By the way, F-Secure ships security keys with firmware written in bare metal Go.
There is actually already a GC which works well with C++ and is also used by some of the mentioned languages: https://www.hboehm.info/gc/. Personally I think the C++ specification is already far too big and complex (so why adding even more stuff). A lot of GC languages were more or less successfully used to develop operating systems (even Lisp, Smalltalk and Java). From my point of view Oberon is not particularly suited for this purpose, but obviously it was used to implement the Oberon system (using some dark corners of the SYSTEM module and undocumented language features).
And A2 is much more pleasant to use.
This is why it is my favourite version of Oberon linage.
Now it is mostly nostalgia, so it gets down to use Go, .NET Native, D, Nim, Swift, whatever, to reach similar goals.
As for C++ GCs, the approaches taken by Unreal C++, C++/CLI and C++/CX are quite alright.
However the whole language politics at Microsoft seem to have placed C++/CLI and C++/CX on the extinction path, and C++/WinRT is surely not a replacement for anyone that enjoys productivity over a renewed ATL experience.
"Insight ETHOS: On object-orientation in operating systems"
http://dx.doi.org/10.3929/ethz-a-000666071
Scattered across the sections there are some remarks on some of the issues that lack of untraced references, or the existing finalization mechanisms were cause of attrition.
In Active Oberon those complains are no longer valid.
By the way, the author is relatively well know in research area nowadays.
Also posted it on HN today: https://news.ycombinator.com/item?id=27855767.
Currently the compiler generates LuaJIT bytecode (the VM is integrated with the IDE); a .Net CLI backend is work in progress, and an LLVM version is planned.
Apparently many forget C was on that role as well.
> At some level they all rely on massive libraries written in C
What? How does your "C++ product [that] does not use a single explicit allocation" actually manage memory?