← На главную

Clamiga приносит Common Lisp на Amiga с JIT и Quicklisp

13.08.2026 03:05 · hackernews

Clamiga — это реализация Common Lisp для Amiga. Расшифровка названия: CL-Amiga, то есть Common Lisp for the Amiga. Вдобавок amiga по-испански и по-португальски значит «подруга», так что имя двойное. Проект собран для классической AmigaOS 3 на 68k и MorphOS как нативный PPC-билд, AROS и AmigaOS 4 в планах. При этом Clamiga работает и на macOS, и на Linux — на них идёт основная разработка.

Common Lisp — живой язык со стандартом ANSI 1994 года. Обычные реализации вроде SBCL, CCL, ECL, Clasp или LispWorks на Amiga не запускаются: SBCL и CCL привязаны к современным архитектурам, Clasp завязан на LLVM, а CLISP заброшен. Clamiga обходит это через самодостаточную байткодную VM на переносимом C. Ей не нужны ни libffi, ни LLVM, ни компилятор в рантайме. Значения — упакованные 32-битные слова, сборщик мусора уплотняет кучу при фрагментации. Байткод архитектурно-нейтральный: одни и те же FASL-файлы работают на m68k и PowerPC. Полное ядро языка с CLOS, condition-системой, числовой башней и format грузится в кучу около 0.5 MB. Для простых программ хватает --heap 1M, для Quicklisp приходится ставить 24M.

На m68k есть JIT. Он транслирует байткод в нативный код на лету. На эмулированном A4000/68040 фикснум-цикл через tagbody ускоряется в 20 раз, цикл со struct-слотами — в 13 раз, цепочка арифметических операций — в 7.5 раза, вызовы функций — в 1.4 раза. Демо с летающими линиями через graphics.library даёт 615 FPS на JIT против 500 FPS на байткодной VM. Для сравнения, ACE BASIC через те же ROM-вызовы выдаёт около 1900 FPS — разница объясняется ценой динамического языка с GC, а не качеством кода.

MorphOS-сборка — нативный PowerPC-бинарник, без эмуляции 68k. Она работает через ABox с библиотеками Amiga. JIT в ней нет, но на G4/G5 байткодная VM достаточно быстрая для полноценного Quicklisp с зависимостями.

Quicklisp в Clamiga поднимается через загрузку lib/quicklisp-install.lisp и одноразовый (cl-amiga-ql:install). Проверены alexandria, fiveam, FSet, str, Drakma и Hunchentoot — правда, без SSL, потому что привязки к Amiga SSL пока нет. Есть и Lisp-биндинги к Intuition, Graphics и GadTools: окна, RTG-битмапы, блэттинг, аудио через audio.device, плюс trampoline для сырых вызовов в любую библиотеку AmigaOS.

В Clamiga есть REPL с отладчиком, инспектор, disassemble и макрос jitexpand, который на m68k показывает сгенерированный ассемблер. Разработка удобна и на хост-системе: Clamiga понимает SLYNK, так что из Emacs можно работать через SLY. Проект ещё молодой: полный ANSI-стандарт не достигнут, но секции CONS, SYMBOLS, NUMBERS и SEQUENCES из тестов Paul Dietz проходят. В планах — больше AmigaOS API, порт ARexx, улучшение отладчика и, возможно, PPC JIT.

Читать оригинал →