Bun переписали с Zig на Rust с помощью ИИ-агентов

· Программы
Создатель Bun Джарред Самнер рассказал, как переписал рантайм с Zig на Rust, поручив значительную часть работы агентам на базе языковых моделей. Причиной стали трудноуловимые ошибки управления памятью.

cover.svg

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

Большую часть текста Самнер посвящает похвале Zig: именно этот язык позволил Bun дойти до нынешнего состояния, и он благодарен ему за это. Однако именно Zig стал источником главной проблемы проекта.

Причина переписывания

Самнер признаётся, что список багов Bun вызывал у него постоянное беспокойство — он засыпал, тревожась о падениях программы. По его словам, дело не в самом Zig: другие проекты на этом языке не сталкиваются с подобными трудностями. Проблема в сочетании сборки мусора с ручным управлением памятью — редком сценарии, для которого ни один язык специально не проектировался.

Значительная часть ошибок из списка багов относилась к классическим проблемам работы с памятью: use-after-free, double-free и утечкам из-за забытого освобождения в путях обработки ошибок. В безопасном Rust такие ошибки исключаются на уровне компилятора, что и стало решающим аргументом в пользу выбора языка.

Переписывание как больше не табу

Автор поста подчёркивает исторический контекст решения. Долгое время выбор языка программирования был необратимым решением для проекта такого масштаба, как Bun: индустрия давно усвоила правило «никогда не переписывайте большую программу с нуля», сформулированное Джоэлом Спольски ещё в 2000 году в эссе Things You Should Never Do.

Однако появление кодинг-агентов на основе современных фронтир-моделей меняет это уравнение: масштабное переписывание, ранее считавшееся неоправданно рискованным и трудозатратным, становится практически осуществимой задачей.

Пост Самнера, по оценке Уиллисона, интересен именно как детальный кейс применения агентного подхода к решению нетривиальной инженерной задачи, а не просто как техническая заметка о смене языка.


Источник: Simon Willison

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.