Для языка РАПИРА, советского учебного языка из начала 1980-х, появился интерпретатор. Его написал Alexander Demin. Язык придумал Г. А. Звенигородский для школьной системы «Школьница» на микрокомпьютере «Агат».
Интерпретатор собран на TypeScript и Bun. Он точен к диалекту Агат-85: ключевые слова только русские, идентификаторы без учета регистра, комментарии в скобках (* … *), три составных типа (кортежи <>, множества <* *>, записи <¤ ¤>), а у функций результат возвращается через РЕЗ:.
Есть и Чертёжник — советский «исполнитель» для черепашьей графики. Его команды (ВПЕРЕД, НАЗАД, НАПРАВО, ПЕРО_ВНИЗ) реализованы как обычные процедуры. Графика работает и в CLI, и в веб-версии — результат одинаковый.
Проект можно запустить прямо из терминала: npx rapira factorial.rap выполнит программу. Если передать --svg, Чертёжник нарисует SVG. Просто rapira без файла откроет многострочный REPL. Для работы нужен Node 18 или новее. Есть и глобальная установка через npm.
В браузере живёт плейграунд на CodeMirror 6 и Web Worker. Там светлая и тёмная темы, есть выбор примеров. Собрано через bun build, готово для GitHub Pages.
Кодовая база включает 129 тестов в 9 файлах. Каждый .rap-сниппет сравнивается с эталонным .txt или .svg. Для разработки нужен Bun: bun test прогоняет тесты, bun run dev запускает локальный сервер. CLI можно собрать в один файл dist/rapira.js.
В репозитории лежат примеры: «Здравствуй, мир!», факториал с циклом ДЛЯ … ОТ … ДО, квадрат и звезда через черепашку, работа с файлами (ОТКРЫТЬ, ВВОД ИЗ ФАЙЛА, ПОЗИЦИЯ) и случайный доступ.
Есть два спека: SPEC.md — что реализовано и что отложено, и RAPIRA.md — каноническая спецификация 1985 года, переформатированная в Markdown из KOI-8. Ещё CLAUDE.md — заметки для работы над кодом. Лицензия MIT.