Вернуться к статьям

Rust, но Lisp: когда захотелось писать на ржавчине, а душа просит скобочек

9 мая 2026
2 мин чтения
Rust, но Lisp: когда захотелось писать на ржавчине, а душа просит скобочек

Если вы мечтали о производительности Rust с синтаксисом Lisp — этот проект для вас, но будьте осторожны: скобки могут быть заразны.

Знаете это чувство, когда пишешь на Rust, всё строго, типизированно, компилятор ругается за любую оплошность, а в душе хочется чего-то более... скобочного? Нет, не боли в пояснице от сидения за монитором, а именно скобок — много-много круглых скобочек, как в Lisp. Разработчик под ником ThatXliner решил эту дилемму, создав проект с говорящим названием Rust but Lisp.

Суть проста до безобразия: это мета-программа, которая транслирует код на подмножестве Lisp в синтаксически корректный Rust. Вы пишете в стиле (defun factorial (n) (if (< n 2) 1 (* n (factorial (- n 1))))), а на выходе получаете нормальную Rust-функцию. Правда, компилятор Rust всё равно будет вас ненавидеть, но уже за другие грехи.

Что под капотом?

Проект представляет собой препроцессор, написанный на самом Rust (чего ещё ожидать?). Он парсит Lisp-подобный синтаксис и генерирует Rust-код. Пока поддерживаются базовые конструкции: функции, условные операторы, арифметика. В планах — макросы (куда же без них) и работа с замыканиями.

Зачем это нужно?

Честно говоря, практическая польза сомнительна. Но как proof of concept — отличный повод почесать репу. Возможно, это спасёт тех, кто перешёл с Clojure на Rust и теперь страдает от ломки без префиксной нотации. А может, просто очередной способ добавить себе головной боли при деплое: представьте, как CI/CD пайплайн пытается собрать ваш Lisp-код в Rust-бинарник.

Комментарий студии METABYTE

Мы, конечно, любим эксперименты, но советуем не злоупотреблять такими гибридами в продакшене. Если вам всё же хочется совместить несовместимое — лучше доверьте это нам, у нас есть опыт укрощения разношёрстных технологий без потери производительности и нервных клеток.

Rust but Lisp: проект для любителей скобок | METABYTE — METABYTE