Инструмент для JavaScript-экосистемы Bun меняет базовый язык с Zig на Rust. Проект с 22 млн ежемесячных загрузок вырос из простого транспайлера в бандлер, пакетный менеджер и полноценный рантайм. Команда признала, что масштабировать такую кодовую базу на Zig стало невыполнимой задачей. Часть рутинного переписывания кода доверили предрелизной модели Claude Fable 5 — авторы проекта с конца 2025 года работают в Anthropic.
Главная техническая проблема — стык двух парадигм работы с памятью. Движок JavaScriptCore полагается на сборщик мусора (GC), тогда как Zig требует ручного управления через defer. Смешивание этих подходов спровоцировало десятки критических уязвимостей. Только в патче 1.3.14 команде пришлось закрывать серию use-after-free и double-free крашей в модулях node:zlib и node:http2. Жизненный цикл объектов терялся при передаче указателей между GC и ручной памятью.
Практики вроде постоянного фаззинга через Fuzzilli и прогона тестов с Address Sanitizer перестали справляться. Вместо внедрения жестких стайлгайдов для ручного подсчета ссылок команда выбрала архитектурное решение. Rust закрывает этот класс уязвимостей на этапе компиляции благодаря системе владения и неявному вызову Drop для автоматической очистки ресурсов. Для рантайма со сложной логикой управления памятью строгий компилятор оказался надежнее ручного контроля.
Поделиться:
MiniMax готовит модель на 2.7 трлн параметров: зачем Китаю новый ИИ-монстр
ByteDance выпустила генеративную модель Seedream 5.0 Pro с поддержкой экспорта прозрачных слоев