Bun 是主打效能的 JavaScript 與 TypeScript 一體化工具鏈,在 GitHub 累積 96,166 顆星標與 5,100 次複製,其 1.4 版已將核心由 Zig 全面改寫為 Rust,並把十五個常見相依套件內建為標準函式庫。1.4.0 版於 2026 年 8 月 20 日發布,最新修補版本為 1.4.2,專案以 Rust 為主要開發語言,Bun 本體採 MIT 授權。本文將從官方儲存庫與發布說明出發,分析這次改寫的技術脈絡、效能數據與生態影響。

Bun 的 GitHub 儲存庫 README 開頭,顯示 Bun 標誌、`bun` 安裝指令,以及「Bun is an all-in-one toolkit for JavaScript and TypeScript apps」的定位說明

Bun 是什麼?

Bun 是一體化的 JavaScript 與 TypeScript 工具鏈,整合執行環境、套件管理器、打包器與測試框架,以 Rust 撰寫,GitHub 星標逾 96,000。

Bun 的定位是「一個執行檔取代整條工具鏈」。傳統 JavaScript 專案通常需要 Node.js 執行環境、npm 套件管理器、打包器與測試框架各司其職,Bun 則把這四項能力整合進單一二進位檔,開發者安裝後即可直接執行 TypeScript 與 JSX,無須額外編譯設定。

專案由 Oven 團隊主導,儲存庫建立於 2021 年 4 月,其核心執行環境以 JavaScriptCore 為引擎,而非 Node.js 所採用的 V8。這項選擇讓 Bun 在啟動時間與記憶體佔用上取得優勢,同時透過相容層支援 Node.js 的模組系統與 API,官方將其描述為 Node.js 的「可直接替換」方案。

目標受眾涵蓋全端開發者、工具鏈維護者與需要部署大量短生命週期服務的團隊。由於 Bun 同時提供無伺服器部署指引與單一執行檔打包能力,對重視部署體積與冷啟動延遲的應用場景具吸引力。

Bun 的 GitHub 儲存庫首頁頂部,顯示儲存庫名稱 oven-sh/bun、Star 數 96.2k、Fork 數 5.1k,以及專案描述「Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one」

Bun 1.4 為何改用 Rust 重寫?

Bun 1.4 將核心由 Zig 改寫為 Rust,並重寫 HTTP 等模組。團隊藉 Rust 換取記憶體回收效率與並行安全,Claude Code 已採用該 Rust 版本數月。

語言改寫是 1.4 版最受矚目的變化。官方指出,這是首個以 Rust 撰寫的正式版本,早在此前,Anthropic 的 Claude Code 已在生產環境使用 Bun 的 Rust 移植版本數月,Prisma 亦在其運算平台上採用該版本。這意味改寫並非實驗性質,而是經過實際負載驗證後的架構轉換。

改寫的動機與記憶體管理直接相關。官方將 JavaScriptCore 的記憶體配置器由原本的 libpas 換為 mimalloc,並為其加入局部頁面清除、閒置時釋放記憶體的回收執行緒與延遲歸零等機制。這些調整針對長時間執行服務的記憶體回收效率,也是後續記憶體與 CPU 數據改善的技術基礎。

除核心語言外,HTTP 堆疊亦同步重寫。團隊在發布說明中列出多個模組的相容性進展,並指出這次版本修復超過 2,900 個問題,是自 1.0 版以來規模最大的相容性推進。

Bun 1.4 的效能改善有多少?

1.4 版閒置 CPU 用量降低約五倍,HTTP 伺服器記憶體較 1.3 減少 13% 至 48%,Linux 啟動快一倍,執行檔最多縮小 17%。

CPU 與記憶體是這次改版最明確的收益。官方以 Claude Code 為例,指出其生產環境 CPU 用量的 p99 由 24% 降至 10%,p50 由 5.8% 降至 2.5%;對一個僅輸出問候訊息的程式,閒置 CPU 用量降低約五倍。記憶體方面,使用 HTTP 伺服器的應用可望減少 13% 至 48% 的用量。

官方公布的對照數據涵蓋多個常見框架。在以百萬次請求壓測的條件下,Fastify 的峰值記憶體由 233 MB 降至 120 MB,Express 由 169 MB 降至 92 MB,Next.js 由 397 MB 降至 285 MB,Vite 開發伺服器則由 268 MB 降至 233 MB。同一份測試亦顯示 Node.js 26 的對應數值,Bun 1.4 在多數項目低於 Node.js。

