Este artículo necesita citas adicionales para su verificación . ( octubre de 2013 ) |
Paradigma | Concurrente |
---|---|
Diseñado por | Sean Dorward, Phil Winterbottom y Rob Pike |
Revelador | Laboratorios Bell / Vita Nuova Holdings |
Apareció por primera vez | 1995 ( 1995 ) |
Disciplina de mecanografía | Fuerte |
Sistema operativo | Infierno |
Licencia | GNU GPL v2, consulte AVISO en la subcarpeta limbo del archivo tar |
Sitio web | www.vitanuova.com/inferno/limbo.html |
Implementaciones principales | |
Esta máquina virtual | |
Influenciado por | |
C , Pascal , CSP , Alef , Newsqueak | |
Influenciado | |
Python , Go y Rust sin pila |
Limbo es un lenguaje de programación para escribir sistemas distribuidos y es el lenguaje utilizado para escribir aplicaciones para el sistema operativo Inferno . Fue diseñado en Bell Labs por Sean Dorward, Phil Winterbottom y Rob Pike . [1]
El compilador Limbo genera código objeto independiente de la arquitectura que luego es interpretado por la máquina virtual Dis o compilado justo antes del tiempo de ejecución para mejorar el rendimiento. Por lo tanto, todas las aplicaciones Limbo son completamente portables en todas las plataformas Inferno.
El enfoque de Limbo hacia la concurrencia se inspiró en los procesos secuenciales de comunicación (CSP) de Hoare , tal como se implementaron y modificaron en el lenguaje anterior Newsqueak de Pike y en el Alef de Winterbottom .
Limbo admite las siguientes funciones:
La máquina virtual Dis que ejecuta el código Limbo es una VM similar a CISC, con instrucciones para aritmética, flujo de control , movimiento de datos, creación de procesos , sincronización y comunicación entre procesos, carga de módulos de código y soporte para tipos de datos de nivel superior: cadenas, matrices, listas y canales de comunicación. [2] Utiliza un híbrido de conteo de referencias y un recolector de basura en tiempo real para datos cíclicos. [3]
Algunos aspectos del diseño de Dis se inspiraron en el microprocesador AT&T Hobbit , utilizado en el BeBox original .
Limbo utiliza definiciones de estilo Ada como en:
nombre := tipo valor ; nombre0 , nombre1 : tipo = valor ; nombre2 , nombre3 : tipo ; nombre2 = valor ;
implementar comando ; incluir "sys.m" ; sys : Sys ; incluye "draw.m" ; incluye "sh.m" ; init ( nil : ref Draw -> Context , nil : lista de cadenas ) { sys = load Sys Sys -> PATH ; sys -> print ( "Hola mundo! \n " ); }
La tercera edición del sistema operativo Inferno y el lenguaje de programación Limbo se describen en el libro de texto Inferno Programming with Limbo ISBN 0-470-84352-7 (Chichester: John Wiley & Sons, 2003), de Phillip Stanley-Marbell. Otro libro de texto, The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System , de Martin Atkins, Charles Forsyth, Rob Pike y Howard Trickey, se inició, pero nunca se publicó.