Регистрация | Войти
Lisp — программируемый язык программирования

Сравнение GNU CLISP и SBCL

Автор: Иван Болдырев
Источник: http://lispnik.livejournal.com/156229.html

Самое главное различие состоит в том, что CLISP — интерпретатор байткода, а SBCL — настоящий компилятор (даже то, что вводится пользоватем с консоли, сначала компилируется; в CMU CL, от которого произошёл SBCL, такой код интепретируется).

В CLISP рантайм написан в основном на C, а компилятор — на Common Lisp. В SBCL на C написана лишь часть рантайма (сборщик мусора и другой низкоуровневый код), незначительная часть — на ассемблере, но подавляющая часть кода — на Common Lisp.

Однако в некоторых областях CLISP быстрее многих лисп-систем: вычисления с bignum и ввод-вывод (в часности, поэтому Пол Грэхэм выбрал CLISP для ViaWeb).

Кроме того, в CLISP есть большое количество расширений и биндингов к таким библиотекам, как zlib, libprce, FastCGI, gettext. В SBCL расширения тоже есть, но поскромнее. Зато SBCL поддерживается библиотекой UFFI, что автоматически делает доступным немалое количество биндингов, сделаных с помощью этой библиотеки (UFFI не поддерживает CLISP, поскольку Foreign Function Interface у этой реализации сильно отличается от остальных; однако CFFI поддерживает в том числе и CLISP). Обе реализации поддерживают сокеты, POSIX, FFI, но API несовместимы (для совместимости можно использовать дополнительные библиотеки, что заодно даст совместимость с CMUCL/LispWorks/Allegro CL).

GNU CLISP лицензируется по GNU GPL с исключениями, а SBCL — частично Public Domain, частично BSD.

Что касается многопоточности, в SBCL/x86 и SBCL/x86-64 на Linux-2.6.x (или более старым ядром, но с бэкпортом NPTL) поддерживается многопоточность, основанная на нитях POSIX и futex. На *BSD и другие платформы многопоточность ещё не портирована.

В CLISP многопоточности нет.

@2009-2013 lisper.ru