Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Limbo (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language}} {{Other uses|Limbo (disambiguation)}} {{more citations needed|date=October 2013}} {{Infobox programming language |name = Limbo |logo = |paradigm = [[Concurrent computing|Concurrent]] |year = {{Start date and age|1995}} |designer = Sean Dorward, Phil Winterbottom, [[Rob Pike]] |developer = [[Bell Labs]] / [[Vita Nuova Holdings]] |discontinued = <!-- Set to yes if software is discontinued, otherwise omit. --> |ver layout = <!-- simple (default) or stacked --> |latest_release_version = |latest_release_date = |typing = [[Strongly-typed programming language|Strong]] |implementations = Dis virtual machine |dialects = |influenced_by = [[C (programming language)|C]], [[Pascal (programming language)|Pascal]], [[Communicating sequential processes|CSP]], [[Alef (programming language)|Alef]], [[Newsqueak]] |influenced = [[Stackless Python]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]] |operating_system = [[Inferno (operating system)|Inferno]] |license = [[GNU GPL]] v2, see NOTICE in limbo subfolder of the tarball |website = {{URL|http://www.vitanuova.com/inferno/limbo.html}} }} '''Limbo''' is a [[programming language]] for writing distributed systems and is the language used to write [[Application software|applications]] for the [[Inferno (operating system)|Inferno operating system]]. It was designed at [[Bell Labs]] by [[Sean Dorward]], [[Phil Winterbottom]], and [[Rob Pike]].<ref>{{cite web |url=http://www.vitanuova.com/inferno/limbo.html |title=Inferno Application Programming |website= vitanuova |publisher= vitanuova |access-date=January 26, 2021}}</ref> The Limbo [[compiler]] generates [[Computer architecture|architecture]]-independent [[object code]] 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 [[C. A. R. Hoare|Hoare]]'s [[communicating sequential processes]] (CSP), as implemented and amended in Pike's earlier [[Newsqueak]] language and Winterbottom's [[Alef (programming language)|Alef]]. ==Language features== Limbo supports the following features: * [[Modularity (programming)|modular programming]] * [[concurrent programming]] * strong [[type checking]] at compile and run-time * [[interprocess communication]] over typed [[channel (programming)|channel]]s * automatic [[garbage collection (computer science)|garbage collection]] * simple [[abstract data type]]s ==Virtual machine== The Dis virtual machine that executes Limbo code is a CISC-like VM, with instructions for arithmetic, [[control flow]], [[data motion]], [[process (computing)|process]] creation, synchronizing and communicating between processes, loading modules of code, and support for higher-level data-types: strings, arrays, lists, and communication channels.<ref>{{Cite web |date=2000 | url=https://web.archive.org/web/20250220003220/https://www.vitanuova.com/inferno/papers/dis.html |title=Dis Virtual Machine Specification |access-date=2 February 2015 |publisher=Vita Nuova}}</ref> It uses a hybrid of [[reference counting]] and a [[real-time computing|real-time]] [[garbage collection (computer science)|garbage-collector]] for cyclic data.<ref name="gc">{{cite journal | url = http://doc.cat-v.org/inferno/concurrent_gc/concurrent_gc.pdf | title = Very Concurrent Mark and Sweep Garbage Collection without Fine-Grain Synchronization | author = Lorenz Huelsbergen and Phil Winterbottom | year= 1998 | journal=1998 International Symposium on Memory Management}}</ref> Aspects of the design of Dis were inspired by the [[AT&T Hobbit]] microprocessor, as used in the original [[BeBox]]. ==Examples== Limbo uses [[Ada (programming language)|Ada]]-style definitions as in: <syntaxhighlight lang="limbo"> name := type value; name0,name1 : type = value; name2,name3 : type; name2 = value; </syntaxhighlight> === Hello world === <syntaxhighlight lang="limbo"> implement Command; include "sys.m"; sys: Sys; include "draw.m"; include "sh.m"; init(nil: ref Draw->Context, nil: list of string) { sys = load Sys Sys->PATH; sys->print("Hello World!\n"); } </syntaxhighlight> == Books == The 3rd edition of the Inferno operating system and Limbo programming language are described in the textbook ''Inferno Programming with Limbo'' {{ISBN|0-470-84352-7}} (Chichester: John Wiley & Sons, 2003), by [[Phillip Stanley-Marbell]]. Another textbook ''The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System'', by Martin Atkins, Charles Forsyth, [[Rob Pike]] and Howard Trickey, was started, but never released. == See also == {{Portal|Free and open-source software}} * The [[Inferno (operating system)|Inferno]] operating system * [[Alef (programming language)|Alef]], the predecessor of Limbo * [[Plan 9 from Bell Labs]], operating system * [[Go (programming language)|Go]], similar language from Google * [[AT&T Hobbit]], a processor architecture which inspired the Dis VM ==References== {{Reflist}} ==External links== * [http://www.vitanuova.com/inferno/limbo.html Vita Nuova page on Limbo] * [http://doc.cat-v.org/inferno/4th_edition/limbo_language/descent A Descent into Limbo] by [[Brian Kernighan]] * [http://doc.cat-v.org/inferno/4th_edition/limbo_language/limbo The Limbo Programming Language] by [[Dennis M. Ritchie]] and [http://doc.cat-v.org/inferno/4th_edition/limbo_language/addendum Addendum] by Vita Nuova. * [https://web.archive.org/web/20081011054044/http://www.gemusehaken.org/ipwl/ Inferno Programming with Limbo] by [[Phillip Stanley-Marbell]] * [http://swtch.com/~rsc/thread/ Threaded programming in the Bell Labs CSP style] * {{Citation | url = https://bitbucket.org/inferno-os/inferno-os/src/62ae0f75aa714c7bab5e714fcf90f4026b7ba911/limbo/?at=default | title = Dis source code | access-date = 2017-09-20 | archive-date = 2017-09-21 | archive-url = https://web.archive.org/web/20170921095053/https://bitbucket.org/inferno-os/inferno-os/src/62ae0f75aa714c7bab5e714fcf90f4026b7ba911/limbo/?at=default | url-status = dead }} * {{Citation | url = https://web.archive.org/web/20250211084729/https://www.vitanuova.com/inferno/papers/hotchips.html | title = The design of the Inferno virtual machine | publisher = Vita nuova}}. * {{Citation | publisher = Cat V | title = Inferno | edition = 4th | contribution = Dis VM design | url = http://doc.cat-v.org/inferno/4th_edition/dis_VM_design}}. * {{Citation | publisher = Cat V | title = Inferno | edition = 4th | contribution = Dis VM specification | url = http://doc.cat-v.org/inferno/4th_edition/dis_VM_specification}}. {{Rob Pike navbox}} {{Authority control}} {{DEFAULTSORT:Limbo (Programming Language)}} [[Category:Concurrent programming languages]] [[Category:Free and open source compilers]] [[Category:Inferno (operating system)]] [[Category:Programming languages created in 1995]] [[Category:Virtual machines]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:ISBN
(
edit
)
Template:Infobox programming language
(
edit
)
Template:More citations needed
(
edit
)
Template:Other uses
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Rob Pike navbox
(
edit
)
Template:Short description
(
edit
)