Бето написал собственный стековый язык для веб-сайтов — Forge. Вдохновлялся Forth. Идея простая: каждый кусок HTML — это слово, которое кладёт строку на стек и выводит её. Например, : h1 ( s -- ) "<h1>" emit . "</h1>" emit ; — и потом "Hello, World!" h1 генерирует заголовок.
Бето быстро собрал библиотеку определений для микроформатов. Вот фрагмент: post-body собирает h-entry с датой, автором, заголовком, телом поста и permalink. Сайт — это папка с lib.forge, style.css и страницами в pages/. Запускается одной командой: forge --log forge.log my-site/.
Внутри бинарник делает много. В нём встроен WebAssembly компилятор, который из .forge файлов генерирует HTML. При первом заходе на страницу компилятор работает на бэкенде — в исходном коде страницы оказывается готовый HTML и оригинальный .forge-исходник. А когда пользователь переходит между страницами, service worker перехватывает запрос, подгружает .forge файл и компилирует его прямо в браузере. Получается серверный рендеринг для краулеров и WebMentions, и клиентский рендеринг для SPA-подобного опыта.
Бето нравится строгость языка. Данные можно сохранять в state, localStorage или в append-only лог на сервере. Вот кнопка «лайк»: on-click вызывает do-like, а та пишет "1" в тему "likes:demo" лога. Лог — это обычный JSONL. Формы отправляются на другие .forge страницы, которые просто кладут содержимое формы на стек; решать, сохранять ли через log-append, уже получателю.
Автор признаётся, что язык странный, но ему нравится. Пока просто исследует идеи. В комментариях заметили, что Forge должен быть очень быстрым (спасибо наследию Forth), а регулярность и краткость делают его удобным для генерации из Markdown через LLM.