The Limbo Programming Language
Dennis M. Ritchie, Vita Nuova · 2005
Limbo is a programming language intended for applications running distributed systems on small computers. It supports modular programming, strong type checking at compile and run time, interprocess communication over typed channels, automatic garbage collection, and simple abstract data types. It is designed for safe execution even on small machines without hardware memory protection. In its implementation for the Inferno operating system, object programs generated by the Limbo compiler run using an interpreter for a fixed virtual machine. Inferno and its accompany ing virtual machine run either standalone on bare hardware or as an application under conven tional operating systems like Unix, Windows 2000, Linux, FreeBSD, MacOSX, and Plan 9. For most architectures, including Intel x86, ARM, PowerPC, MIPS and Sparc, Limbo object programs are transformed onthefly into instructions for the underlying hardware. 1. Overview and introduction A Limbo application consists of one or more modules, each of which supplies an interface decla ration and an implementation part. A module that uses another module includes its declaration part. During execution, a module dynamically attaches another module by stating the other module's type identifier and a place from which to load the object code for its implementation. A module declaration specifies the functions and data it will make visible, its data types, and constants. Its implementation part defines the functions and data visible at its interface and any functions associated with its data types; it may also contain definitions for functions used only internally and for data local to the module. Here is a simple module to illustrate the flavour of the language. 1 implement Command;