Inferno Software

Charles Forsyth
Vita Nuova Limited
York


Shortly after the first version of this page appeared, I started Vita Nuova to do distributed system work with Inferno and Plan 9. Consequently most of my software in Limbo has appeared or will appear in the Inferno distribution. For instance, a later variant of the Timers module below is now part of the system.

Inferno is a network operating system. Unlike most operating systems, as well as running native (controlling a device itself, exclusively), Inferno can run as an application under other operating systems such as Plan 9 (of course), Windows/9x, Windows/Nt, Windows/2000, Linux, FreeBSD, Solaris, Irix and others, presenting on all of them the same interface to its own clients, thus virtualising not only the operating system but also the network. It is intended for writing both embedded and distributed applications. The examples here are written in Limbo, Inferno's modular, concurrent programming language.

The collection is limited to little fragments. For more interesting examples, see the links at the Inferno source repository on Googlecode, particularly the Inferno Programmer's Notebook (a collection of worked examples), and also Vita Nuova's Inferno links.

gif2bit.b
Converts a GIF image to an Inferno Image file
Usage: gif2bit [-e] <in.gif >out.bit
The -e option causes error diffusion.

simdev.b
Helps to simulate an Inferno native device under a host OS
Usage: simdev [-abr] devname mountdir cmd ...
devname appears in mountdir and cmd's data file is read and written in response to read and writes on devname

easter.b
Calculate the date of Easter
Usage: easter [year]
A Limbo version of a program in the Informal Introduction to Algol68

timers.b
Timer support
A Limbo module to provide Timers for use by a protocol driver (appearing here shortly).
Although the implementation is straightforward, I did a partial Spin model for practice (and in the process discovered unreachable states that led to my simplifying timers.b).