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