«64 Claude одновременно»: создатель Bun рассказал, как ИИ переписал миллион строк кода

от автора

Джарред Самнер, создатель JavaScript-рантайма Bun, опубликовал детальный разбор того, как проект переписали с языка Zig на Rust. Этот пост он обещал с 9 мая, но ожидание того стоило: впервые раскрыта методология одной из самых громких ИИ-миграций кода — с динамическими воркфлоу, пробными прогонами, состязательным ревью и десятками параллельных агентов.

Сам переезд состоялся еще в мае: пул-реквест с примерно миллионом строк Rust-кода влили в основную ветку через шесть дней после открытия. В Bun на тот момент было 535 496 строк кода на Zig без учета комментариев — Самнер оценивает, что переписывание силами небольшой команды инженеров заняло бы год с заморозкой багфиксов и новых фич. Главным мотивом стали ошибки работы с памятью: значительная часть багов Bun сводилась к use-after-free и double-free — обращению к уже освобожденной памяти и ее повторному освобождению. В безопасном Rust все это превращается в ошибки компиляции и автоматическую очистку через Drop.

За решением стояла и усталость: «Наш список багфиксов выглядел плохо, и я устал засыпать с тревогой о крашах в Bun», — пишет Самнер, подчеркивая, что не винит Zig и всегда будет благодарен языку, без которого Bun не зашел бы так далеко. При этом он сразу отсекает карикатурное представление о процессе: написать промпт «Перепиши Bun на Rust. Не делай ошибок» и молиться — это не то, как делаются такие вещи.

Ключевым условием стало то, что тестовый набор Bun написан на TypeScript и не зависит от языка рантайма: миллион проверок, которые изначально писались для версии на Zig, стали эталоном для Rust-порта — если тесты проходят, значит, новая реализация ведет себя так же, как старая. Дальше — инженерия процесса. Монолитную кодовую базу Самнер захотел разбить примерно на 100 Rust-крейтов, но устранение циклических зависимостей вскрыло около 16 000 ошибок компиляции. «Безумное число для одного человека, но не такое уж безумное для 64 копий Claude одновременно», — пишет он. Чтобы агенты не мешали друг другу, воркфлоу группировал ошибки по файлам, cargo check запускался только в самом начале, а git не трогали до конца прогона.

Динамика впечатляет: через два дня после первого прогона CI список падающих тестов сократился с 972 файлов до 23, еще через полтора дня Linux полностью позеленел, последней сдалась Windows. Все эти 11 дней Самнер вручную мониторил воркфлоу, читал выводы агентов и просил Claude править сам цикл. В этом главный принцип подхода: когда что-то шло не так, чинили не код руками, а процесс, который этот код генерирует.

Rust-версия Bun уже почти месяц работает в продакшене: начиная с Claude Code 2.1.181 от 17 июня инструмент использует именно ее. Известный разработчик Саймон Уиллисон в своей заметке назвал разбор Самнера описанием чрезвычайно изощренной агентной инженерии. Скептики, впрочем, никуда не делись: в новой кодовой базе насчитали более 13 000 блоков unsafe-кода — на порядки больше, чем в сопоставимых Rust-проектах, так что цена прямолинейного порта еще может дать о себе знать.

P.S. Поддержать меня можно подпиской на канал «сбежавшая нейросеть«, где я рассказываю про ИИ с творческой стороны.

ссылка на оригинал статьи https://habr.com/ru/articles/1057552/