← На главную

Вышла Roto v0.11.0 — JIT-язык для Rust с макросом library!

29.05.2026 14:07 · hackernews

Вышла новая версия Roto v0.11.0 — JIT-компилируемого скриптового языка, который встраивается в Rust-приложения. Roto статически типизирован и компилируется «на лету», что делает его быстрее многих аналогов. Язык разрабатывают для проекта Rotonda, но он подходит и для других приложений.

За последний год вышло шесть релизов Roto. В язык добавили циклы while и for, f-строки для форматирования, новые операторы (например %), перечисления enum, составные операторы присваивания (+=), глобальные константы и обобщённые параметры типов. Появился тип List — можно создавать списки любого типа, соединять их и итерировать. Списки теперь можно передавать между Rust и Roto, и это дёшево. Синтаксис подтянули к Rust: теперь используется fn вместо function и // для комментариев вместо #. Но полным подмножеством Rust Roto не станет — в нём будут фичи, которых в Rust нет (например, форматирование строк).

Главное нововведение для интеграции с Rust — макрос library!. Раньше регистрация типов и методов в рантайме была громоздкой: нужно было использовать атрибутный макрос и передавать параметр runtime. Теперь через library! код выглядит как обычный Rust с блоками impl, докстрингами и self. Поддерживается и построение дерева модулей для зарегистрированных функций.

У Roto появился логотип — его сделал Richard de Ruijter. Дизайн получился игривым, в духе самого проекта. Логотип уже используют в документации, слайдах и скоро появится на стикерах.

Команда выступала с докладами о Roto на EuroRust 2025 (общее введение и демо) и FOSDEM 2026 (подробности реализации списков и внутреннего устройства). Оба доклада доступны в записи.

Самый важный внешний успех — проект Iocaine, скриптуемый прокси для защиты веб-серверов от AI-краулеров. Iocaine поддерживает Roto, Lua и Fennel, но дефолтные скрипты пишут именно на Roto. По словам автора Iocaine (известного как Algernon), Roto даёт лучшую производительность из трёх языков. Использование в Iocaine помогло протестировать Roto в реальных условиях — Algernon активно слал баг-репорты и фича-реквесты.

В планах — добавить хеш-таблицы, пользовательское состояние, обобщённые функции и инструменты вроде форматтера и LSP. Исходники и документация лежат на Codeberg.

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