Содержание
Коротко
В 2000 году Джоэл Спольски назвал переписывание с нуля худшей стратегической ошибкой. Эссе на Dev.to разбирает перенос ядра Bun с Zig на Rust: около 535 тысяч строк за 11 дней силами десятков агентов Claude. Автор не зовёт всех «переписать прод», а предлагает пересмотреть правило как замёрзшую оценку стоимости, а не вечную истину.
Что произошло
Джарред Самнер задумал убрать утечки памяти и ошибки use-after-free и перенёс ядро среды выполнения на Rust, где часть гарантий даёт компилятор. Дальше на репозиторий направили агентов: до 50 автоматических сценариев, на пике четыре рабочих дерева Git параллельно, в каждом до 16 агентов Claude. Они сами закрыли больше 16 тысяч ошибок компиляции.
Цифры из эссе: 535 496 строк Zig, больше миллиона строк Rust, 6 778 коммитов, порядка 6,6 млрд токенов и около 165 тысяч долларов на API. На пике — 64 агента, старт–финиш — 11 дней. Для сравнения автор приводит Turborepo: три–пять инженеров и 14 месяцев на переход с Go на Rust.
Результат в Bun 1.4.0 выглядит убедительно и одновременно грязно. На тесте из 2 000 параллельных сборок память упала с 6,7 ГБ до 609 МБ, закрыли 128 старых ошибок, размер бинарника на Linux и Windows сократился примерно на 20%, пропускная способность HTTP выросла на 2–5%. С другой стороны появились 19 известных дефектов, около 4% кода остаётся в unsafe, а создатель Zig Эндрю Келли назвал проект «непросмотренной кашей». Этот упрёк автор просит не отмахивать: миллион строк без человеческой проверки — отдельный риск, даже если сравнительные тесты зелёные.
Почему это важно
Правило Спольски держалось на экономике: люди заново выводят краевые случаи, которые уже «зашиты» в старых заплатках, а продукт год ничего не поставляет. Когда кривая стоимости ломается, совет перестаёт быть универсальным. Не значит, что «всегда переписывай»: значит, что догму надо пересчитывать так же, как зависимости.
Три позиции могут быть верны одновременно. Спольски прав для своей модели затрат. Келли прав про долг проверки. Bun прав в том, что сборка вышла и на части нагрузок стала легче. Интерес именно в этом напряжении, а не в победе одной стороны.
На практике
- Перед «никогда не переписываем» запишите, какая стоимость и какой срок стояли за этим «никогда» пять лет назад — и что изменилось в инструментах.
- Не сравнивайте агентный перенос с ручным год за годом без одной метрики: деньги, календарь, известные дефекты, доля непросмотренного кода.
- Заложите бюджет ревью отдельно от бюджета генерации: 165 тысяч на API не оплачивают внимательное чтение миллиона строк.
- Держите старый контур живым, пока новый не пройдёт те же сценарии, что защищали прод годами.
- Если цель — безопасность памяти, считайте не только «перешли на
Rust», но и долюunsafeи набор тестов, которые ловят регрессии среды выполнения.
Итог
Урок эссе не «всегда переписывайте с нуля», а «инженерные запреты часто маскируют старую арифметику». Когда арифметика меняется, запрет нужно пересмотреть, а не повторять как заклинание. Вопрос не в том, умеет ли модель перенести код, а в том, осталась ли в силе причина, по которой вы отказывались раньше.

