Show HN: Using Common Lisp from Inside the Browser
Web Embeddable Common Lisp (WECL) — запуск Common Lisp в браузере через WebAssembly.
Проект экспериментальный; API нестабильны, баг-репорты не принимаются.
Исходники: fossil.turtleware.eu/wecl.
Быстрый старт
Подключите boot.js
и wecl.js
, пишите код в <script type="text/common-lisp">
.
Пример считает обратный отсчёт и выводит «BOOM!».
Демо: easy.html | easy.lisp
JS-FFI
Набор макросов для вызова JavaScript из Lisp:
макрос | назначение |
---|---|
define-js-variable |
переменная, выражение подставляется каждый раз |
define-js-object |
объект, сохраняется в хранилище |
define-js-function |
функция |
define-js-method |
метод объекта |
define-js-getter/setter/accessor |
чтение/запись поля |
define-js-script |
шаблон JS-выражения |
define-js-callback |
Lisp-функция, вызываемая из JS |
lambda-js-callback |
анонимный callback |
Типы аргументов: :object
, :js-ref
, :fixnum
, :symbol
, :string
, :null
.
Emacs-интеграция
LIME/SLUG позволяет REPL и отладку прямо из Emacs.
Инъекция в любой сайт
Загрузка WECL в произвольную страницу через bookmarklet или расширение.
Ограничения
- Размер wasm-модуля ≈ 10 МБ (кешируется).
- Нет потоков, FFI неполный, производительность средняя.
Финансирование
Разработка поддерживается подписчиками Patreon.