Limbo is a
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
for writing distributed systems and is the language used to write
applications
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
for the
Inferno operating system. It was designed at
Bell Labs
Nokia Bell Labs, originally named Bell Telephone Laboratories (1925–1984),
then AT&T Bell Laboratories (1984–1996)
and Bell Labs Innovations (1996–2007),
is an American industrial research and scientific development company owned by mult ...
by
Sean Dorward
Sean, also spelled Seán or Séan in Irish English, is a male given name of Irish origin. It comes from the Irish versions of the Biblical Hebrew name ''Yohanan'' (), Seán (anglicized as ''Shaun/Shawn/ Shon'') and Séan (Ulster variant; angliciz ...
,
Phil Winterbottom
Phil may refer to:
* Phil (given name), a shortened version of masculine and feminine names
* Phill, a given name also spelled "Phil"
* Phil, Kentucky, United States
* ''Phil'' (film), a 2019 film
* -phil-, a lexical fragment, used as a root term ...
, and
Rob Pike
Robert "Rob" Pike (born 1956) is a Canadian programmer and author. He is best known for his work on the Go programming language and at Bell Labs, where he was a member of the Unix team and was involved in the creation of the Plan 9 from Bell Labs ...
.
The Limbo
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
generates
architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing buildings ...
-independent
object code
In computing, object code or object module is the product of a compiler.
In a general sense object code is a sequence of statements or instructions in a computer language, usually a machine code language (i.e., binary) or an intermediate lang ...
which is then interpreted by the
Dis virtual machine or compiled just before runtime to improve performance. Therefore all Limbo applications are completely portable across all Inferno platforms.
Limbo's approach to concurrency was inspired by
Hoare's
communicating sequential processes
In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or ...
(CSP), as implemented and amended in Pike's earlier
Newsqueak language and Winterbottom's
Alef.
Language features
Limbo supports the following features:
*
modular programming
Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functio ...
*
concurrent programming
* strong
type checking at compile and run-time
*
interprocess communication
In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow the processes to manage shared data. Typically, applications can use IPC, categoriz ...
over typed
channels
* automatic
garbage collection
* simple
abstract data type
In computer science, an abstract data type (ADT) is a mathematical model for data types. An abstract data type is defined by its behavior (semantics) from the point of view of a '' user'', of the data, specifically in terms of possible values, po ...
s
Virtual machine
The Dis virtual machine that executes Limbo code is a CISC-like VM, with instructions for arithmetic,
control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...
,
data motion
In the pursuit of knowledge, data (; ) is a collection of discrete values that convey information, describing quantity, quality, fact, statistics, other basic units of meaning, or simply sequences of symbols that may be further interpreted ...
,
process
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
*Business process, activities that produce a specific se ...
creation, synchronizing and communicating between processes, loading modules of code, and support for higher-level data-types: strings, arrays, lists, and communication channels.
It uses a hybrid of
reference counting
In computer science, reference counting is a programming technique of storing the number of references, pointers, or handles to a resource, such as an object, a block of memory, disk space, and others.
In garbage collection algorithms, refer ...
and a
real-time garbage-collector for cyclic data.
Aspects of the design of Dis were inspired by the
AT&T Hobbit microprocessor, as used in the original
BeBox.
Examples
Limbo uses
Ada-style definitions as in:
name := type value;
name0,name1 : type = value;
name2,name3 : type;
name2 = value;
Hello world
implement Command;
include "sys.m";
sys: Sys;
include "draw.m";
include "sh.m";
init(nil: ref Draw->Context, nil: list of string)
Books
The 3rd edition of the Inferno operating system and Limbo programming language are described in the textbook ''Inferno Programming with Limbo'' (Chichester: John Wiley & Sons, 2003), by
Phillip Stanley-Marbell
Philip, also Phillip, is a male given name, derived from the Greek (''Philippos'', lit. "horse-loving" or "fond of horses"), from a compound of (''philos'', "dear", "loved", "loving") and (''hippos'', "horse"). Prominent Philips who popularize ...
. Another textbook ''The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System'', by Martin Atkins, Charles Forsyth,
Rob Pike
Robert "Rob" Pike (born 1956) is a Canadian programmer and author. He is best known for his work on the Go programming language and at Bell Labs, where he was a member of the Unix team and was involved in the creation of the Plan 9 from Bell Labs ...
and Howard Trickey, was started, but never released.
See also
* The
Inferno operating system
*
Alef, the predecessor of Limbo
*
Plan 9 from Bell Labs
Plan 9 from Bell Labs is a distributed operating system which originated from the Computing Science Research Center (CSRC) at Bell Labs in the mid-1980s and built on UNIX concepts first developed there in the late 1960s. Since 2000, Plan 9 has b ...
*
Go (programming language)
Go is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. It is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style ...
, similar language from Google
*
AT&T Hobbit, a processor architecture which inspired the Dis VM
References
External links
Vita Nuova page on LimboA Descent into Limboby
Brian Kernighan
Brian Wilson Kernighan (; born 1942) is a Canadian computer scientist.
He worked at Bell Labs and contributed to the development of Unix alongside Unix creators Ken Thompson and Dennis Ritchie. Kernighan's name became widely known through co ...
The Limbo Programming Languageby
Dennis M. Ritchie
Dennis MacAlistair Ritchie (September 9, 1941 – October 12, 2011) was an American computer scientist. He is most well-known for creating the C programming language and, with long-time colleague Ken Thompson, the Unix operating system and B ...
an
Addendumby Vita Nuova.
Inferno Programming with Limboby
Phillip Stanley-Marbell
Philip, also Phillip, is a male given name, derived from the Greek (''Philippos'', lit. "horse-loving" or "fond of horses"), from a compound of (''philos'', "dear", "loved", "loving") and (''hippos'', "horse"). Prominent Philips who popularize ...
Threaded programming in the Bell Labs CSP style*
* .
* .
* .
{{DEFAULTSORT:Limbo (Programming Language)
C programming language family
Concurrent programming languages
Free compilers and interpreters
Inferno (operating system)
Virtual machines