Разработчик под ником crustc превратил компилятор rustc 1.98.0-nightly в 46 миллионов строк кода на C. Получившийся «крест» (crustc) можно собрать с помощью GCC и make — и он работает. Это не шутка: на выходе — функциональный компилятор Rust, который, в свою очередь, может компилировать core, alloc и std.
Проект называется cilly. Это 14-я по счёту попытка автора скомпилировать Rust в C. cilly — это Rust-библиотека для генерации C-кода и плагин-бэкенд к rustc. Главная инновация — адаптация под любой C-компилятор. cilly генерирует «witness»-программы, которые проверяют, что конкретный компилятор и платформа умеют: размеры типов, выравнивание, раскладку, поддержку потоков и прочее. Если компилятор — экзотика вроде «Shminky C compiler for Blorbo OS», cilly подстроится. Выходной C-код привязан к конкретной архитектуре: вы не возьмёте C, сгенерированный под Arm64, и не скомпилируете его под riscv32. Но под riscv32 можно сгенерировать свой.
Основная цель — поддержка старого и редкого железа, где нет LLVM или GCC, но есть C. cilly оборачивает rustc и C-компилятор, транслируя Rust-код на лету. Всё прозрачно по сети: вы запускаете маленький C-сервер на целевой системе (хоть через UART), а rustc работает на нормальной Linux-машине. Автор успешно скомпилировал простую программу для x86 Plan 9, сидя на Arm64 Linux — и она напечатала «Hello, world!».
cilly умеет раскладывать объектные файлы по makefiles, чтобы собирать Rust-программы одним make. Сгенерированный код почти ABI-совместим с обычным rustc — но есть нюанс: на Arm64 rustc использует соглашение о вызове, которое не воспроизвести из C.
Демо собрано на Ubuntu с GCC 13.3.0 и LLD 18.1.3, под версию rustc nightly-2026-06-16. Автор предупреждает: оптимизации включать не стоит — пару файлов может зажевать. Без оптимизаций сборка занимает около 1 минуты 18 секунд на 20 потоках.
Проект пока не готов для публичного использования. Автор устроился на работу, пишет диплом и сунул левую руку в блендер (пальцы целы, но рука зашита). Так что cilly выйдет позже.