- BrainTools - https://www.braintools.ru -
Для кого эта статья: для разработчиков JavaScript/TypeScript, которые хотят узнать о главных событиях и новых возможностях Bun в 2026 году.
2026 год стал переломным для Bun. Переписывание на Rust [1] с помощью Claude Fable 5 за 11 дней показало новые возможности AI-ускоренной разработки, а 20 августа 2026 вышел Bun v1.4 [2] — первый production-релиз, полностью работающий на Rust-версии рантайма (до этого Rust использовался только внутри, например в Claude Code). Версия 1.3.14 добавила Bun.Image, HTTP/3 и Global Virtual Store, а v1.4 принесла резкий скачок совместимости с Node.js и десятки новых встроенных API. Bun стал частью Anthropic после приобретения в декабре 2025 [3].
Основные функции [4]
Быстрый старт [5]
Новые API и фичи [7]
|
Команда |
Описание |
Альтернатива в Node.js |
|---|---|---|
|
|
Выполнение JavaScript/TypeScript файлов |
|
|
|
Быстрый менеджер зависимостей |
|
|
|
Бандлер и минификатор |
|
|
|
Встроенный тест-раннер |
|
|
|
Инициализация проектов из шаблонов |
|
|
|
HTTP/HTTP2/HTTP3 сервер |
|
|
|
Встроенный SQL-клиент |
|
Bun изначально поддерживает запуск TypeScript и JSX без отдельного этапа компиляции. Path aliases из tsconfig.json работают из коробки.
Важно: Bun НЕ заменяет статическую проверку типов. Для полноценной проверки используйте tsc --noEmit в CI.
Node.js v24 [10] (LTS 2026) сделал type stripping поведением [11] по умолчанию. Однако между Bun и Node.js остаются важные различия:
|
Возможность |
Bun v1.4 |
Node.js v24+ |
|---|---|---|
|
Запуск .ts файлов |
✅ |
✅ |
|
JSX поддержка |
✅ Встроенная |
❌ Нет |
|
Path aliases ( |
✅ Из tsconfig.json |
❌ Игнорируются |
|
Enums, namespaces |
✅ Работают |
⚠️ Нужен |
|
Скорость запуска |
~5.1ms на Linux [2] |
~19ms |
|
Встроенный бандлер |
✅ |
❌ Нет |
Когда выбрать Bun: JSX/React проекты, использование path aliases, максимальная скорость разработки.
Когда достаточно Node.js: простые .ts скрипты без JSX и path aliases.
bun install
bun run start
# или напрямую
bun index.ts
bun build index.ts --target node --outfile dist/bundle.js
// tests/example.test.ts
import { describe, it, expect } from "bun:test";
describe("sum", () => { it("должен корректно складывать числа", () => { const sum = (a: number, b: number) => a + b; expect(sum(1, 2)).toBe(3); });
});
bun test
bun test --watch
bun test --parallel # новое в 2026
Bun v1.4 [2] — первый production-релиз на переписанном Rust-движке; раньше Rust-версия жила только внутри Anthropic, в том же Claude Code, а последней Zig-сборкой оставалась v1.3.14. Старт стал быстрее на 50% на Linux (5.1ms против 10.9ms) и в 2.5 раза на Windows (15.5ms против 39.0ms), простой CPU снизился впятеро, а память [12] HTTP-серверов под нагрузкой просела на 35–48%.
Совместимость с Node.js сделала самый большой скачок со времён v1.0: в тест-сьют добавили 1 517 тестов из Node.js, node:http, node:fs, node:sqlite и другие ключевые модули проходят 97–100% из них, а Playwright, Next.js 16, vitest и OpenTelemetry просто заработали. Из нового — Bun.markdown, Bun.Archive, Bun.JSON5/JSONC/XML/TOML: ещё 15 npm-зависимостей заменены нативным кодом. Windows ARM64 получил официальную поддержку.
Показательнее всего цифры из продакшена самого Anthropic: у Claude Code p99 использования CPU упал с 24% до 10%, p50 — с 5.8% до 2.5%.
Часть комьюнити раскритиковала AI-driven переписывание [13] за более чем 13 000 unsafe-блоков в итоговом Rust-коде — для сравнения, в написанных вручную Rust-проектах сопоставимого размера их в среднем около 70 — и за то, что крупнейший в истории GitHub PR проверили только AI-агенты (coderabbitai и claude), без единого человека в ревью. 99,8% пройденного тест-сьюта с первого раза звучит впечатляюще, но это не то же самое, что живой человек, читающий диф на миллион строк — здесь есть за что поволноваться, и это нормально. Апгрейд через bun upgrade хотя бы не требует breaking changes.
Bun v1.3.14 [14] — последняя стабильная версия на Zig перед переходом на Rust: принесла Bun.Image (обработка изображений в 7 раз быстрее sharp), HTTP/3 и QUIC в Bun.serve() и fetch(), Global Virtual Store (установка пакетов из кэша в 7 раз быстрее) и Bun.Terminal — терминальные API на Windows через ConPTY.
Bun переписали с Zig на Rust [1] за 11 дней с помощью Claude Fable 5 — 535 496 строк Zig превратились в больше миллиона строк Rust за 6 502 коммита, до 64 Claude-агентов работали параллельно, а счёт за API вышел на ~$165 000 (5,9 млрд токенов).
Результат: бинарник похудел примерно на 20%, попутно исправили 128 багов, утечки памяти в Bun.build [15]() упали с 6 745 MB до 609 MB — более чем в 11 раз, — и тесты прошли на 100% на всех платформах.
Причина переписывания прозаична: в Zig-версии нашли 13 уязвимостей памяти (use-after-free, double-free, утечки), а Rust ловит такие вещи на уровне компилятора. Прежде чем стать production-версией в v1.4, переписанный код три месяца обкатывался внутри самого Bun, в том числе в Claude Code.
Bun был приобретен Anthropic [3] и теперь используется как основа для Claude Code и Claude Agent SDK. Bun остаётся open source под MIT-лицензией.
Встроенная обработка изображений [14], 7x быстрее альтернатив:
import { Image } from "bun";
const img = new Image(await Bun.file("photo.jpg").arrayBuffer());
const resized = await img.resize(800, 600);
const webp = await resized.webp();
Поддержка: JPEG, PNG, WebP, GIF, BMP, HEIC, AVIF.
Headless браузер [16] без Puppeteer и Playwright:
const webview = await Bun.WebView.open("https://example.com");
const screenshot = await webview.screenshot();
await webview.close();
Встроенный планировщик задач [17]:
import { cron } from "bun";
cron("0 * * * *", () => { console.log("Каждый час");
});
Встроенный SQL-клиент без внешних зависимостей:
import { sql } from "bun";
const users = await sql`SELECT * FROM users WHERE id = ${userId}`;
Поддержка: PostgreSQL, MySQL, MariaDB, SQLite.
bun ./README.md # рендерит markdown в терминале
Программный markdown-парсер [2] — рендер в HTML, React или собственный формат:
import { markdown } from "bun";
const html = markdown.toHTML("# Привет, **Bun**!");
const react = markdown.toReact("- одинn- два");
Создание и распаковка архивов [2] без tar/node-tar:
import { Archive } from "bun";
const archive = new Archive();
await archive.add("dist/", { recursive: true });
await archive.write("release.tar.gz");
await Archive.extract("release.tar.gz", { to: "./out" });
Встроенные парсеры форматов [2] — ещё 15 npm-зависимостей стали не нужны:
import { JSON5, JSONC, XML, TOML } from "bun";
JSON5.parse("{ unquoted: 'ok', trailing: 1, }");
JSONC.parse("{ /* comment */ "a": 1 }");
XML.parse("<root><item>1</item></root>");
TOML.parse("[server]nport = 8080");
Bun.serve({ port: 443, tls: { /* ... */ }, // HTTP/3 включается автоматически с TLS fetch(req) { return new Response("Hello HTTP/3!"); },
});
В v1.4 экспериментальная поддержка HTTP/2 и HTTP/3 добавлена и в клиентский fetch() [2]:
await fetch("https://example.com", { protocol: "http3" });
bun test --parallel # параллельное выполнение
bun test --isolate # изоляция тестов
bun test --shard=1/4 # шардинг для CI
bun test --changed # только измененные тесты
bun test --timings # шардинг по реальному времени выполнения (v1.4)
bun build ./app.ts --compile --target=browser
# Результат: один .html файл
bun build ./app.ts --compile --asset ./data.db
# Встраивает файл в скомпилированный бинарник (v1.4)
Новые команды [2] для обслуживания зависимостей:
bun audit fix # автоматически патчит уязвимости
bun dedupe # убирает дублирующиеся версии из lockfile
bun prune # удаляет неиспользуемые пакеты
bun pm diff # сравнивает версии пакетов
bun pm licenses # отчёт по лицензиям зависимостей
Встроенный React Compiler [2] — в 19 раз быстрее babel-плагина — плюс tree-shaking barrel-файлов, markdown-отчёты о бандле и поддержка стандартных TC39-декораторов:
bun build ./app.tsx --react-compiler
bun build ./app.ts --metafile-md=report.md
bun --cpu-prof-md ./app.ts # markdown-отчёт профилирования CPU
bun --heap-prof-md ./app.ts # markdown-отчёт по куче
bun run --parallel "build:*" # параллельный запуск нескольких скриптов
process.on("memoryPressure", (level) => { console.log("ОС сообщает о нехватке памяти:", level);
});
|
Метрика |
Bun v1.4 |
Node.js v26 |
Deno v2.5 |
|---|---|---|---|
|
Cold start (Linux) |
~5.1ms [2] |
~19ms |
~18ms |
|
HTTP throughput |
290k req/s |
71k req/s |
~75k req/s |
|
Установка пакетов |
4.2s |
38s (npm) |
35s |
|
Сборка 50k строк |
1.1s |
– |
– |
По данным Bun [2], переход Rust-версии в production дал заметный прирост в реальных сценариях:
|
Метрика |
v1.3 (Zig) |
v1.4 (Rust) |
Изменение |
|---|---|---|---|
|
Старт на Linux |
10.9ms |
5.1ms |
−50% |
|
Старт на Windows |
39.0ms |
15.5ms |
в 2.5 раза быстрее |
|
Простой CPU |
база |
−5x |
|
|
Размер бинарника (Linux/Windows) |
база |
−17% |
|
|
|
база |
до 4.6x быстрее |
|
|
Регулярные выражения |
база |
138–200x быстрее |
|
|
FFI-вызовы ( |
база |
3x быстрее |
|
Память HTTP-серверов под нагрузкой на 1M запросов:
|
Фреймворк |
v1.3 |
v1.4 |
Снижение |
|---|---|---|---|
|
Fastify |
233 MB |
120 MB |
−48% |
|
Express |
169 MB |
92 MB |
−46% |
|
|
135 MB |
81 MB |
−40% |
В продакшене Claude Code, который уже несколько месяцев работал на Rust-версии, p99 использования CPU снизился с 24% до 10%, а p50 — с 5.8% до 2.5%.
|
Сценарий |
npm v12 |
pnpm v11 |
bun v1.3 |
|---|---|---|---|
|
Чистая установка |
40s |
15s |
7s |
|
С кэшем |
18s |
5.5s |
2.5s |
|
Монорепо |
110s |
22s |
12s |
На тестовом Next.js-приложении (T3 stack) Bun v1.4 [2] устанавливает зависимости ещё быстрее: первая установка — 1.41s (в 15 раз быстрее npm), свежий чекаут с кэшем — 251ms (в 30 раз быстрее), CI без кэша — 951ms (в 19 раз быстрее), CI с кэшем — 210ms (в 21 раз быстрее).
Бери не глядя: локальную разработку и CLI-инструменты, новые проекты на TypeScript/JSX, CI/CD (5-8x на установке зависимостей, местами в v1.4 и все 20-30x) и full-stack приложения со встроенным SQL. Windows-разработка тоже сюда — включая ARM64, который теперь официально поддерживается и стартует в v1.4 в 2.5 раза быстрее.
С осторожностью: HTTP/3 в Bun.serve() и fetch() пока экспериментальный, в прод его тащить рано. Совместимость с нативными N-API-модулями в v1.4 подросла заметно, но процент прохождения тестов — не гарантия для конкретного модуля в конкретном проекте, тестировать всё равно придётся руками. Cold start сократился в разы, что хорошо для serverless, но насколько именно — зависит от платформы, а не только от рантайма. Для приложений с жёсткими лимитами памяти Bun остаётся менее предсказуемым выбором, чем Node.
Идея Bun — не добавить ещё один инструмент в node_modules, а убрать из него как можно больше. К v1.4 Bun заменил нативными реализациями уже 15+ популярных npm-зависимостей [2] — вместо десятков пакетов в package.json можно обойтись одним рантаймом:
|
Задача |
Типичные npm-пакеты |
Нативная замена в Bun |
С какой версии |
|---|---|---|---|
|
Обработка изображений |
|
|
v1.3.14 |
|
Headless-браузер |
|
|
v1.3.12 |
|
SQL-клиент |
|
|
v1.3 |
|
Cron-задачи |
|
|
v1.3.12 |
|
Псевдотерминал |
|
|
v1.3.14 |
|
Markdown-рендер |
|
|
v1.4 |
|
Архивы |
|
|
v1.4 |
|
JSON5 |
|
|
v1.4 |
|
JSON с комментариями |
|
|
v1.4 |
|
XML |
|
|
v1.4 |
|
TOML |
|
|
v1.4 |
|
Тест-раннер |
|
|
v1.3–1.4 |
|
Бандлер |
|
|
встроено |
|
React Compiler |
|
|
v1.4 |
|
Менеджер пакетов |
|
|
встроено |
|
Проверка лицензий |
|
|
v1.4 |
|
Дедупликация зависимостей |
ручной |
|
v1.4 |
|
Поиск неиспользуемых пакетов |
|
|
v1.4 |
|
Патчинг уязвимостей |
|
|
v1.4 |
|
Автоперезапуск |
|
|
встроено |
|
Параллельные скрипты |
|
|
v1.4 |
|
Переменные окружения |
|
встроенная поддержка |
встроено |
|
Запуск TypeScript |
|
|
встроено |
Не все замены drop-in — специфичные webpack-лоадеры или продвинутые Puppeteer-сценарии никуда не денутся, и сторонний пакет там останется нужен. Но для типового full-stack TypeScript-проекта в 2026 году package.json реально можно ужать в разы, оставив bun практически единственной зависимостью.
Ссылки:
Официальный сайт Bun [18]
GitHub [19]
Документация [20]
Автор: tertiumnon
Источник [21]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/34714
URLs in this post:
[1] Переписывание на Rust: https://bun.com/blog/bun-in-rust
[2] вышел Bun v1.4: https://bun.com/blog/bun-v1.4
[3] приобретения в декабре 2025: https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone
[4] Основные функции: https://tertiumnon.github.io/#%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8
[5] Быстрый старт: https://tertiumnon.github.io/#%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82
[6] Главные события 2026: https://tertiumnon.github.io/#%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B5-%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F-2026
[7] Новые API и фичи: https://tertiumnon.github.io/#%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-api-%D0%B8-%D1%84%D0%B8%D1%87%D0%B8
[8] Производительность: https://tertiumnon.github.io/#%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C
[9] Итог: какие npm-пакеты больше не нужны: https://tertiumnon.github.io/#%D0%B8%D1%82%D0%BE%D0%B3-%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-npm-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D1%8B-%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5-%D0%BD%D0%B5-%D0%BD%D1%83%D0%B6%D0%BD%D1%8B
[10] Node.js v24: https://nodejs.org/api/typescript.html
[11] поведением: http://www.braintools.ru/article/9372
[12] память: http://www.braintools.ru/article/4140
[13] раскритиковала AI-driven переписывание: https://grigio.org/bun-1-4-the-controversial-ai-driven-rewrite-from-zig-to-rust/
[14] Bun v1.3.14: https://bun.com/blog/bun-v1.3.14
[15] Bun.build: http://Bun.build
[16] Headless браузер: https://bun.com/docs/runtime/webview
[17] Встроенный планировщик задач: https://bun.com/blog/bun-v1.3.12
[18] Официальный сайт Bun: https://bun.sh
[19] GitHub: https://github.com/oven-sh/bun
[20] Документация: https://bun.com/docs
[21] Источник: https://habr.com/ru/articles/1072980/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1072980
Нажмите здесь для печати.