О компактном коде на 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