CMU Common Lisp

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
CMU Common Lisp
Тип Компилятор и runtime
Автор Университет Карнеги — Меллон
Разработчик Various
Операционные системы Unix-подобные операционные системы, существует Windows-порт
Первый выпуск 1980
Последняя версия 21d (8 декабря 2018)
Репозиторий gitlab.common-lisp.net/c…
Лицензия Общественное достояние
Сайт cons.org/cmucl/

CMU Common Lisp (CMUCL) — свободная реализация языка программирования Common Lisp для UNIX-подобных ОС, в том числе Linux и FreeBSD, первоначально разработанная в Университете Карнеги-Меллона. Является предком свободной Steel Bank Common Lisp и коммерческой Scieneer Common Lisp.

История системы началась ещё до появления 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.