Limbo — язык программирования для написания распределенных систем и язык, используемый для написания приложений для операционной системы Inferno . Его разработали в Bell Labs Шон Дорвард, Фил Уинтерботтом и Роб Пайк . [1]
Компилятор Limbo генерирует независимый от архитектуры объектный код , который затем интерпретируется виртуальной машиной Dis или компилируется непосредственно перед выполнением для повышения производительности. Поэтому все приложения Limbo полностью переносимы на все платформы Inferno.
Подход Limbo к параллелизму был вдохновлен коммуникационными последовательными процессами (CSP) Хоара , реализованными и измененными в более раннем языке Пайка Newsqueak и Alef Уинтерботтома .
Limbo поддерживает следующие функции:
Виртуальная машина Dis, выполняющая код Limbo, представляет собой CISC-подобную виртуальную машину с инструкциями для арифметики, потока управления , перемещения данных, создания процессов , синхронизации и взаимодействия между процессами, загрузки модулей кода и поддержки типов данных более высокого уровня: строки, массивы, списки и каналы связи. [2] Он использует гибрид подсчета ссылок и сборщика мусора в реальном времени для циклических данных. [3]
Некоторые аспекты дизайна Dis были вдохновлены микропроцессором AT&T Hobbit , который использовался в оригинальном BeBox .
Limbo использует определения в стиле Ada , например:
имя := значение типа ; имя0 , имя1 : тип = значение ; имя2 , имя3 : тип ; имя2 = значение ;
реализовать команду ; включить «sys.m» ; сис : Сис ; включить "draw.m" ; включить «ш.м» ; init ( nil : ref Draw - > Context , nil : список строк ) { sys = load Sys Sys -> PATH ; sys -> print ( «Привет, мир! \n » ); }
Третье издание операционной системы Inferno и языка программирования Limbo описаны в учебнике Филлипа Стэнли-Марбелла «Программирование Inferno с Limbo ISBN 0-470-84352-7» (Чичестер: John Wiley & Sons, 2003). Еще один учебник Мартина Аткинса, Чарльза Форсайта, Роба Пайка и Говарда Трики « The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System» был начат, но так и не выпущен.