← Усі статті

Bun 1.4: runtime на Rust, ближче до Node.js і менше пам’яті

+1517 тестів Node, −до 35% пам’яті, старт ×2 на Linux; перший стабільний реліз після перепису з Zig на Rust.

Bun 1.4: runtime на Rust, ближче до Node.js і менше пам’яті
Зміст

Коротко

Вийшов Bun 1.4 — перший стабільний реліз рантайму після перепису з Zig на Rust. Плюс 1517 тестів із набору Node.js, понад 2900 закритих задач, простий ЦП у простої до 5× нижчий, пам’ять HTTP-серверів нижча на 13–48%, старт на Linux приблизно вдвічі швидший. З’явились Bun.Image, Bun.WebView, Bun.cron(), паралельний bun test / bun run і правки сумісності.

Що сталося

Команда позиціонує Bun як повний набір для збірки й тестів JS/TS. У 1.4 головний сюжет — не лише фічі, а зміна мови реалізації: 1.3.14 був останнім на Zig, 1.4 — на Rust (подробиці — в окремому дописі «Rewriting Bun in Rust»). Рушій виконання й надалі JavaScriptCore; переписали обв’язку: HTTP, бандлер, менеджер пакунків, шар ФС.

Сумісність із Node помітно підтягнулась: node:http / fs / stream близько 97% власних тестів Node, частина модулів — 100%. Запрацювали або покращились сценарії з Playwright, vitest, OpenTelemetry, Datadog (dd-trace), гарячою підміною модулів у Nuxt, низкою npm-пакунків. Нативна реалізація веб-потоків проходить 100% тестів веб-платформи на заявлених пайплайнах.

За ресурсами: для Claude Code у проді 99-й процентиль завантаження ЦП впав приблизно з 24% до 10%; для крихітного «привіт, світ» простий ЦП — до 5×. На навантаженні мільйона запитів Fastify на Bun 1.4 — 120 МБ проти 233 МБ у 1.3. Старт hello.js на Linux: 5,1 мс проти 10,9 мс. Додано профілі --cpu-prof / --heap-prof і варіанти в Markdown для читання через SSH, подію process.on("memoryPressure").

Чому це важливо

Bun давно сперечався з Node за місце «швидкого рантайму». 1.4 б’є одразу по трьох болях продакшену: сумісність екосистеми, пам’ять довгих процесів і спостережуваність. Переїзд на Rust — ставка на безпеку пам’яті й інструменти (Miri, санітайзери, фазинг), а не лише маркетинг «ще швидше».

Оновлення свідоме: у релізних нотатках є зламні зміни поведінки (зокрема розбір YAML 1.2 — ключ on: у GitHub Actions може стати рядком). На Vercel Functions 1.4 уже доступний через явний bunVersion.

На практиці

  1. Оновлюйтесь через bun upgrade і проженіть повний набір тестів — не лише «сервер піднявся».
  2. Звірте зламні зміни: YAML, тонкощі сумісності з Node 26, поведінка потоків.
  3. Якщо крутите HTTP-сервер на Bun — заміряйте резидентну пам’ять до/після; очікування за релізними цифрами — мінус двозначні відсотки.
  4. Для налагодження на сервері без графічного інтерфейсу спробуйте --cpu-prof-md / --heap-prof-md.
  5. На Vercel задайте "bunVersion": "1.4.x" у vercel.json лише після перевірки зламних пунктів.

Підсумок

Bun 1.4 — рідкісний реліз, де зміна мови реалізації й помітний стрибок сумісності з Node приходять разом із економією пам’яті. Має сенс на стенді, не в п’ятницю ввечері на прод без плану відкату.