Думали, крупный проект нельзя перенести за неделю? Bun сделал это с помощью ИИ
NewsMakerЭксперимент стал релизом за пять дней.
Проект Bun, теперь связанный с Anthropic, за несколько дней прошёл путь от рискованного эксперимента до огромного слияния в основной репозиторий . Среду выполнения JavaScript и набор инструментов для веб-разработки перенесли с Zig на Rust с помощью ИИ-инструментов, а в кодовую базу добавили более 1 млн строк. Масштаб изменений сразу поставил главный вопрос: можно ли двигаться с такой скоростью и не сломать крупный проект.
Bun, альтернатива Node.js для запуска JavaScript и TypeScript, закрывает сразу несколько задач веб-разработки: запускает код, собирает приложения, управляет пакетами и помогает тестировать проекты. Изначально Bun писали на Zig, языке системного программирования, но новая основная ветка теперь опирается на Rust.
За пять дней до слияния создатель Bun Джарред Самнер написал в X, что Rust-версия проходит 99,8% прежнего набора тестов Bun на Linux x64 glibc. Для проекта, который ещё недавно называли экспериментом, результат выглядел как сигнал: перенос почти наверняка попадёт в продакшен. Через три дня команда выпустила Bun 1.3.14, а Самнер предупредил, что при слиянии Rust-версии релиз станет последней версией Bun на Zig.
После слияния Самнер заявил, что Rust-версия проходит тесты Bun на всех платформах, исправляет часть утечек памяти и уменьшает размер исполняемого файла на 3-8 МБ. По словам разработчика, производительность осталась на прежнем уровне или выросла, архитектура и структуры данных не изменились. Async Rust команда не использовала.
Главная практическая причина перехода связана с памятью. Пользователи Bun уже сталкивались с утечками при запуске среды выполнения в продакшене. Самнер признал, что Rust не поймает все проблемы: слишком долгие ссылки на объекты и ошибки на границе с JavaScript всё равно остаются задачей команды. Но значительная часть списка связана с use-after-free, double-free и забытым освобождением памяти при ошибках, а Rust часто превращает подобные дефекты в ошибки компиляции или закрывает автоматической очисткой ресурсов.
Скорость перехода вызвала отдельные вопросы к проверке кода. Вторую заявку на изменение кода, где удаляли более 600 000 строк Zig, GitHub автоматически пометил как AI slop и закрыл. Формулировку можно перевести как ИИ-мусор: платформа решила, что заявка похожа на автоматически сгенерированный низкокачественный код. Судя по контексту, команда Bun вернёт удаление Zig-кода в другой форме.
Размер коммитов делает полноценное ручное ревью почти невозможным. В обсуждении Rust-слияния один из участников иронично написал , что настолько маленькое и удобное для проверки изменение, конечно, не может содержать багов.
Идею переноса Bun на Rust сообщество в целом встретило хорошо, но скорость миграции многих удивила. При обычной разработке быстрый перенос крупного проекта на другой язык считался бы рискованным. В случае Bun работу ускорили ИИ-инструменты, а Самнер назвал Rust-версию по сути той же кодовой базой, только перенесённой на другой язык.
Разработчика также спросили, будет ли Rust-версию в основном сопровождать Claude Code от Anthropic. Самнер ответил , что команда уже давно работает в похожем режиме и месяцами почти не пишет код вручную. По словам создателя Bun, похожий подход применялся ещё до перехода проекта к Anthropic.
Переход на Rust совпал с конфликтом вокруг Zig. Самнер раньше активно поддерживал Zig, но политика языка против ИИ-сгенерированного кода разошлась с подходом команды Bun. Последние версии Bun уже использовали форк Zig с правками, которые нельзя было вернуть в основной проект. Мейнтейнеры Zig дали понять, что спорные изменения не приняли бы даже без учёта вопроса про ИИ.
Bun 1.3.14, последняя версия на Zig, получил встроенный API для обработки изображений . Новый механизм умеет декодировать, преобразовывать и кодировать картинки и рассчитан как замена библиотеке Sharp для Node.js. Релиз также добавил экспериментальную поддержку HTTP/3 через QUIC во встроенном сервере Bun.
Теперь миграция Bun станет проверкой для двух идей сразу: Rust должен снизить число ошибок памяти, а ИИ-инструменты должны показать, выдержит ли крупный проект перенос с такой скоростью. Настоящий тест начнётся не в репозитории, а в продакшен-проектах, где Bun используют как рабочую среду выполнения.
Проект Bun, теперь связанный с Anthropic, за несколько дней прошёл путь от рискованного эксперимента до огромного слияния в основной репозиторий . Среду выполнения JavaScript и набор инструментов для веб-разработки перенесли с Zig на Rust с помощью ИИ-инструментов, а в кодовую базу добавили более 1 млн строк. Масштаб изменений сразу поставил главный вопрос: можно ли двигаться с такой скоростью и не сломать крупный проект.
Bun, альтернатива Node.js для запуска JavaScript и TypeScript, закрывает сразу несколько задач веб-разработки: запускает код, собирает приложения, управляет пакетами и помогает тестировать проекты. Изначально Bun писали на Zig, языке системного программирования, но новая основная ветка теперь опирается на Rust.
За пять дней до слияния создатель Bun Джарред Самнер написал в X, что Rust-версия проходит 99,8% прежнего набора тестов Bun на Linux x64 glibc. Для проекта, который ещё недавно называли экспериментом, результат выглядел как сигнал: перенос почти наверняка попадёт в продакшен. Через три дня команда выпустила Bun 1.3.14, а Самнер предупредил, что при слиянии Rust-версии релиз станет последней версией Bun на Zig.
После слияния Самнер заявил, что Rust-версия проходит тесты Bun на всех платформах, исправляет часть утечек памяти и уменьшает размер исполняемого файла на 3-8 МБ. По словам разработчика, производительность осталась на прежнем уровне или выросла, архитектура и структуры данных не изменились. Async Rust команда не использовала.
Главная практическая причина перехода связана с памятью. Пользователи Bun уже сталкивались с утечками при запуске среды выполнения в продакшене. Самнер признал, что Rust не поймает все проблемы: слишком долгие ссылки на объекты и ошибки на границе с JavaScript всё равно остаются задачей команды. Но значительная часть списка связана с use-after-free, double-free и забытым освобождением памяти при ошибках, а Rust часто превращает подобные дефекты в ошибки компиляции или закрывает автоматической очисткой ресурсов.
Скорость перехода вызвала отдельные вопросы к проверке кода. Вторую заявку на изменение кода, где удаляли более 600 000 строк Zig, GitHub автоматически пометил как AI slop и закрыл. Формулировку можно перевести как ИИ-мусор: платформа решила, что заявка похожа на автоматически сгенерированный низкокачественный код. Судя по контексту, команда Bun вернёт удаление Zig-кода в другой форме.
Размер коммитов делает полноценное ручное ревью почти невозможным. В обсуждении Rust-слияния один из участников иронично написал , что настолько маленькое и удобное для проверки изменение, конечно, не может содержать багов.
Идею переноса Bun на Rust сообщество в целом встретило хорошо, но скорость миграции многих удивила. При обычной разработке быстрый перенос крупного проекта на другой язык считался бы рискованным. В случае Bun работу ускорили ИИ-инструменты, а Самнер назвал Rust-версию по сути той же кодовой базой, только перенесённой на другой язык.
Разработчика также спросили, будет ли Rust-версию в основном сопровождать Claude Code от Anthropic. Самнер ответил , что команда уже давно работает в похожем режиме и месяцами почти не пишет код вручную. По словам создателя Bun, похожий подход применялся ещё до перехода проекта к Anthropic.
Переход на Rust совпал с конфликтом вокруг Zig. Самнер раньше активно поддерживал Zig, но политика языка против ИИ-сгенерированного кода разошлась с подходом команды Bun. Последние версии Bun уже использовали форк Zig с правками, которые нельзя было вернуть в основной проект. Мейнтейнеры Zig дали понять, что спорные изменения не приняли бы даже без учёта вопроса про ИИ.
Bun 1.3.14, последняя версия на Zig, получил встроенный API для обработки изображений . Новый механизм умеет декодировать, преобразовывать и кодировать картинки и рассчитан как замена библиотеке Sharp для Node.js. Релиз также добавил экспериментальную поддержку HTTP/3 через QUIC во встроенном сервере Bun.
Теперь миграция Bun станет проверкой для двух идей сразу: Rust должен снизить число ошибок памяти, а ИИ-инструменты должны показать, выдержит ли крупный проект перенос с такой скоростью. Настоящий тест начнётся не в репозитории, а в продакшен-проектах, где Bun используют как рабочую среду выполнения.