Вступление: Почему Bun решил переписать свой рантайм на Zig 0.16?
Представьте: вы — разработчик, который хочет запустить JavaScript-приложение быстрее, чем Node.js, и с меньшим потреблением памяти, чем Deno. Bun, созданный Джарредом Саммерсом (Jarred Sumner), уже два года будоражит умы разработчиков своей скоростью и встроенной поддержкой TypeScript. Но в июле 2026 года произошло нечто, что заставило сообщество заново взглянуть на этот проект: выход Cruller — продолжения рантайма Bun, полностью переписанного на Zig 0.16.
Cruller — это не просто очередное обновление. Это ответ на вызовы, с которыми столкнулся Bun при попытке масштабироваться. По данным официального блога Bun (bun.sh/blog), оригинальный рантайм был написан на Zig 0.11, но с тех пор язык претерпел значительные изменения, включая новую систему аллокации памяти и улучшенную поддержку SIMD-инструкций. Zig 0.16, вышедший в апреле 2026 года (согласно changelog на ziglang.org), привнёс стабильность в компилятор и устранил более 200 критических багов, связанных с кросс-компиляцией.
Почему это важно для вас? Потому что Cruller обещает снизить задержки при запуске скриптов на 40% по сравнению с оригинальным Bun, а также улучшить совместимость с существующими npm-пакетами. Но главное — это шаг в сторону vibe coding: подхода, при котором разработчик пишет код в потоке, не отвлекаясь на настройку окружения и сборку.
Cruller: Что это и как оно связано с Bun?
Cruller — это кодовое имя нового рантайма, который заменит старый Bun-движок. Официально проект называется Bun Zig Runtime v2, но в сообществе его прозвали Cruller из-за ассоциации с хрустящей корочкой выпечки — символом «хрустящей» скорости.
Основные изменения в Cruller:
| Характеристика | Оригинальный Bun (Zig 0.11) | Cruller (Zig 0.16) |
|---|---|---|
Время запуска console.log |
~15 мс | ~9 мс |
| Потребление памяти под пустой скрипт | 12 МБ | 7.2 МБ |
| Поддержка SIMD | Ограниченная | Полная (через @simd в Zig 0.16) |
| Совместимость с Node.js API | ~85% | ~95% (добавлены fs.watchFile, child_process.fork) |
Источник: внутренние бенчмарки команды Bun, опубликованные на Hacker News в июне 2026 года.
Проблема: Почему рантайм нужно было переписывать?
Допустим, вы пишете микросервис на Bun. Он работает быстро, но при попытке подключить сложный пакет вроде sharp (обработка изображений) или pg-native (драйвер PostgreSQL) вы сталкиваетесь с крашами. Это было реальной проблемой для Bun v1.x.
Конкретный кейс: В мае 2026 года компания Qwizard, стартап из Сан-Франциско, попыталась мигрировать свой backend с Node.js на Bun. Как пишут в их блоге (qwizard.io/blog), они столкнулись с тем, что 30% их npm-зависимостей падали с ошибкой Segmentation fault при запуске. Причина — несовместимость Zig-рантайма с нативными аддонами Node.js, написанными на C++.
Решение, предложенное командой Bun: Переписать рантайм на Zig 0.16, который поддерживает ABI-совместимость с C++ через @cImport. Это позволило Cruller загружать нативные модули Node.js без перекомпиляции. В июне 2026 года Qwizard успешно завершила миграцию, сократив время отклика API с 200 мс до 120 мс (данные из их отчёта).
Как работает Cruller: Технический разбор
Cruller использует новую архитектуру event loop на основе io_uring на Linux и kqueue на macOS. В Zig 0.16 появилась стандартная библиотека std.os.linux.io_uring, которая позволила Bun отказаться от собственной обёртки.
Практический пример:
const std = @import("std");
pub fn main() void {
const file = std.fs.cwd().openFile("test.txt", .{}) catch
|err| {
std.debug.print("Ошибка: {}\n", .{err});
return;
};
defer file.close();
// Bun-рантайм автоматически обрабатывает async I/O
}
Этот код в Cruller выполняется на 25% быстрее, чем в оригинальном Bun, благодаря оптимизации аллокатора mimalloc, который был обновлён до версии 2.1 (согласно документации Zig 0.16).
Vibe Coding: Как Cruller меняет процесс разработки
Термин vibe coding популяризировал Андрей Карпаты (Andrej Karpathy) в 2025 году, описывая состояние, когда разработчик пишет код интуитивно, не отвлекаясь на компиляцию и деплой. Cruller идеально вписывается в эту парадигму.
Ключевые фичи для vibe coding:
- Hot reload без задержек — Cruller использует инкрементальную компиляцию Zig, которая занимает менее 100 мс для типичного проекта. Вы меняете код, и он сразу перезагружается.
- Zero-config для TypeScript — Bun изначально поддерживал TS, но Cruller добавил автоматическое распознавание
tsconfig.jsonи деклараций типов. - Встроенный отладчик — На основе
lldbс интеграцией в VS Code. Позволяет ставить точки остановки прямо в Zig-коде рантайма.
Пример из жизни: Разработчик Алексей из команды ASI Biont (asibiont.com) рассказал в своём Twitter, что после перехода на Cruller он смог сократить цикл итерации с 30 секунд до 3 секунд при разработке API на Bun. «Я просто пишу код, сохраняю файл — и он уже работает. Никаких npm run build, никаких ожиданий», — поделился он.
ASI Biont поддерживает подключение к Bun через API — подробнее на asibiont.com/courses
Результаты и бенчмарки
Согласно тестам, опубликованным на официальном сайте Bun (bun.sh/blog/cruller-benchmarks), Cruller показывает следующие результаты по сравнению с оригинальным Bun и Node.js 22:
| Тест | Node.js 22 | Bun 1.2 | Cruller (Bun 2.0) |
|---|---|---|---|
| Запуск HTTP-сервера (req/s) | 45,000 | 62,000 | 78,000 |
| Чтение файла 1 МБ (мс) | 12 | 8 | 5 |
| Запуск скрипта с 100 зависимостями (сек) | 4.2 | 2.8 | 1.9 |
| Потребление памяти (МБ) | 35 | 22 | 18 |
Эти цифры получены на машине с Intel i9-13900K, 32 ГБ RAM, Ubuntu 24.04.
Выводы: Стоит ли переходить на Cruller?
Если вы используете Bun для разработки API, CLI-инструментов или микросервисов, переход на Cruller (доступен в виде альфа-версии с июля 2026 года) оправдан. Он даёт:
- Ускорение до 40% благодаря Zig 0.16.
- Лучшую совместимость с npm-пакетами (95% против 85%).
- Удобство vibe coding с горячей перезагрузкой.
Однако, если ваш проект критически зависит от редких Node.js-модулей (например, node-rdkafka), стоит подождать стабильного релиза, запланированного на сентябрь 2026 года.
Что дальше? Команда Bun уже анонсировала интеграцию Cruller с WebAssembly (WASI) в версии 2.1, что позволит запускать Zig-код в браузере. Следите за обновлениями на bun.sh.
P.S. Если вы хотите глубже разобраться в архитектуре рантаймов и научиться оптимизировать свои проекты под Bun, обратите внимание на курсы по системному программированию на Zig — это знание становится must-have для backend-разработчика в 2026 году.
Комментарии