The wild world of non-C operating systems

You can't fool me, young man. It's C all the way down!


Believe it or not, not everything is based on C. There are current, shipping, commercial OSes written before C was invented, and now others in both newer and older languages that don't involve C at any level or layer.

Computer hardware is technology yet very few people can design their own processor, or build a graphics card. But software is a form of culture. Open source is created by volunteers, even if they end up getting paid jobs doing it. Even rejecting open source is a choice: paying for Windows or macOS instead reflects a preference.

This is especially visible when it comes to text editors, and even more so about programming languages. People get passionate about this stuff. So statements such as "C isn't a programming language any more" can be upsetting. Most people live and work in the cultures that are Unix and Windows and if they are all you've ever known, or know best, then it's easy to think they are the whole world.

But that doesn't make it true.

The roots of C

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 core system software of the original GUI workstation, the Xerox Alto, was also written in BCPL, although much of it was later rewritten in Mesa. The Alto OS survived into the late 1990s as GlobalView, which Xerox sold as a high-end desktop publishing tool.

Algol and Burroughs

In the 1960s, ALGOL was huge. It's the granddaddy of most modern imperative languages.

Burroughs Corporation designed a series of mainframes, the Burroughs Large Systems, around the pioneering idea of writing the OS and all applications in a high-level language, ALGOL. The first machine, the B5000, was launched in 1961. Burroughs merged with Sperry UNIVAC in 1986 to form Unisys. The Unisys Clearpath MCP OS is a direct descendant of the B5000's MCP or Master Control Program. (Yes, the same name as the big baddie in Tron.)

MCP was the first commercial OS to support virtual memory and shared libraries. Its purely stack-based design inspired Chuck Moore to develop Forth, HP to design the HP3000 mid-range computers, and influenced Alan Kay in the development of Smalltalk at Xerox PARC.

The current version of ClearPath MCP is 20.0, released in May 2021.

Wirth a go

Swiss boffin Niklaus Wirth worked at Xerox PARC for two one-year sabbaticals. Today he's best known for inventing Pascal, which happened to catch on as an applications language – notably as Borland's Delphi. An earlier implementation, the UCSD p-System, was a complete OS – one of the three IBM offered for the original PC in 1981.

Pascal was just one stage in a series of "Wirthian" languages. The successor to Pascal was Modula, but it was quickly superseded by Modula-2, based on Wirth's time working with Mesa on the Alto at Xerox PARC. Modula-2 was specifically designed for OSes as well as apps.

After his first sabbatical in Palo Alto in 1976-1977, once Wirth got back home to ETH Zürich in 1977, he and his team designed and built the Lilith workstation as a cheaper replacement for the $32,000 Alto. Its object-oriented OS, Medos-2, was entirely built in Modula-2.

Meanwhile, in the USSR, a team at the Soviet Academy of Sciences in Novosibirsk, inspired by Wirth's work but limited by COCOM import restrictions, built their own OS called Excelsior in Modula-2, which ran on a series of workstations called Kronos.

Wirth returned to Xerox PARC in 1984-1985, and after that trip, back at ETH he designed the Ceres workstation, with an OS implemented in a new language, Oberon, whose text-based tiling-window interface inspired the successor to Unix, Plan 9 from Bell Labs.

(The influence went both ways. A team at Xerox PARC developed Pascal into the Euclid language, and a variant was even used to develop a Unix-compatible OS called Tunis, the Toronto University System.)

Oberon has been called the "overlooked jewel" [PDF] of computer science. It has multiple descendants today. Wirth came out of retirement in 2013 to help Project Oberon, which runs a modernized version of the OS on modern FPGA-based hardware. Another version, Native Oberon, runs on x86-32 PCs and under QEMU.

If you want to try it without installing, there's also a JavaScript version that runs in your browser. Its UI is efficient but quite strange, because it was designed in the late 1980s and predates almost every other graphical desktop except the original Mac.

Later researchers at ETH built a language called Active Oberon, and using that, a newer OS with a slightly more conventional zooming GUI called "Bluebottle". Originally the new Oberon OS was called AOS, but so are multiple other projects, so now it's called A2.

Scions of C

Most of these systems are relatively obscure, though. C and its descendants and derivatives remain far more mainstream. Even if Linus Torvalds is famously not fond of it, "the world is built on C++." It's not usually thought of as suitable for implementing OS kernels in, but two of the most-loved ever nonetheless were.

The Mac OS X might-have-been BeOS was entirely written in C++, and so is its modern FOSS re-implementation Haiku. It took the Haiku project 17 years to get to its first beta version, but it's now on Beta 3. Unlike its ancestor, these days it has a lot of ported FOSS apps from Linux and even some limited ability to run Windows programs.

The C++ OS that was by far the biggest commercial success was Symbian. Psion built it from scratch in the late 1990s, and for a while it was the dominant smartphone OS. We did an epic three-part feature, "Symbian, The Secret History" (part 2 and part 3) a decade ago.

But Nokia failed to capitalize on it, and Apple's iOS and Android killed it off. It eventually went open source, although not without the odd hitch.

Today, C++ is being used to build the Genode OS Framework. The latest version, release 22.02, came out just last month.

In terms of popularity, depending on which survey you look at, Rust is stalking or eclipsing C++, and there are several projects to build OSes in Rust, notably including the somewhat Minix-like Redox OS, the more experimental Theseus, and the embedded Tock.

Even Microsoft has experimented with Singularity, partly implemented in C# and other .NET-based languages, as is the FOSS COSMOS.

Functionally different

BCPL, C, C++, Rust, and the Pascal family all inherit from the design of ALGOL. All are imperative programming languages. There are other, different schools of language design. One of the oldest and best-loved programming languages around is Lisp, designed by John McCarthy in 1958.

Symbolics, the company which owned the first ever dotcom domain, built an entire OS in Lisp, called Genera. The last version, OpenGenera, ran on an emulator on DEC Alpha workstations, and today you can run it on Linux, but sadly the inheritors of the defunct company won't open-source it.

However, there was also a family of Lisp-based graphical operating systems that ran on Xerox's later Star workstations, written in a dialect called Interlisp. This is now FOSS and being actively modernized.

There are also several modern efforts to build OSes in Lisp, including Mezzano, Interim, and ChrysaLisp, the latter by one of the lead developers of Tao Systems' TAOS.

It would also be unfair not to include Urbit. This is a completely from-scratch effort that has reinvented some very Lisp-like technology, although the project's links to cryptocurrencies, and some of the politics of its founder Curtis Yarvin, make the author wary.

This is not intended to be a comprehensive list. There are too many such efforts to count, and that's even with intentionally excluding early OSes that were partly or wholly written in assembly language. There were several Java-based OSes, including Sun JavaOS and smartphone OS SavaJe. There are still stranger things out there, such as House, implemented in the purely functional Haskell.

This is just an overview, but I hope it makes a point: that OSes do not begin and end with C. If you can name a language that can run on bare metal, someone somewhere has probably tried to implement an OS in it, and some of them have become a lot more successful than you might expect. ®


Other stories you might like

Biting the hand that feeds IT © 1998–2022