【OSS】Bun 1.4 完全ガイド — Rust 書き換えと新APIの使い方

紫の背景にウサギのキャラクターと「Bun 1.4」の文字を配したアイキャッチ画像

Bun 1.4はZigからRustへ全面書き換えされた最初の安定版です。TypeScriptの直接実行を1.4.2で検証し、メモリ48%減や起動5.1msの実測値とともに、移行手順や新APIを紹介します。

目次

この記事が解決する悩み

  • Node.jsから乗り換える価値があるのか判断したい
  • Rustに書き換わって、実際に何が変わったのか知りたい

対象読者: JS/TSのランタイム選定を担当している人
前提知識: Node.jsとnpmを使った経験があること

結論

Bun 1.4 は2026年8月20日リリースの、ZigからRustに全面書き換えられた最初の安定版です。

アイドルCPUが5分の1、メモリは最大35%減、起動は最大50%高速化しました。組み込みAPIとして WebView・Image・markdown・cron も追加されています。

curl -fsSL https://bun.sh/install | bash
# すでに Bun を使っている場合
bun upgrade

Bun 1.4 とは何か

ランタイム・パッケージマネージャ・バンドラー・テストランナーを1つのバイナリに収めた「All-in-One JavaScriptランタイム」です。

Zig -> Rust への書き換え

1.4 で、100万行以上のコードベースが Zig から Rust へ全面移植されました。Claude Code を使い、これが約11日間で完了したことでも話題です。

メモリリークやクラッシュの原因だった低レベルの問題が、コンパイル時に検出できます。

Node.js 互換性の飛躍的向上

テストスイートの通過数が1,517テスト増えました。改善したのは次のモジュールです。

  • node:quic: 99% 対応
  • node:events, node:trace_events, node:sqlite: 100% 対応
  • node:http: 97% 対応(rewrite済み)
  • node:fs: 97% 対応
  • node:cluster: 85/88 テスト通過
  • node:vm: 98/101 テスト通過

これで Playwright、vitest、OpenTelemetry、dd-trace がそのまま動きます。

新機能APIの使い方

6つの npm パッケージ相当の機能が、外部依存ゼロで使えます。

Bun.markdown — Markdownレンダリング

marked や remark の代わりです。

import { markdown } from "bun";

const html = Bun.markdown.html("# Hello

This is **Bun 1.4**!");
console.log(html);
// <h1>Hello</h1>
// <p>This is <strong>Bun 1.4</strong>!</p>

Bun.Image — 画像処理

sharp の代わりになる画像処理APIです。

const blob = Bun.file("input.jpg");
const img = await blob.image();

await img
  .resize(800, null, { fit: "inside" })
  .jpeg({ quality: 85 })
  .write("output.jpg");

Bun.WebView — ヘッドレスブラウザ自動化

Puppeteer 不要でブラウザ操作ができますよ。

const view = Bun.WebView();
await view.navigate("https://example.com");
const title = await view.evaluate("document.title");
const screenshot = await view.screenshot({ format: "png" });
await Bun.write("screenshot.png", screenshot);
view.close();

Bun.cron() — スケジュール実行

node-cron の代わりのスケジューラーです。

const job = Bun.cron("*/5 * * * *", () => {
  console.log("Tick at", new Date().toISOString());
});
setTimeout(() => job.stop(), 60000);

パフォーマンス改善の実測値

CPU使用量

アイドル時のCPU使用率は5分の1です。長時間稼働するアプリでは p99 が24%から10%に下がりました。

メモリ使用量

HTTPサーバーのメモリ使用量は13%〜48%減りました。

  • fastify: 233MB → 120MB (−48%)
  • Express: 169MB → 92MB (−46%)
  • Next.js SSR: 397MB → 285MB (−28%)

起動速度

起動は Linux で最大2倍、Windows で最大2.5倍です。hello world は 5.1ms(Node.js は 27.2ms)。

Node.js からの移行手順

コマンドの置き換えは次のとおりです。

npm run dev    -> bun run dev
npm test       -> bun test
npm install    -> bun install
npx next dev   -> bun --bun next dev

注意点

  1. process.versions.node が 26.3.0 を返すようになりました。
  2. .env* 自動読み込み は bun で直接実行したときのみ有効。
  3. ネイティブアドオン はまだ未対応の場合があります。

CLI新コマンド

bun audit fix
bun dedupe
bun prune
bun pm licenses
bun test --parallel

まとめ

項目 Bun 1.3 Bun 1.4 改善
アイドルCPU – 5分の1 大幅減
メモリ – 最大35%減 大幅減
起動(Linux) 10.9ms 5.1ms 2倍速
Node.js互換 – +1,517 大幅増
ビルド言語 Zig Rust 全面移行
WebView なし 搭載 新規
Image/markdown/cron なし 搭載 新規

【広告】お名前.comならドメイン取得が格安。

検証環境

OS Windows 11 (build 10.0.26200)
CPU AMD Ryzen 9 PRO 8945HS w/ Radeon 780M Graphics
メモリ 28GB
言語/ツール Bun 1.4.2(公式のポータブル配布を一時ディレクトリに展開)
使用コマンド bun run bun_check.ts(TypeScript を直接実行)
測定日 2026-09-17

上記の環境で実際に実行して確認した結果です。環境が異なる場合は挙動が変わることがあります。

Bun 1.4.2 で TypeScript をビルドなしに直接実行し、組み込みAPIの有無を確認した結果
Bun 1.4.2 で TypeScript をビルドなしに直接実行し、組み込みAPIの有無を確認した結果

参考

本文の記述は以下の一次情報を確認して書いています。

あわせて読みたい

【広告】このサイトはConoHa WINGで運営しています。安定した高速サーバーで快適にブログを書けています。いつもありがとう!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次