Миграция Bun на Rust: разработчики переписали рантайм с Zig
Индустрия современных инструментов для JavaScript-разработки переживает очередное громкое событие. Джарред Самнер (Jarred Sumner), создатель и ведущий разработчик сверхбыстрого рантайма Bun, опубликовал подробный технический отчет о масштабном архитектурном изменении: вся основная кодовая база проекта переводится с языка программирования Zig на Rust. Новая реализация рантайма, полностью написанная на Rust, станет технологическим фундаментом для долгожданного релиза Bun 1.4, выход которого ожидается в самое ближайшее время.
Этот шаг стал неожиданностью для многих разработчиков в веб-сообществе. С самого момента своего появления Bun позиционировался как альтернатива Node.js, написанная на низкоуровневом языке Zig, что преподносилось как одно из главных преимуществ для достижения максимальной скорости работы и оптимизации использования ресурсов компьютера.
Почему разработчики отказались от Zig в пользу Rust?
Язык Zig, на котором Bun разрабатывался изначально, славится своим тотальным контролем над памятью, отсутствием скрытого потока управления и потрясающей производительностью, сравнимой с языком C. Однако по мере роста проекта и расширения его возможностей ручное управление памятью и относительно молодая экосистема Zig стали создавать серьезные препятствия для масштабирования продукта.
Джарред Самнер и его команда выделили несколько ключевых причин, побудивших их пойти на столь радикальный шаг, как полная смена основного языка программирования проекта:
- Безопасность памяти и стабильность кода: В крупных проектах ручное управление памятью в Zig неизбежно приводит к трудноуловимым ошибкам, утечкам памяти и неожиданным падениям программы (сегментациям). Rust с его строгой системой владения (ownership) и заимствования (borrowing) автоматически предотвращает большинство подобных проблем на этапе компиляции, гарантируя безопасность работы с памятью в многопоточных средах.
- Зрелость экосистемы и готовые библиотеки: Экосистема Rust (реестр пакетов crates.io) значительно шире и стабильнее экосистемы Zig. Разработчикам Bun приходилось писать множество низкоуровневых компонентов с нуля на Zig, в то время как в Rust для большинства инфраструктурных задач (сетевые протоколы, работа с файловыми системами, криптография) уже существуют проверенные временем высокопроизводительные библиотеки.
- Совместимость с инструментами искусственного интеллекта: Как показала практика команды, современные инструменты автодополнения кода и интеллектуальные ИИ-ассистенты гораздо лучше обучены работе с кодом на языке Rust, нежели на Zig. Это связано с колоссальной разницей в объемах доступного обучающего материала на GitHub.
Claude Code: миграция стоимостью 165 тысяч долларов
Переписать крупный системный проект, такой как рантайм JS-приложений, с одного низкоуровневого языка на другой — задача, которая обычно требует месяцев, а то и лет работы целой команды высококлассных инженеров. Однако разработчики Bun смогли совершить этот переход в рекордно короткие сроки. Секрет успеха кроется в агрессивном использовании инструментов искусственного интеллекта.
Основную часть рутинной и сложной работы по переводу кодовой базы с Zig на Rust выполнили специализированные ИИ-агенты Claude Code от компании Anthropic. Команда Джарреда Самнера развернула сотни параллельно работающих инстансов (экземпляров) ИИ-агента, которые автономно анализировали участки кода на Zig, переписывали их на Rust, генерировали соответствующие тесты и пытались скомпилировать полученный результат, исправляя ошибки компилятора в цикле обратной связи.
Этот амбициозный эксперимент потребовал колоссальных вычислительных и финансовых затрат. По официальным данным отчета, на оплату запросов к API моделей Anthropic в процессе миграции было потрачено более 165 000 долларов США. Тем не менее, Джарред Самнер считает эти расходы полностью оправданными, поскольку наем аналогичного штата инженеров-программистов для выполнения этой работы вручную обошелся бы проекту значительно дороже и занял бы несопоставимо больше времени.
Что принесет Bun 1.4 на базе Rust?
Перевод Bun на Rust — это не просто смена синтаксиса под капотом, а глубокое обновление всей архитектуры рантайма. Переход на Rust позволит разработчикам решить ряд застарелых проблем со стабильностью и подготовить платформу к интеграции новых возможностей в версии Bun 1.4.
- Стабильность многопоточности: Благодаря модели безопасности Rust, параллельный запуск тестов (
bun test --parallel) и обработка сетевых запросов станут гораздо стабильнее и перестанут приводить к падениям процесса из-за ошибок состояния гонки (race conditions). - Снижение потребления ресурсов: Rust-версия Bun демонстрирует улучшенную работу с памятью в долгоживущих процессах. Автоматическая очистка ресурсов в Rust происходит сразу при выходе переменных из области видимости, что предотвращает микроутечки, которые периодически возникали в Zig-версии из-за сложности ручной очистки в асинхронном коде.
- Улучшение встроенных API: В версии Bun 1.4 ожидается полноценная стабилизация и ускорение работы встроенных интерфейсов для обработки изображений (
Bun.Image), сетевых протоколов HTTP/2 и HTTP/3 на стороне клиента, а также планировщика задач (Bun.cron).
Влияние на индустрию веб-разработки
Решение команды Bun подчеркивает важный тренд в современной веб-индустрии: Rust окончательно закрепил за собой статус главного системного языка для создания инструментов веб-разработки нового поколения. В то время как Node.js продолжает полагаться на традиционный C++, а Deno изначально строился на Rust, переход Bun в лагерь Rust-инструментов делает эту экосистему единым стандартом.
Для обычных веб-разработчиков миграция Bun на Rust должна пройти практически незаметно с точки зрения обратной совместимости. Разработчики рантайма приложили огромные усилия для того, чтобы все существующие API, поддержка Node.js-модулей и npm-пакетов работали точно так же, но с более высокой надежностью. Bun 1.4 на базе Rust обещает стать самым стабильным выпуском рантайма в истории проекта, избавив разработчиков от досадных «детских болезней» платформы, связанных с нестабильностью компилятора и ручного управления памятью в Zig. Внедрение Rust открывает перед проектом Bun новые горизонты для дальнейшего развития и ускорения веб-приложений по всему миру.

![Node.JS [ru]](/api/digests/it_development/daily/20260717/assets/sources/we-use-js.jpg)