| ▲ | Show HN: Oberon System 3 runs natively on Raspberry Pi 3 (with ready SD card)(github.com) |
| 104 points by Rochus 6 hours ago | 14 comments |
| |
|
| ▲ | spijdar 2 hours ago | parent | next [-] |
| Oh, this is something I'm going to have to try. Excellent work! I have to ask, since people who'd know will probably be here, what's the "ten thousand foot view" of Oberon today? I'm aware of the lineage from Pascal/Modula, and that it was a full OS written entirely in Oberon, sort of akin to a Smalltalk or Lisp machine image. What confuses me is the later work on Oberon seems to be something of a cross between a managed runtime like Java or dot net, and the Inferno OS, where it can both run hosted or "natively". Whenever I've skimmed the wikipedia or web pages I've been a bit confused. |
| |
| ▲ | Rochus 2 hours ago | parent | next [-] | | Thanks. In contrast to Smalltalk or Lisp, Oberon is originally a native language, and the Oberon System originally was conceived as the native operating system of the Ceres computer used for teaching in the nineties at ETH Zurich. So there is no image as in Lisp or Smalltalk. Oberon lives on today in the form of various dialects and derivatives (such as my Oberon+ or Micron languages, see https://github.com/rochus-keller/oberon and https://github.com/rochus-keller/micron). There are indeed Oberon implementations which run on Java or ECMA 335 runtimes, which is possible due to the very restricted pointer handling and memory management of Oberon. | |
| ▲ | foruhar 2 hours ago | parent | prev [-] | | Smalltalk too was originally a full OS running on bare metal back in the Xerox Alto days (1972-ish). | | |
| ▲ | Rochus 2 hours ago | parent [-] | | The "OS" (or rather "kernel") was actually the VM which was implemented in microcode and BCPL. The Smalltalk code within the image was completely abstracted away from the physical machine. In today's terms it was rather the "userland", not a full OS. | | |
| ▲ | EffCompute an hour ago | parent [-] | | It's refreshing to see Oberon getting some love on the Pi. There’s a certain 'engineering elegance' in the Wirthian school of thought that we’ve largely lost in modern systems. While working on a C++ vector engine optimized for 5M+ documents in very tight RAM (240MB), I often find myself looking back at how Oberon handled resource management. In an era where a 'hello world' app can pull in 100MB of dependencies, the idea of a full OS that is both human-readable and fits into a few megabytes is more relevant than ever. Rochus, since you’ve worked on the IDE and the kernel: do you think the strictness of Oberon’s type system and its lean philosophy still offers a performance advantage for modern high-density data tasks, or is it primarily an educational 'ideal' at this point? | | |
| ▲ | Rochus 3 minutes ago | parent [-] | | I don't know. Unfortunately we don't have an Oberon compiler doing similar optimization as e.g. GCC, so we can only speculate. I did measurements some time ago to compare a typical Oberon compiler on x86 with GCC and the performance matched about GCC without optimizations (see https://github.com/rochus-keller/Are-we-fast-yet/tree/main/O...). The C++ type system is also pretty strict, and on the other hand it's possible and even unavoidable in the Oberon system 3 to do pointer arithmetics and other things common in C behind the compilers back (via the SYSTEM module features which are not even type safe). So the original Oberon syntax and semantics is likely not on the sweet spot of system programming. With my Micron (i.e. Micro Oberon) language currently in development I try for one part to get closer to C in terms of features and performance, but with stricter type safety, and on the other part it also supports high-level applications with a garbage collector; the availabiltiy of features is controlled via language levels which are selected on module level. This design can be regarded as a consequence of many years of working with Wirth languages and the Oberon system. |
|
|
|
|
|
| ▲ | dharmatech an hour ago | parent | prev | next [-] |
| The Oberon user interface inspired Acme on Plan 9. Oberon is a very nice, fun and cozy system and environment for programming. I lived in it for a few months back around 2010 and it was a joy. |
|
| ▲ | eterps 5 hours ago | parent | prev | next [-] |
| This is great! I remember running System 3 on a 386 back when MS-DOS was king. |
| |
| ▲ | Rochus 3 hours ago | parent [-] | | Thanks. There is actually also an i386 version of the system in the repository, where I modified the kernel so it runs with Multiboot, making installations much easier. An essential achievement for both platforms were the stand-alone tools, i.e. I can compile and link the whole Oberon system on Linux or any other platform (see https://github.com/rochus-keller/op2/). I even implemented an IDE which I used for the development (see https://github.com/rochus-keller/activeoberon/). |
|
|
| ▲ | ike____________ 3 hours ago | parent | prev | next [-] |
| Thank you, I've never heard of the Oberon os before. |
| |
| ▲ | Rochus 2 hours ago | parent [-] | | Oberon is both a programming language and an operating system used mostly for teaching, much like e.g. xv6 or xinu. Similar to the latter, Wirth has written text books about the system, some of which can be downloaded for free (see https://projectoberon.net/ for the PDF links). |
|
|
| ▲ | tomcam 3 hours ago | parent | prev | next [-] |
| So good to see Oberon this accessible! Mad props! |
|
| ▲ | alterom an hour ago | parent | prev [-] |
| I still hope to see the world where Oberon is the future (and present) of OS and programming language design, and I know very little about it. Thanks to your work, that's about to change. Thank you times a thousand <3 |
| |
| ▲ | cyberax 27 minutes ago | parent [-] | | > I still hope to see the world where Oberon is the future (and present) of OS and programming language design I see you're into horror stories. Oberon is absolutely a horrible language. It's an example of how you can screw up a good language by insisting on things that were important in 1960-s. Like not allowing multiple returns (not multiple return _values_ but multiple returns). |
|