Hacker News Digest

21 августа 2025 г. в 12:08 • turtleware.eu • ⭐ 87 • 💬 24

OriginalHN

#common-lisp#webassembly#javascript#emacs#functional-programming#web-development

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.