26 ms·
The wild world of non-C operating systems
- trashburger 5y agoHmm, they didn't list SerenityOS[0] under the C++-based operating systems for some reason... maybe it's still too under the radar? [0]: https://serenityos.org/ https://serenityos.org/
- LordDragonfang 5y agoNor do they mention Google's upcoming Fuchsia OS, whose Zircon Kernel is written almost entirely in C++. While not quite "beloved" yet, it generates substantial buzz every time it hit the HN front page.
- lproven 5y agoI've been looking at it. The difficulties for me right now are: * it's not FOSS; * it's not well-described in the literature (yet?); * and ISTM that the project's goals seem to keep shifting.
- pjmlp 5y agoLooks pretty much FOSS to me, https://fuchsia.dev/fuchsia-src/contribute/governance/policy/open-source-licensing-policies https://fuchsia.dev/fuchsia-src/contribute/governance/policy...
- lproven 5y agoHmmm. My mistake, then. I was and am keeping an eye on it anyway. As and when it gets to a more useful state, I will try it and probably write about it.
- eatonphil 5y agoI don't think it's any more under the radar than Redox or Tock listed in the article.
- dang 5y agoDiscussed yesterday: SerenityOS Browser now passes the Acid3 test - https://news.ycombinator.com/item?id=30853392 https://news.ycombinator.com/item?id=30853392 - March 2022 (141 comments) Lots more at https://news.ycombinator.com/item?id=30858768 https://news.ycombinator.com/item?id=30858768
- eatonphil 5y agoAlso, it's funny the editors of The Register didn't catch the omission of Serenity since The Register is definitely aware of Serenity. Edit: More than just the editors missing it -- it's the same author! https://www.theregister.com/2022/03/31/serenityos/ https://www.theregister.com/2022/03/31/serenityos/
- lproven 5y agoYup, I was and am aware of it. :-) However, AIUI, the Serenity kernel isn't C++ but C. I could be wrong. As such, as this was specifically a piece about non-C OSes, I felt it didn't really fit. Secondly, although now I've had a bit of exposure to it writing that 2nd article, nonetheless, SerenityOS -- impressive as it is -- remains a bit of a prototype sort of project, rather than anything actually deployed in production anywhere. The project pages note that there are issues getting it to run anywhere outside of QEMU. Whereas, say, Oberon is pretty obscure, but various versions of Oberon run on bare metal, or as VMs under multiple other OSes, or both, and ETH very much ran Oberon in production on bare metal for non-technical staff for years. There are 3-4 different dialects of Oberon, it runs natively on other OSes, it has OSes designed solely to be VMs, and so on. To draw a comparison: it straddles the spaces of Plan 9 (mainly intended as a native bare-metal OS) to Taos (primarily bare-metal but deeply cross-platform, no native binaries as such) to Inferno (deeply cross-platform, no native binaries as such, but mainly intended to run under other OSes). Whereas in the space of, say, Rust OSes, there are so few that even niche ones that are in prototype stage are worthy of mention... IMHO.
- eatonphil 5y agoLooks like C++ to me [0]! And my point is that when you mention OS-es like Mezzano (3k stars on Github, a dozen contributors [1]) and Redox (13k stars, 80 contributors [2]), but don't mention Serenity (18k stars, over 100 contributors [3] (Github limits this view to the top 100)) it seems funny. In any case, it's your article and you can do what you'd like. I don't like people telling me I should change my articles. [0] https://github.com/SerenityOS/serenity/tree/master/Kernel/Arch/x86/x86_64 https://github.com/SerenityOS/serenity/tree/master/Kernel/Ar... [1] https://github.com/froggey/Mezzano/graphs/contributors https://github.com/froggey/Mezzano/graphs/contributors [2] https://github.com/redox-os/redox/graphs/contributors https://github.com/redox-os/redox/graphs/contributors [3] https://github.com/SerenityOS/serenity/graphs/contributors https://github.com/SerenityOS/serenity/graphs/contributors
- jleyank 5y agoIf they're discussing historical OS's, which I think they were, I thought VMS was written in BLISS. That one was sorta important, and I recall "Ignorance is BLISS, BLISS is ignorance" T-shirts.
- lproven 5y agoHi. Author here. It's not all historical stuff by any means; in fact, I tried to skew it towards stuff from the recent or modern era and things that are still in maintenance, still being worked on, or actively sold. And, yes, I did consider VMS, but the article was getting too long already and while BLISS does qualify, it's also relatively obscure. Maybe I made the wrong call there: it's in current use, on sale, and about to become generally available on x86-64. Ah, well.
- jleyank 5y agoGoogle sea that openvms is still used. Talk about inertia…
- lproven 5y ago"Google sea"? VMS is alive, well, and about to ship a new version. https://vmssoftware.com/about/openvmsv9-1/ https://vmssoftware.com/about/openvmsv9-1/ It is exceptionally solid, it has the best clustering ever invented for any OS in history, and above all: if it ain't broke, don't fix it.
- wrycoder 5y agoGreat job, thanks. I’ve been around awhile, but I’d not heard of about a third of those systems.
- lproven 5y agoOh cool! Thank you!
- Tozen 5y agoArticle forgot to mention that Niklaus Wirth was a consultant for the team at Apple that created Object Pascal. Apple had used variations of Pascal and Object Pascal for early Macs. This was in addition to companies using Wirth's Modula-2 and Oberon. Part of the reason why C became so prevalent is it being created within and backed by AT&T (one of the largest companies in the world back then). They pushed C and Unix everywhere, it took hold, and here we are today.
- greenyoda 5y agoThe article notably omits Multics, which was written in PL/I: https://en.wikipedia.org/wiki/Multics https://en.wikipedia.org/wiki/Multics Multics, first released in 1969, was a major influence on Unix. From the Wikipedia article: > Multics was the first operating system to provide a hierarchical file system, and file names could be of almost arbitrary length and syntax. A given file or directory could have multiple names (typically a long and short form), and symbolic links between directories were also supported. ... It was also the first to have a command processor implemented as ordinary user code – an idea later used in the Unix shell. It was also one of the first written in a high-level language (Multics PL/I), after the Burroughs MCP system written in ALGOL.
- jliptzin 5y agoWas this written by a machine?
- lproven 5y agoI can attest that I am flesh and blood. But then I suppose a bot would say that. I cut my finger quite badly while writing the article so it did involve actual blood being spilled. Does that help?
- bitwize 5y agoMCP (as in the Burroughs OS) stood for Master Control Program. The villain in Tron was named for the OS. The technical consultant for Tron was none other than Alan Kay — himself a huge Burroughs fan.
- lproven 5y ago> MCP (as in the Burroughs OS) stood for Master Control Program. The villain in Tron was named for the OS. I specifically said this in the article: > B5000's MCP or Master Control Program. (Yes, the same name as the big baddie in Tron.)
- skadamat 5y agoYeah! Also I think Alan Kay's wife (Bonnie MacBird) was the writer for the movie: https://en.wikipedia.org/wiki/Bonnie_MacBird https://en.wikipedia.org/wiki/Bonnie_MacBird
- bitwize 5y agoYep. They met and fell in love while working on Tron. Doubtless Bonnie thought that MCP Alan was talking about made a cool villain name. Also, Tron's programmer Alan Bradley is named after Kay. The major conflict in Tron is also themed after Kay's thought: Whom should a computer serve, its users or the bureaucracy that administrates it? Kay believed in user-centric computing, and was profoundly influential in making that happen, but it's clear that this struggle still goes on today.
- dboreham 5y agoMCP written in some version of Algol, iirc.
- bitwize 5y agoESPOL, a systems dialect of ALGOL. Uniquely for a machine at the time, you didn't program a Burroughs in assembly. The tools just weren't available. Everything from the kernel to user applications was written in some HLL.
- mike_hearn 5y agoThe article didn't list JNode, but it's also a pure Java OS. I noticed in another thread that a few people seem to think you can't implement an entire operating system in a GCd language like Java or C#, but that isn't true. You can do it like this: 1. Use an ahead of time compiler to compile the base runtime/kernel image to static machine code. In managed language operating systems like JNode or Singularity there isn't a strong distinction between kernel and language runtime, so this is the same thing. This base needs to contain at least a GC and probably a JITC, as well as some basic support services. This can itself be written in the managed language. 2. Write a very short bootstrap loader in assembly like every OS has, which sets things up enough to jump into the entry point of that runtime. 3. Writing a compiler in a managed language is easy enough but what about a GC? To do this you teach the compiler that some methods are 'magic' and shouldn't be treated as normal method calls. Instead they become either compiler intrinsics that are translated to pure assembly e.g. to read/write raw memory locations, or they are compiled in special ways for example to remove GC safe points. The current best example of this in action is the GC in SubstrateVM, which is the "VM" compiled into any program AOT compiled with the GraalVM native image tool: https://github.com/oracle/graal/tree/master/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge https://github.com/oracle/graal/tree/master/substratevm/src/... If you flick through it you'll see various annotations and types you wouldn't normally see in Java, like `Pointer` and `@Uninterruptible`. These are recognized by the compiler and affects how the machine code is generated. The language is the same, so all existing tools continue to work - it's not a dialect or subset of Java, it's the full thing, just with slightly modified rules for how the final generated code behaves. SubstrateVM has one more trick up its sleeve to break the circularity: some objects can be initialized and persisted to an "image heap" at build time. In other words, the GC code can use Java classes to structure itself, despite being unable to allocate. And that's all it needs. There have been efforts to do things like this in the past for full operating systems. They have nice properties: for example you can sandbox drivers, IPC overheads goes away because it's all in a single address space, capabilities actually work and are pervasive, and it's quite easy to keep ABIs stable. There are usually a few sticking points that prevent them taking off: 1. Historically, GCs have either been good at latency or throughput but not both simultaneously. Some of them also had trouble with large heaps. That's a problem because virtually all reasonable computing requires a mix of programs with wildly different sensitivity, most obviously, developers want latency to be prioritized for editing in their IDE but throughput to be prioritized for their build system. If you have one GCd heap for the entire computer then you have two options: 1a. Pick one algorithm to manage it. 1b. Do what Singularity did and come up with a quasi-process notion in which each unit has its own GCd heap. Singularity had a nice concept called an 'exchange heap' which allowed objects to be passed between these quasi-processes very fast and cheaply, whilst ensuring that object graph could only be pointed to by one unit at once. This made IPC tremendously cheap, allowed one unit to be paused for GC whilst other units ran, and let them use IPC all over the place. However it did reduce the benefits of using managed languages somewhat as it reintroduced complex data ownership rules. NB: This is changing now with tech like HotSpot ZGC and Shenandoah (which are written in C++ though). They drive latencies through the floor, it's basically pauseless, and the new not yet released fully generational variants have very good throughput too. Also, G1 GC has monstrous throughput even with low pause times, they just aren't quite as low as ZGC/Shenandoah. 2. Overheads of managed languages are higher. The successor at MS Research to Singularity was codenamed Midori and not much was ever published about it publicly, but from what was written (by Joe Duffy) it seemed apparent that they went down a rabbithole of trying to make Midori have the same raw efficiency and overhead as C++ based Windows. They got a long way but ended up not having any interesting enough new features to justify the investment and the project was eventually canned. 3. All the same problems new operating systems always have: no apps, drivers etc. 4. Spectre attacks make single address space operating systems more complex. The new support for memory protection keys in Intel CPUs could re-awaken this area of OS research however because MPKs let you block speculation attacks within a single address space.
- deleted 5y ago[deleted]
- deleted 5y ago[deleted]
- tremon 5y agoDo these operating systems also use a non-C calling convention for libraries?
- ncmncm 5y agoIt is common for an OS to use a non-C protocol for actual system-call traps, but also unfortunately common not to document, support, or maintain those, so users are obliged to call a provided C library for to use them.
- steveklabnik 5y agoHubris, the Rust OS I work on, is... aggressively static and doesn't have dynamic linking (or loading, in fact), but the kernel ABI is non-C, yes: https://hubris.oxide.computer/reference/#_syscall_abi https://hubris.oxide.computer/reference/#_syscall_abi (We use it in Rust via inline assembly stubs.)
- skissane 5y agoAlso z/OS (formerly known as MVS) -large chunks of it are written in an IBM-internal-use-only PL/I dialect called PL/X. The core of the AS/400 operating system, OS/400, the Licensed Internal Code (LIC), used to be written in another IBM-only PL/I dialect, PL/MP. In, the 1990s, while porting the AS/400 from CISC to RISC, they rewrote all the PL/MP code into C++. But IBM has another private dialect of PL/I called PL/MI, which was used to write the higher level part of OS/400, the XPF - basically PL/MI compiled to the virtual machine bytecode but PL/MP compiled to the machine code of the physical hardware. From what I understand, parts of the XPF are still written in PL/MP even in the latest versions of OS/400 (now called IBM i OS), although newer components tend to be developed in C/C++ instead. Other parts of the XPF were written in Modula 2, and I believe there is still some Modula 2 code surviving in the most recent versions as well. IBM has had even more secret proprietary PL/I variants. The long defunct IBM 8100 line’s DPPX operating system was a written in PL/DS. Another dialect, PL.8, used to be used to write IBM’s compilers (although I believe it has now been replaced by C++) and also some of the firmware for the mainframes. IBM even wrote a GCC front-end for PL.8, although it appears they never released it.
- the_only_law 5y agoI actually don’t mind PL/I. Always wondered one they needed a ton of derivative proprietary languages. I think I’d almost prefer language bloat.
- zozbot234 5y agoPL/I is a kitchen sink language already. Modern languages tend to minimize the amount of features that they provide in the language itself, and do as much as possible in their standard libraries. (This also goes together with simplified syntax, because user-defined complex syntax is hard, slow and potentially ambiguous, whereas limiting verbose, "readable" syntax to just a handful of language-provided features is just silly.)
- nobody9999 5y ago>PL/I is a kitchen sink language already. Speaking as someone who has delved into the intricacies of PL/I, I am sure that only Real Men could have written such a machine-hogging, cycle-grabbing, all-encompassing monster. Allocate an array and free the middle third? Sure! Why not? Multiply a character string times a bit string and assign the result to a float decimal? Go ahead! Free a controlled variable procedure parameter and reallocate it before passing it back? Overlay three different types of variable on the same memory location? Anything you say! Write a recursive macro? Well, no, but Real Men use rescan. How could a language so obviously designed and written by Real Men not be intended for Real Man use? Heh. Heh. Heh. [Source: http://www.anvari.org/fortune/Miscellaneous_Collections/362036_speaking-as-someone-who-has-delved-into-the-intricacies-of-pl-i-i-am-sure-that-only-real-men-could-have-written-such-a-machine-hogging-cycle-grabbing-all-encompassing-monster.html http://www.anvari.org/fortune/Miscellaneous_Collections/3620... ]
- rbanffy 5y agoFun to think Clearpath is the oldest operating system in production, since 1962, and that’s still fully supported. Comes close to another one that also predates C, IBM’s z/OS, which has parts written in their own assembly dialect, as well as PL/1 and others. Next week we’ll probably see a new version of it with support for the new z16 (based on the Telus chip they’ve shown at the last Hot Chips).
- ncmncm 5y agoThe article falsely claims, "Rust is eclipsing C++". "Rust is desperately chasing after C++" would be accurate. It also fails to mention Apollo Aegis, coded in Apollo's extended Pascal, and both at introduction and retirement was more advanced than Unix. Some key features still are not seen in Linux or most BSDs. And, it fails to mention SerenityOS, in C++.
- ModernMech 5y agoIt depends on what they mean by popularity. If they mean % of developers using Rust vs C++ they are wrong. But I teach students both C++ and Rust, and by far Rust is preferred. It’s never even a contest. C++ is long in the tooth, and if you want to talk desperation, C++ is really struggling with its identity now that Rust is on the scene. Before there were some pretty good arguments to use it, but in light of Rust, the best argument for C++ is just that it has a larger ecosystem (which says more about how old C++ is than how good it is as a language). That argument becomes less convincing with each passing day. IMO in 2022 there’s not a good reason to start a new project in C++ unless that’s all you know, or you have some constraint tied to C++.
- jnash 4y ago99.999% of C++ developers either don't care about Rust or has never heard of it. There are 5 million+ C++ developers out there. And the number is going up.
- bayindirh 5y ago> IMO in 2022 there’s not a good reason to start a new project in C++ unless that’s all you know, or you have some constraint tied to C++. I personally don't agree. I can start with performance and continue with a better compiler ecosystem, and add suitability for low resource applications. I'm just not scratching the surface here. Rust is not bad, but it's not a replacement of C++. They aspire to be different things.
- deleted 5y ago[deleted]
- qubex 5y agoI’m delighted they mentioned TAOS and (following through) the amazing Transputer architecture of the 1980s. Being a teen ‘interested’ in computers in the early 1990s I was fascinated by massively parallel architectures (Connection Machine 1/2 and Connection Machine 5, IBM’s SP/2 “scalable parallel” RS/6000 based machines, and the Transputer concept) and I’m still figuring out whether GPUs are true embodiments of that concept or not.
- yvdriess 5y agoThe Tilera [1] processors were a recent embodiment of the Transputer. (comedy option: the TIS-100 [2]) Modern GPU architectures are very much their own thing. They have more in common with Vector machines in how the ALUs are organized, but the macro control flow is more like Dataflow architectures. [1] https://en.wikipedia.org/wiki/TILEPro64 https://en.wikipedia.org/wiki/TILEPro64 [2] https://en.wikipedia.org/wiki/TIS-100 https://en.wikipedia.org/wiki/TIS-100
- mst 5y agoTIS-100 is my current favourite puzzle game and the plethora of implementations on github plus the various community resources (including a rather good subrediit) make it even more fun. If it sounds interesting, I recommend https://alandesmet.github.io/TIS-100-Hackers-Guide/ https://alandesmet.github.io/TIS-100-Hackers-Guide/ as a starting point.
- dfox 5y agoMassively parallel was just an marketing buzzword that was used for a lot of different things. One thing to look for is wether all the compute elements run from same clock or not. CM1/2 is SIMD machine that is mostly nothing more than FPGA turned inside out and in fact just an accelerator that cannot do anything useful standalone (control flow is mostly done in software on the frontend machine). In this regard it is somewhat similar to today's GPUs. SP/2 is more or less equivalent of the "Beowulf clusters" of the turn of certury and Slashdot fame, that is bunch of computers with full OS instances connected together with some reasonably fast network. But done few years before on somewhat specialized IBM hardware (And well, Myrinet of the early large Linux based clusters was kind of funky specialized hardware, with these 18pair Cat5 cables...). CM5 is weird as it is cluster of more or less off the shelf SPARC nodes with several independent communications networks with one of the networks being capable of doing bunch of "collective communications" (reduce, broadcast...) operations in hardware. As with CM1/2 it does not run any kind of OS and is mostly managed by some set of frontend computers than do the job setup and network configuration for each new job. And then transputer is not an concept, there was real hardware and solar system is full of things that are directly descended from that hardware. The issue with transputers as an HPC platform (even for the early 90's) is that the nodes are too small, slow and have too slow interconnect to be meaningfully usable as general purpose HPC platform because you end up using significant fraction of the potential performance for housekeeping tasks (notice that above mentioned CM1/2/5 has some out of band method for the frontend to manage the nodes and even directly access their local memory, on transputers this had to be done through the main communication network and supported by software running on the nodes themselves, which makes even booting the thing an interesting excercise in parallel programming).
- stevefan1999 5y agoBeOS/Haiku and Redox comes to mind
- paride5745 5y agoBeOS and Haiku are mentioned in the article.
- sullyj3 5y agoRedox too
- deleted 5y ago[deleted]
- weare138 5y agoThis article misses a ton. In addition to all the ones mentioned already what about all the early operating systems written in assembly like Apple DOS or Commodore DOS and the Pascal family of OSs like Mac OS Classic and Toro Kernel.
- em3rgent0rdr 5y agoand MS-DOS [1] and BareMetal [2]. [1] https://web.archive.org/web/20170506152047/http://www.patersontech.com/dos/byte%E2%80%93inside-look.aspx https://web.archive.org/web/20170506152047/http://www.paters... [2] https://github.com/ReturnInfinity/BareMetal https://github.com/ReturnInfinity/BareMetal
- lproven 5y agoI specifically said, in the article: > This is not intended to be a comprehensive list. And that is because: > There are too many such efforts to count And that I was: > intentionally excluding early OSes that were partly or wholly written in assembly language.
- Decabytes 5y agoIt would be fun to try and make a scheme based Kernel/OS. My reasoning is that older revised reports document a much smaller Scheme language than r6rs and r7rs so would be easier to implement in asm. Then once you have a working Scheme you can build on top of it
- wglb 5y agoAnd start bootstrapping with sector lisp https://justine.lol/sectorlisp/ https://justine.lol/sectorlisp/
- namdnay 5y agoI wouldn't say Symbian was C++ - I remember it being a sort of intermediate step between C and C++. There were no exceptions, no STL, and many other weird quirks
- t43562 5y agoC is still C without libc and python is still python even if you can't "import os, sys" so why does lack of the STL matter to C++ ? Symbian used a standard C++ compiler and mandated a certain style of programming because C++ with STL and exceptions wasn't actually safe on small machines with limited memory. No exceptions were allowed in the kernel IIRC and new had to return an error code rather than throw an exception because handling an out of memory exception required....spare memory.
- pjmlp 5y agoThis is a common argument of the anti-C++ crowd when defending C, it is either 100% of all C++ features or it doesn't count. Yet, the fact that most kernels cannot do ISO C gets cleverly forgotten.
- namdnay 4y agoI agree that the STL isn’t a core part of C++, but exceptions clearly are - can you call it C++ if you can’t use all the features of C++ ?
- t43562 4y agoYou can use them for sure - the compiler still supports them - but nasty stuff will happen if you do it in the Symbian kernel. Presumably there are things you don't want to do in C in the kernel - like using heap memory allocation in certain situations or calling printf() or something like that.
- mal10c 5y agoThis took me down memory lane but in a weird way. One of the first languages I really took to was vb6. I was absolutely convinced I could write an OS with that language... I tried and tried - really not knowing what I was doing and finally realized its limitations. Such a good lesson on using the right tool for the job.
- ChuckMcM 5y agoAnd Smalltalk. But this was a great article which highlighted some of the creativity that got me interested in computers in the first place. Building an operating system isn't "hard" but it is a lot of work the more you do. That is time consuming (but in a fun way, like reading books is time consuming) Off and on I've experimented with a small event driven real time OS for my robots that started as a Forth kernel, switched over to a C kernel, and then to a Rust kernel. The experimental part has been looking at "infinite asynchronous threading" and it was hugely influenced by Rodney Brook's subsumption architecture. My thesis being that organisms aren't driven by a single scheduler and a bunch of processes, why should an OS be. (there are arguments pro and con on that one :-)). Anyway, not everyone is an 'OS' type. At Sun we used to joke you were either an 'OS' type, 'Language' type, or a 'GUI' type. Those were the core areas of investigation in the software organization. I tend to be an 'OS' type with a bit of 'language' thrown in :-)
- MaxLeiter 5y agoI’ve been on a Smalltalk binge the last few days and have really been enjoying this two hour long interview / demo with Dan Ingalls on Smalltalk and the Alto: https://youtu.be/uknEhXyZgsg https://youtu.be/uknEhXyZgsg
- kragen 5y agoWhat's "infinite asynchronous threading"?
- jazzyjackson 5y ago> organisms aren't driven by a single scheduler and a bunch of processes, why should an OS be Sounds like neuromorphic computing, or clockless circuits in general. Really interesting stuff, I'm working on a programming language based on macro-expansion and dependency resolution with a scheduling model of "do everything as soon as you can, and not a moment sooner!" Have you happened upon Andy Clark's book, Being There -- Putting Brain, Body, and World Together Again ? It was very influential to me in how to think of computers as organisms that can process parallel stimulus.
- 5y ago
- ok123456 5y agoVery big omission of TempleOS. It was written in HolyC.
- silisili 5y agoTempleOS and HolyC excited me way more than it should have. The fact that a single person wrote not only the OS, but the language, games, and applications blew me away. Few people have that kind of persistence.
- anta40 5y agoWriting an fully working OS is one thing. Writing an compiler is another thing. Writing an OS that is compilable with that compiler (and also able to run that compiler) is ANOTHER thing. Terry Davis was a mad genius.
- lproven 5y agoNot really, since the title of the article expressly says that it's about OSes not written in C. Even weird C.
- hulitu 5y agoAs far as i know MS windows was written in C++. DomainOS (Aegis) was written in Pascal.
- dmtroyer 5y agoclick-bait title for programmers if I ever saw one.
- lproven 5y agoThat was part of the idea, yes. :-D Also note that it was a loose follow-on to: https://www.theregister.com/2022/03/23/c_not_a_language/ https://www.theregister.com/2022/03/23/c_not_a_language/
- Koshkin 5y ago> Wirth a go They should rename Oberon to Wirth.
- wrycoder 5y ago“You can call me by name, or you can call me by value.”
- p_l 5y agoPorting a mention from the other submission of this article: It misses the big name of Multics, written in PL/I, and direct inspiration (both positive and negative) for Unix
- lproven 5y agoYes it does. I had reasons. I'm not saying that they're great reasons, but... * because it's not obscure * because I don't know much about it * because once you open the can of worms labelled "PL/?" then it sort of explodes in your face, with fun aspects touched on in other comments, such as there being at least 2 different languages called PL/M, but PL/I and PL/1 are the same, and... It's complicated, and I don't know enough about it... yet.
- p_l 5y agoFortunately Multics is one of the easier ones to learn about from that list :) Thanks to <http://multicians.org http://multicians.org> (which gathers information about Multics including source code) and <http://ban.ai http://ban.ai> (public access Multics system)
- OnlyMortal 5y agoI remember the original MacOS been a mix of 68K and Pascal. I tended to use MPW C and 68K in those days and recall the stack sizes been different between C and Pascal.
- lproven 5y agoYes it was, but large parts were assembler, and I therefore excluded it for the reasons given in the last paragraph of the article.
- astrange 5y agoI think it should count since it didn't provide the C stdlib and so wasn't "really" in C even when it was. There was no printf or malloc, instead lots of MoreMasters().
- lproven 5y agoHey, look, FWIW, I welcome more info in this area and if you want to go write your own article or blog post covering the systems that I omitted and you feel I should have included, please do! I'd love to read something like that, and if there's a future installment in this (very loose) series, which I hope there will be, then I will mention and link to your work. As I said, though, in this version, I intentionally omitted OSes partly or largely written in assembler. I also didn't cover a load of OSes written in either very obscure languages, properietary languages, dead languages, and also languages and OSes I just don't know anything much about. As I've said elsewhere in these comments: if I tried to cover everything in equally, it wouldn't be an article, it would be a book. And while I'd quite like to write that book, it's be a very niche one that would sell about a dozen copies.
- pyinstallwoes 5y agoDSP is a language and operating system (forth-like) made in the Soviet Union. I believe it was originally crafted upon ternary computation hardware but eventually transitioned to whatever was being used throughout the Union. http://www.euroforth.org/ef00/lyakina00.pdf http://www.euroforth.org/ef00/lyakina00.pdf Apparently they came to the syntax independently of Forth. However my research shows that some material about Forth may have showed up in a journal around the same time DSP was made. Either way the resemblance is uncanny. There is an interesting quote about the interface of the design requirements that manifested as the language: “DSP wasn’t invented, it was discovered” - I probably butchered it. But I’m pretty sure Chuck may have said it too or at least agrees. The point is, you reach this interface following a method of reaching for something akin to “irreducible computational language that makes sense between humans and machines.”
- jnxx 5y agoI think Modula-2 was also quite influential in one of the main programming languages for modern industrial PLCs, called Structured Text. One of its features are lightning fast compile times compared to C++.
- butlerm 5y ago> C fans tend to regard BCPL as an unimportant transitional step, but it was used in two celebrated OSes. One was the TRIPOS operating system, later used as the original basis of AmigaOS. The latter is a bit of an exaggeration. Tripos related code written in BCPL was used for "AmigaDOS" - meaning the filesystem driver, the command line shell, a few bits of process control, and a variety of generic command line utilities. It was not used for the kernel (Exec), or graphics support, or the gui library (Intuition), or the graphical shell (Workbench), or lower level device drivers, which were all written in C or 68K assembly. The Tripos derived parts were nice though, generally nicer than the MSDOS equivalent and somewhat friendlier than the Unix command line, if the filesystem was a little slow, comparatively speaking.
- lproven 5y agoI know. Almost every mention in the article is to some degree an oversimplification, though. It was either that or write a book. Re Tripos: see this thread of comment... https://twitter.com/Resuna/status/1509569315892346890 https://twitter.com/Resuna/status/1509569315892346890 You may also enjoy this earlier piece: https://www.theregister.com/2021/12/06/heliosng/ https://www.theregister.com/2021/12/06/heliosng/
- abnercoimbre 5y agoWe asked Walter Bright at Handmade Seattle [0] what he thinks of a future with non-C ABIs. He makes the case we must all accept: C is deeply entrenched and all-encompassing. That's not to discourage creative efforts -- it's more like "be aware this is 10x bigger than Mt. Everest" [0] https://vimeo.com/652821195#t=10m52s https://vimeo.com/652821195#t=10m52s
- bombcar 5y agoLikely C will be supplanted by something that isn’t even trying to supplant it.
- abnercoimbre 5y agoIt's funny that's usually how it goes.
- imtringued 5y agoRPC via Flatbuffers or Cap'n proto? Those aren't aiming at replacing C ABIs but they could.
- Ericson2314 5y ago> There are still stranger things out there, such as House, implemented in the purely functional Haskell. Yay, shout-out to a deep cut that once had me very excited :).
- spindle 5y agoCDC mainframes and minis in the late 1980s (some or all of them) had a lovely OS written in Algol 68. I don't remember what it was called.
- nix23 5y agoNOS? https://en.wikipedia.org/wiki/NOS_(software) https://en.wikipedia.org/wiki/NOS_(software) http://www.nostalgiccomputing.org/index.html http://www.nostalgiccomputing.org/index.html
- spindle 4y agoThank you! You jogged my memory. It was NOS/VE - https://en.wikipedia.org/wiki/NOS/VE https://en.wikipedia.org/wiki/NOS/VE - and I see no mention of it being written in Algol68, but it used Algol68 semantics for some things (at least).
- mmphosis 5y agoWritten in Zig. https://boksos.com/ https://boksos.com/ https://github.com/AndreaOrru/zen https://github.com/AndreaOrru/zen https://news.ycombinator.com/item?id=21967668 https://news.ycombinator.com/item?id=21967668
- ngcc_hk 5y agoStrange and I think other expressed it : - IBM PC and apple pc are assembler if not basic - So is the Ibm 360 which even to this day you have to use assembler macro etc - mac is Pascal. And one can say Mac OS is on c but objective c is not just c. It is c based but really not c all the way down. - many embedded system … Outside this … Application wise … - Java and even javascript is not c, so is html and css plus well cobol and fortran ! In fact one can do a lot without touching let alone learning c in his /her professional jobs. I suspect if just know c … cf just know x where x = ? Would be an interesting question.