This article is more than 1 year old

GCC 13 to support Modula-2: Follow-up to Pascal lives on in FOSS form

Niklaus Wirth's lesser known programming language still kicking around

Incoming support for Modula-2 in GCC, and a new Gitlab repository for its descendant Oberon, shows that the Wirthian family of programming languages remains livelier than you might think.

Modula-2 is what Pascal inventor Niklaus Wirth did next. Modula-2 is the direct descendant of Pascal, aimed at more modular (the clue's right there in the name), and more parallel, programming. Part of the idea was to make it easier to break programs up into discrete chunks, so that they can be compiled, and run, separately.

In 1976, Wirth spent a sabbatical at Xerox PARC. At that time, this is where the windowing graphical user interface, and the Smalltalk language to program it in, were under active development. Xerox failed to successfully commercialize its work, but it did make a licensing deal with Apple before showing it to some Apple engineers. Apple, of course, very successfully did turn this into shipping products: first the Lisa, and then more lucratively, the Mac.

Xerox's early GUIs and the Star workstation were programmed in a language called Mesa (PDF), which inspired Wirth. When he returned to ETH Zürich, he stopped work on his first Pascal successor Modula, creating Modula-2 by adding support for inter-module communications using a model based on coroutines, as eloquently explained by our very own Verity Stob. (As Verity notes, coroutines are also the model for Go, where they're called goroutines.)

Inspired by the Xerox Alto – but not being able to bring one home with him – Wirth designed his own graphical workstation, the Lilith. Modula-2 enjoyed some success in the 1980s; for a while, Topspeed Modula-2 was the fastest compiler for the PC. Arm chip inventors Acorn used Modula-2 to build a new OS for their new RISC chip, ARX, although the project was supplanted by RISC OS.

Modula-2 is still in use today, for instance in the Russian GLONASS sat-nav system. There has been a GNU Modula-2 for a while, but now that this patch has been merged, Modula-2 will be part of the main toolchain in GCC 13, along with the preliminary support for Rust which recently landed. GCC 13 will support the PIM 2, 3 and 4 and ISO dialects of the language.

Although there was also a Modula-3 language, it wasn't designed by Wirth himself, and is pretty much extinct now, yet it is credited as an influence on the design of Java's original Remote Method Invocation mechanism.

As we mentioned when introducing non-C-based OSes earlier this year, Wirth's successor was Project Oberon. An FPGA emulator for the original Oberon workstation was released in 2015, but sadly isn't available any more. Oberon is both a language and a tiny and highly efficient OS and IDE. It's been called the "overlooked jewel" [PDF – HTTP only] of computer science.

Development of Oberon is still continuing. In its home institution, ETH Zürich, Dr Felix Friedrich is still working on and teaching Oberon, and last week, he published a new Gitlab repository with the latest code. This is the A2 operating system, in the "Active Oberon" dialect, and we suspect it's the smallest, cleanest OS in the world that can handle SMP, TCP/IP and the Web.

Not interested in the OS part, but the language sounds interesting? Try the Windows version, BlackBox Component Buider.

If you prefer Wirth's original, though, the Free Pascal compiler is in active maintenance and use, complete with the rich Lazarus IDE. Both run on Linux, FreeBSD, Windows, and macOS. The language and the IDE are not completely Delphi-compatible yet, but the team are working on it. ®

More about


Send us news

Other stories you might like