О компактном коде на Rust

Некоторое время назад мне попадались обсуждения размеров бинарников на Rust. Некоторые утверждали, что исполняемые файлы на Rust слишком большие, в то время как на C можно получить реально крошечные бинарники, поэтому этот ваш раст не нужо́н.

Однако в последние пару недель я экспериментировал с Rust для embedded и немного погрузился в техники минимизации размера бинарников. Оказалось, что если не особо использовать функции, требующие поддержки от рантайма, и все удобства стандартной библиотеки, то даже текущий стабильныйrustcне генерирует слишком много лишнего кода.

Более того, при использовании агрессивной оптимизации размера и некоторых трюков на уровне линкера, можно добиться размеров на уровне сотен байт.

Я вдохновился проектом tiny-rust-demo от Keegan McAllister и kilo от Antirez'а,и попробовал реализовать небольшой редактор на Rust.

Результат — based. Моё первое Linux-приложение (именно Linux, не GNU/Linux),которое имитирует некоторое количество emacs'овых клавиш (так как в emacs'е я живу, это был самый простой путь). Программа умещается в 32 КБ и требует только ядра Linux для запуска.

В процессе я активно использовал Claude Code, но, похоже, «вайб-кодинг» не очень хорошо работает на уровне таких приложений — хотя при написании тестов он очень сильно помогает. Нужно ещё немного поработать с ним, чтобы сделать окончательные выводы, но пока это кажется очень полезным (хоть и довольно дорогим) инструментом для разработчика. По крайней мере, на работе я точно буду его использовать: он прямо драматически уменьшая объём бойлерплейта и автоматизирует некоторые скучные задачи.

Не уверен, нужен ли миру ещё один редактор, но по совпадению на этой неделе Microsoft выпустила свойedit.

И да, он тоже написан на Rust и тоже не имеет внешних зависимостей. Правда, он весит ~300 КБ, а не 30 КБ. Но это уже вполне полноценный редактор, а не просто proof-of-concept.

Так что подход работает и уже используется корпорациями.

There is an english version of this post