6 ms·
Oberon, Plan 9 and Inferno (2021)
- eterps 4y agoThe article mentions: > Slim binaries were invented by Michael Franz in the early 1990s. They were motivated and opposed to the fat binaries invented by Apple during the transition from 68k to PowerPC architectures. OMI provided portable code based on a compressed version of the abstract syntax tree. If you are interested in pursuing that topic, Vidar Hokstad wrote a nice blog post about it a couple of years back: https://hokstad.com/semantic-dictionary-encoding https://hokstad.com/semantic-dictionary-encoding
- pjmlp 4y agoBy Oberon System 3 timeframe we had both distribution formats, either fully AOT compiled, or slim binaries.
- rbanffy 4y agoIIRC, it’s similar to how AS/400 binaries were distributed. Not sure they were compiled to native code on install or on first run.
- pjmlp 4y agoTIMI isn't exactly like Oberon, because with Oberon you could chose, either fully native code, or in this source coded form, that is JITed at load time. So you can have modules fully native without any kind of intermediate representation, for IBM i you would need the cleverly named Metal C compiler for proper native code. Actually there are plenty of systems that offer AOT/JIT workloads, Android, Java, .NET, Common Lisp, Visual Basic (classical).... WebAssembly is also adopting both approaches.
- kragen 4y agoWhat was the runtime performance cost of load-time JIT for slim binaries? What fraction of inner-loop bounds checks could be hoisted? What was the cost of dynamic dispatch? I'm trying to navigate similar tradeoffs for a system I'm prototyping now, but motivated by code footprint and safety rather than portability.
- pjmlp 4y agoNot really sure, you can read the PhD thesis about it, https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.4977&rep=rep1&type=pdf https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87... Notice that on Oberon System 3 you could decide what kind of optimizations would take place, section 7 on the PhD refers to it as further work (System 3 came later). Also a good production ready example of AOT + JIT to dive into as inspiration, are the latest version of Android. Since version 7 they rebooted the whole AOT concept, back to a mix of interpreter written in Assembly, JIT compiler with PGO, generating AOT code when the device is idle with help from PGO data, sharing PGO metadata with similar devices via Play Story. https://source.android.com/docs/core/dalvik/jit-compiler https://source.android.com/docs/core/dalvik/jit-compiler
- kragen 4y agoThank you! I had the sense that Dalvik is a much more complex design, far too complex for a single hacker, additionally handicapped by backward compatibility with earlier Dalvik versions.
- pjmlp 4y agoThe only thing that ART has left from Dalvik are the DEX bytecodes, but from complexity level it is yet another JVM implementation (whithout being technically one).
- eterps 4y agoIf I remember correctly this article describes some considerations and metrics: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.1711&rep=rep1&type=pdf https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.10... (it has been a while since I read it though)
- Torwald 4y agoThere was also Oberon for the Amiga.
- eterps 4y agoSome additional info+links can be found here: https://wiki.tcl-lang.org/page/Slim+Binaries https://wiki.tcl-lang.org/page/Slim+Binaries
- eterps 4y agoI am surprised that Oberon is relatively popular on HN: https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=oberon&sort=byDate&type=story https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
- pjmlp 4y agoBecause all of them represent what-ifs of how the computing industry could look today if their ideas would have been adopted in mainstream computing. Some of them actually were, however without the full package, they are a shadow of themselves.
- rbanffy 4y agoIndeed. They suffered, however, from being perhaps too revolutionary. There was no need for vi to be a virtualisation tool instead of a text editor.
- linguae 4y agoI've been getting into Plan 9 this year; I love the simplicity of the design, such as the fact that nearly all system services are accessible through the file system. I'm running 9legacy on a spare Intel Core i3 mini-PC; my ThinkPad USB keyboard works very well with the rio and acme interfaces, which need a three-button mouse. Admittedly I'm also using Plan 9 as a platform for my own OS project; I feel I can express my ideas easier using Plan 9's infrastructure compared to using Linux or one of the BSDs as a foundation, though this comes at the cost of extensive driver and software support (for example, there are no Common Lisp implementations for Plan 9 that I'm aware of, and porting an existing implementation such as SBCL will be a lot of work).
- butterisgood 4y agoNot the same I know but there’s a few scheme implementations that work. One of them is fennel if you use the plan 9 lua port available for 9front.
- philosopher1234 4y agoMaybe you could just use a golang implementation of lisp, given its plan9 support. Mb this is good? https://github.com/nukata/lisp-in-go https://github.com/nukata/lisp-in-go
- pbohun 4y agoI've done a little bit of C programming with the c libraries supplied by plan9port. It takes a bit of learning, but it's a very pleasant experience. [1] https://github.com/9fans/plan9port https://github.com/9fans/plan9port
- ncmncm 4y agoI suppose you would need to be a bit contrarian to code C++ on 9front.
- haolez 4y agoI have a spare mini-PC laying around and I was wondering if any of these OSes might be fun to play with. I'm leaning towards plan9 and 9front. Plan9 seems like an engineering marvel, while still very simple (I've checked the source code before). I don't know much about 9front, but I fear that I might give up the simplicity of Plan9 for some level of convenience. Can anyone chime in on this topic?
- smazga 4y agoOn a spare pc I would absolutely recommend it. I have it on a raspberry pi and I love it. It's hard to explain, but it takes me back to the days when I was a kid discovering computing for the first time. It's just...fun. Everything feels so simple and well-designed. Once you sort of wrap you head around the core concepts (namespaces, what 9p really gives you, etc) you suddenly start seeing how crummy posix based systems really are. You can enable a shocking amount of functionality with little scripts. At my last job, I worked on a mobile banking app (mostly c++/java) and I developed almost exclusively in acme on my raspberry pi with some little scripts to use my apple laptop for compiling. Yeah, you'll miss out on some things (mostly web and gaming related) but if you're like me, your real pc will become your spare because you'll look for every excuse you can to do it in plan9 first and only use your expensive rig as a fall back.
- haolez 4y agoAwesome! Do you use 9front?
- smazga 4y agoYes! The 9front crew is really good at adding stuff to keep the OS useful. Crypto is up-to-date, ssh plays well, ori_b (who also commented here) wrote a plan9 git client that 9front uses. 9front is the best way to go, in my opinion. It's also what sdf uses too, for what it's worth. There's a very friendly discord, but most of the old guard is on irc. It's...less friendly there.
- ncmncm 4y ago
- transfire 4y agoDoes anyone foresee Linux moving in the direction of Plan 9?