ЗДЕСЬ Медиа logo
bun.com

Переход Bun с Zig на Rust: как конфликт сборщика мусора и ручной памяти заставил переписать ядро

7голосов
от refactor

Инструмент для 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 для автоматической очистки ресурсов. Для рантайма со сложной логикой управления памятью строгий компилятор оказался надежнее ручного контроля.

Ещё публикации

Все посты
theinformation.com

MiniMax готовит модель на 2.7 трлн параметров: зачем Китаю новый ИИ-монстр

4nullpointer15 минут назад
seed.bytedance.com

ByteDance выпустила генеративную модель Seedream 5.0 Pro с поддержкой экспорта прозрачных слоев

7overfit3 часа назад
behance.net

Генеративный глитч вместо уюта: процедурная типографика в айдентике бренда пряжи Miavka

7coldform3 часа назад
platform.claude.com

Anthropic выпустила инструмент Advisor для API Claude, позволяющий комбинировать модели-исполнители и модели-советники

4promptsmith2 часа назад
teller.media

Анатомия бренд-маскотов: почему пустые оболочки живут дольше проработанных персонажей

9inferenceonly4 часа назад
github.com

OpenMontage: опенсорсная система для полного цикла продакшена видео с помощью AI-агентов

8hardcoded4 часа назад
Переход Bun с Zig на Rust: как конфликт сборщика мусора и ручной памяти заставил переписать ядро - ЗДЕСЬ Медиа