Interested Article - CMU Common Lisp
- 2021-12-19
- 1
CMU Common Lisp ( CMUCL ) — свободная реализация языка программирования Common Lisp для UNIX-подобных ОС, в том числе Linux и FreeBSD, первоначально разработанная в Университете Карнеги-Меллона . Является предком свободной Steel Bank Common Lisp и коммерческой .
История
История системы началась ещё до появления Common Lisp . Первоначально она была частью Spice Lisp, созданного в 1980 году в Университете Карнеги-Меллона для 16-разрядной рабочей станции PERQ, архитектура которой предусматривала поддержку языков высокого уровня путём программирования аппаратного ядра на микрокоде . В 1985 году был создан компилятор «Python» а CMUCL был перенесён на рабочие станции , MIPS и SPARC под управлением UNIX . Ранние выпуски CMUCL не поддерживали Intel x86 из-за несовместимости ядра с данной архитектурой (реализация критически зависела от наличия достаточно большого массива регистров, которого нет в процессорах семейства x86).
После того, как университет отказался от данного проекта в пользу Dylan , для которого были использованы и наработки CMUCL, сопровождение системы было продолжено сообществом.
К 1996 году группой сопровождения был налажен регулярный выпуск обновлений системы, тогда же она была портирована на x86, первоначально для FreeBSD, позже — под Linux. Проблему с архитектурной несовместимостью решили созданием нового сборщика мусора.
На текущий момент система находится в общественном достоянии, её сопровождение продолжается. Последний стабильный релиз (21c) выпущен в октябре 2017 года.
Компилятор и исполняющие модули
CMUCL содержит интерпретатор исходного кода, интерпретатор байт-кода и компилятор.
- Компилятор в машинный код целевой платформы CMUCL имеет имя «Python» (не следует путать с языком программирования Python ). По утверждению авторов, при соответствующем кодировании (написании программы с учётом требований производительности и использовании ряда формально необязательных деклараций) дополнительные накладные расходы при исполнении откомпилированной CMUCL программы практически не превышают таковые для языков типа C++ .
- Интерпретатор предназначен в основном для интерактивной разработки, но может использоваться и просто для быстрой загрузки и исполнения лисповского кода в отсутствие жёстких требований по быстродействию.
- Виртуальная машина для исполнения программ, предварительно преобразованных компилятором в компактный байт-код. В настоящее время эта возможность используется редко, она была популярна на ранних этапах существования системы, так как позволяла быстрее запускать загружаемый через медленное Интернет-соединение код.
Основные возможности
- Эффективная сборка мусора и поддержка многопроцессорности на платформе x86.
- Интерфейс с внешним кодом на Си, возможность прямого обращения к системным библиотекам на большинстве платформ, прямой доступ к системным вызовам в UNIX.
- Поддержка межпроцессного взаимодействия и удалённого вызова процедур.
- Реализация объектной системы CLOS .
- Отладчик с графическим интерфейсом, профайлер.
- Интерфейс с X11 Window System (CLX) с собственной библиотекой графических виджетов (Garnet).
- Программно-расширяемые потоки ввода/вывода.
- Текстовый редактор Hemlock (типа Emacs ), написанный на Common Lisp.
Примечания
Ссылки
- (англ.)
- 2021-12-19
- 1