啟動時間與執行檔體積同步改善。Linux 上執行最小程式由 10.9 毫秒縮短至 5.1 毫秒,Windows 由 39.0 毫秒縮短至 15.5 毫秒;Linux x64 與 Windows x64 的執行檔分別由 88.5 MB、93.9 MB 縮小至 77.0 MB 與 84.8 MB,macOS 版本則略增約 1 MB。

Bun 1.4 新增了哪些內建模組?

1.4 版內建 Bun.Image、Bun.WebView、Bun.markdown、Bun.Terminal 與 Bun.cron(),把常見套件收進標準函式庫。

這版把十五個常見套件收進標準函式庫。官方以動畫對照呈現:過去需安裝 sharp、puppeteer、marked、node-cron、node-pty 等相依套件,1.4 版分別以 Bun.Image、Bun.WebView、Bun.markdown、Bun.cron()、Bun.Terminal 取代,且隨二進位檔一併提供,無須安裝步驟、原生編譯或寫入鎖定檔。

Bun.Image 提供解碼、縮放、旋轉與編碼能力,支援 JPEG、PNG、WebP、GIF 與 BMP,API 設計貼近 sharp。官方稱在 1080p PNG 縮放至 400×400 JPEG 的情境下,速度為 sharp 的 1.38 倍,且無須原生外掛;ICC 色彩描述檔在轉碼後仍可保留。

Bun.WebView 則把無頭瀏覽器自動化內建。開發者可以數行非同步程式完成導覽、點擊、執行 JavaScript 與截圖,點擊與捲動皆為受信任的實際輸入事件;在 macOS 上使用系統 WebKit,亦可驅動已安裝的 Chrome、Chromium 或 Edge。此外尚有 Bun.markdown、Bun.Terminal 與 Bun.cron() 等模組,分別對應 Markdown 解析、原生終端機與排程工作。

Bun 1.4 的 Node.js 相容性進展如何?

1.4 版新增 1,517 項 Node.js 測試案例,node:events 與 node:sqlite 全數通過,node:http、node:fs 等模組通過率達 97%。

相容性測試是衡量 Bun 成熟度的關鍵指標。官方將 Node.js 測試套件納入每次提交的驗證流程,1.4 版新增 1,517 項通過案例,是自 1.0 版以來最大幅度的相容性進展。其中 node:quic 通過率達 99%,node:events、node:trace_events 與 node:sqlite 為 100%,node:http、node:fs、node:cluster、node:timers、node:zlib、node:vm 與 node:stream 等模組則達 97%。

生態套件的相容範圍亦同步擴大。官方列出 Nuxt、testcontainers、TypeORM、nock、Fastify 的 inject 機制與 happy-dom 等多個套件已可在 Bun 上運作,Playwright、vitest、OpenTelemetry 與 dd-trace 亦已支援。此外,worker_threads 的資源上限與輸出串流選項、ws 的升級事件,以及伺服器端 STARTTLS 等介面亦已補齊。

官方同時強調相容性仍在推進。發布說明明確指出 Bun 尚未與 Node.js 完全相容,並提供可追蹤測試進度的頁面,供開發者在導入前評估自身相依套件的覆蓋情形。

如何快速開始使用 Bun?

可透過官方安裝指令碼、npm、Homebrew 或 Docker 安裝,於終端機執行 bun run 即可運行 TypeScript,並以 bun install 取代 npm。

安裝路徑相當精簡。Linux 與 macOS 使用者可執行官方安裝指令碼,Windows 可使用 PowerShell 安裝指令,亦支援 npm 全域安裝、Homebrew 與 Docker 映像等管道;安裝完成後於終端機輸入 bun run 即可執行 TypeScript 檔案。

套件管理是導入時最直接的效益。官方在 T3 技術棧的 Next.js 應用上進行六種情境的對照,首次安裝耗時 1.41 秒,較 npm 的 18.1 秒快約十五倍,且峰值記憶體由 503 MB 降至 376 MB;在相依套件無變動的情境下,重新安裝由 337 毫秒縮短至 12 毫秒。啟用隔離式連結器後,專案改以全域虛擬儲存區共用套件,官方稱常見 CI 路徑可再快約七倍。

