CMU Common Lisp
CMU Common Lisp (CMUCL) — свободная реализация языка программирования Common Lisp для UNIX-подобных ОС, в том числе Linux и FreeBSD, первоначально разработанная в Университете Карнеги-Меллона. Является предком свободной Steel Bank Common Lisp и коммерческой Scieneer Common Lisp.
CMU Common Lisp | |
---|---|
Тип | Компилятор и runtime |
Автор | Университет Карнеги — Меллон |
Разработчик | Various |
Операционная система | Unix-подобные операционные системы, существует Windows-порт |
Первый выпуск | 1980 |
Последняя версия | |
Лицензия | Общественное достояние |
Сайт | cons.org/cmucl/ |
ИсторияПравить
История системы началась ещё до появления Common Lisp. Первоначально она была частью Spice Lisp, созданного в 1980 году в Университете Карнеги-Меллона для 16-разрядной рабочей станции PERQ, архитектура которой предусматривала поддержку языков высокого уровня путём программирования аппаратного ядра на микрокоде. В 1985 году был создан компилятор «Python» а CMUCL был перенесён на рабочие станции IBM PC RT, 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.
ПримечанияПравить
СсылкиПравить
- Домашняя страница (англ.)