Bun 1.4: переход на Rust, встроенный браузер и поддержка HTTP/3
По данным Bun Blog, после обновления начали проходить 1517 новых тестов совместимости.

Вышел Bun 1.4 с полной перезаписью на Rust и встроенным headless-браузером
По данным Bun Blog, стабильный Bun 1.4 полностью переписали с Zig на Rust. В релиз добавили встроенную headless-автоматизацию через Bun.WebView, поддержку HTTP/3 и новые API для обработки изображений. Для веб-разработки это не очередной косметический bump: рантайм одновременно лезет в тестирование, браузерную автоматизацию, сборку и системные задачи.
Проверять обновление в проде сразу — плохой способ узнать, что именно сломалось. Особенно если прод у вас до сих пор используется как staging, а бэкап лежит в том же регионе, что и база.
Rust внутри, Node.js-совместимость снаружи
Главное изменение Bun 1.4 — переписывание рантайма с Zig на Rust. Пользователю не нужно мигрировать код только из-за смены внутреннего языка, но такой переход затрагивает базовые компоненты: файловую систему, сетевой стек, планировщик и совместимость с Node.js.
В релизе заявлена совместимость с Node.js 26.3.0. По данным Bun Blog, после обновления начали проходить 1517 новых тестов совместимости. Это не гарантия, что любой npm-проект переживёт переключение без единого warning, но сигнал понятный: Bun пытается закрывать не только happy path для свежих приложений.
Из заметных изменений:
- HTTP/3 через QUIC добавили в
Bun.serve; - для
fetchпоявились экспериментальные HTTP/2 и HTTP/3-клиенты; fs.watchпереписали для Linux и macOS;- добавили
process.execve; - появился
Bun.Terminalдля Windows через ConPTY; - доступны сборки для FreeBSD и Android;
- бинарники на Linux стали меньше на 4 МБ.
Внутри также обновили JavaScriptCore. Источник указывает ускорение structuredClone для массивов до 25 раз, Buffer.slice — в 1,8 раза, а path.parse — до 7 раз. Это цифры из материалов релиза, а не результат независимого бенчмарка, поэтому переносить их напрямую на свой workload не стоит. Бенчмарк из README обычно живёт в идеальном мире, где GC не просыпается, а диски не забиты логами.
Headless-браузер и API вместо зоопарка зависимостей
Bun.WebView встроен в Bun 1.4 как инструмент headless-браузерной автоматизации. Практический смысл очевиден: сценарии, которым нужен запуск браузера без UI, теперь можно проверять внутри экосистемы Bun, не собирая отдельный слой из рантайма, браузера и обвязки.
Это пригодится для тестов интерфейсов и автоматизации, но миграцию существующего пайплайна лучше начинать с отдельного job в CI. Сначала сравнить стабильность, потребление памяти и поведение в контейнере. Потом уже выносить туда критичные проверки. Слово «встроенный» не означает «магически совместимый со всем».
В список новых встроенных возможностей также вошли:
Bun.Imageдля обработки изображений;Bun.markdown— встроенный CommonMark-совместимый Markdown-парсер;Bun.cronдля планировщика внутри процесса;- API для JSON5 и JSONL;
- новый REPL;
- запуск Markdown прямо из терминала через
bun./file.md; --compile --target=browserдля создания самодостаточного HTML;- поддержка стандартных ES-декораторов TC39.
Для небольших сервисов это может убрать часть обвязки из package.json. Но удалять зависимости массово после первого успешного запуска не нужно. Костыль, который работал три года, редко исчезает только потому, что в рантайме появился похожий API.
Что проверить перед обновлением
В Bun 1.4 заметно расширили тестовый CLI. Можно запускать тесты параллельно, изолированно, по shard и только для изменившихся частей проекта:
bun test --parallel
bun test --isolate
bun test --shard
bun test --changedДля CI это потенциально полезнее, чем просто поднять номер версии: параллельный запуск и выборочное выполнение влияют на время pipeline. Но сначала проверьте тесты, которые зависят от порядка выполнения, общего состояния и временных файлов. Параллелизм быстро находит такие места. Обычно вместе с ними находится и архитектура, которую все давно боялись трогать.
Отдельно стоит проверить установку зависимостей. Bun 1.4 умеет стримить tarball на диск, используя в 17 раз меньше памяти, а глобальное виртуальное хранилище для изолированного линкера доступно как opt-in и обещает до семикратного ускорения тёплых установок. Это относится именно к заявленным сценариям релиза; на чистом CI-агенте без прогретого состояния эффект будет другим.
Минимальный порядок проверки:
bun --version
bun install
bun test --sequential
bun test --parallelСначала — последовательный прогон и сравнение результатов. Затем — параллельный. После этого уже можно тестировать Bun.WebView, HTTP/3, Bun.Image и новые системные API в изолированной ветке. Не включайте сразу все флаги в production-пайплайне. Дебаг нескольких независимых изменений одновременно — это не инженерия, а ритуал вызова kernel panic.
Bun 1.4 выглядит как крупное расширение зоны ответственности рантайма: от JavaScript и сборки до браузерной автоматизации и системных задач. Для команд, которые уже используют Bun, разумный следующий шаг — не переписать весь стек, а прогнать собственный набор тестов, зафиксировать расход памяти и только потом решать, какие зависимости действительно можно выкинуть. И да: перед обновлением сделайте бэкап. Не копию конфигурации. Бэкап.