觀測與診斷工具亦已內建。1.4 版新增以 Markdown 輸出 CPU 與堆積剖析結果的選項,開發者可直接於終端機檢視熱點函式與呼叫樹,或透過環境變數為無法傳入參數的行程啟用剖析,便於在遠端環境排查效能問題。

Bun 與 Node.js、Deno 的差異在哪裡?

Bun 以單一執行檔整合執行環境、套件管理器、打包器與測試框架,並以速度為主要訴求;Node.js 生態最成熟,Deno 則以權限沙箱與標準相容為特色。

三者的差異首先在整合程度。Node.js 作為生態系基石,核心僅提供執行環境,其餘能力需仰賴社群套件補足,優勢是模組數量與長期支援最完整;Bun 則把常用工具鏈收斂為單一執行檔,減少設定與安裝步驟,代價是部分冷門原生模組仍需時間補齊。

效能取向是 Bun 的主要賣點。官方公布的啟動時間、記憶體與套件安裝數據均以 Node.js 為對照基準,1.4 版在 HTTP 串流處理的吞吐量測試中亦高於 Node.js 與 Deno。對冷啟動敏感的無伺服器函式與容器化服務,這類差異會直接反映在成本上。

Deno 的定位則偏向安全與標準。其以權限旗標控制檔案、網路與環境變數存取,並原生支援 TypeScript 與網頁標準 API;Bun 同樣支援 TypeScript,但權限模型不如 Deno 嚴格。團隊選擇時,通常需在生態成熟度、執行效能與安全邊界之間取得平衡。

Bun 的統計數據與授權條件為何?

專案累積 96,166 顆星標與 5,100 次複製,主要語言為 Rust,Bun 本體採 MIT 授權,靜態連結的 WebKit 元件為 LGPL-2。

96,166Stars
5,100Forks
MITLicense
RustLanguage
1.4.2Latest
2021Created

Bun 的 GitHub 儲存庫貢獻者與提交統計頁面,顯示每週提交活躍度與長期貢獻者分佈

授權條件對商用採用相當關鍵。官方文件說明,Bun 本體採 MIT 授權,可自由用於商業產品;但其靜態連結的 JavaScriptCore 與 WebKit 元件採 LGPL-2 授權,依該條款,散布時須提供對應的函式庫原始碼或替換機制。企業在打包發行前,應就這項混合授權安排進行合規確認。

技術組成反映改寫的規模。儲存庫語言統計顯示 Rust 佔約五千一百萬位元組,C++ 約一千二百萬位元組,TypeScript 約六百四十萬位元組,其餘為 C、JavaScript 與少量指令碼。目前專案累積約 9,400 個未結議題,社群參與度維持高檔。

最新版本為 1.4.2,於 2026 年 9 月 5 日發布,緊接在 1.4.0 與 1.4.1 之後,主要處理改版後的修補事項。專案於 2026 年 10 月上旬仍有提交紀錄,維護節奏穩定。

出處連結有哪些?

本文資訊整理自 oven-sh/bun 的 GitHub 儲存庫、Bun 官方網站與 1.4 版發布說明,涵蓋架構變化、效能數據、內建模組與授權條件。

  • GitHub 儲存庫:https://github.com/oven-sh/bun
  • 官方網站:https://bun.com
  • 1.4 版發布說明:https://bun.com/blog/bun-v1.4
  • 官方文件:https://bun.com/docs
  • 授權說明:https://bun.com/docs/project/license

總結:Bun 適合什麼團隊?

Bun 適合追求安裝與啟動速度、並希望以單一工具取代多套工具鏈的團隊;若專案依賴特定 Node.js 原生模組,導入前仍應先驗證相容性。

Bun 1.4 的意義在於把「速度」從行銷訴求轉為可量測的工程成果。語言由 Zig 改寫為 Rust 後,CPU、記憶體與啟動時間的數據同步改善,同時把十五個常見相依套件內建,讓工具鏈的安裝與維護成本明顯下降;Node.js 相容測試新增逾一千五百項,也降低了既有專案的遷移風險。

導入時仍應以相容性為前提。官方坦言尚未達成完全相容,若專案高度依賴原生外掛或冷門模組,建議先在測試環境驗證,再逐步替換套件管理器與執行環境,而非一次全面切換。對以速度為核心訴求、且相依套件覆蓋良好的新專案而言,Bun 1.4 已是值得納入評估的選項。