Bun

Bun v1.1.3


Jarred Sumner · 2024年4月8日

Bun 是一個速度驚人的 JavaScript 執行環境、打包器、轉譯器和套件管理器 — 功能All-in-one。

Bun v1.1.3 修復了 5 個錯誤。bun install 在 Windows 上速度提升了 50%。已修復在極少數情況下可能導致 bun install 掛起的錯誤。已修復 bun install 中的某些錯誤不會產生非零退出代碼的錯誤。已修復可能導致特定依賴組合安裝失敗的錯誤。已修復 Windows 上在 cmd.exe 上退出 bun 後,CTRL + C 行為異常的錯誤。已修復 Windows 上讀取目錄時缺少權限可能導致崩潰的錯誤。

先前的版本

  • v1.1.2 Bun v1.1.2 修復了 4 個錯誤(解決了 44 個 👍 表情符號反應)。已修復 Windows 上 vite dev、next dev 和儲存 bun.lockb 時的 EBUSY 錯誤。Bun Shell 獲得了對 seq、yes、basename 和 dirname 的支援。已修復 TypeScript 解析的邊緣案例。已修復導致「無法訪問的程式碼」錯誤的錯誤。已重寫 Windows 上的 fs.watch 以提高效能和可靠性。
  • v1.1.1 Bun v1.1.1 修復了 20 個錯誤(解決了 60 個 👍 表情符號反應)。新增子 shell 和位置引數支援。錯誤中列印的原始碼不再填滿您的終端機。升級了 JavaScriptCore,其中包括 RegExp、類型化陣列、String indexOf 和 String replace 的效能改進。錯誤物件和 JIT 編譯的函式呼叫佔用更少的記憶體。修復了 Windows 上 bun install 的多個錯誤。修復了 Windows 上 Bun.serve() 的錯誤。修復了 TOML 解析器錯誤,該錯誤會影響 .toml 檔案中的跳脫序列和 Windows 路徑。
  • v1.1.0 Bundows。Windows 支援來了!此外,還有 JSON IPC Node <-> Bun。

安裝 Bun

curl
npm
powershell
scoop
brew
docker
curl
curl -fsSL https://bun.dev.org.tw/install | bash
npm
npm install -g bun
powershell
powershell -c "irm bun.sh/install.ps1|iex"
scoop
scoop install bun
brew
brew tap oven-sh/bun
brew install bun
docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

升級 Bun

bun upgrade

Windows 支援改進

Windows 上 bun install 速度提升高達 50%

在此版本中,與 Bun v1.1.2 及更早版本相比,bun install 在 Windows 上安裝套件的速度提高了高達 50%。

對於 package.json 中包含 next、SvelteKit 和更多內容的應用程式

PS > hyperfine "bun install --ignore-scripts" "bun-1.1.2.exe install --ignore-scripts" --prepare="rm -r node_modules || true" --warmup=2

Benchmark 1: bun install --ignore-scripts # New
  Time (mean ± σ):     720.7 ms ±  39.8 ms    [User: 20.3 ms, System: 423.4 ms]
  Range (min … max):   676.4 ms … 801.9 ms    10 runs

Benchmark 2: bun-1.1.2.exe install --ignore-scripts # Old
  Time (mean ± σ):      1.158 s ±  0.017 s    [User: 0.011 s, System: 0.419 s]
  Range (min … max):    1.135 s …  1.180 s    10 runs

Summary
  bun install --ignore-scripts ran
    1.61 ± 0.09 times faster than bun-1.1.2.exe install --ignore-scripts

我們已經平行處理了 bun install 在 Windows 上複製/硬連結檔案的部分位置,但並非全部。

Windows 版 Bun 仍然使用 ReleaseSafe 模式編譯,該模式新增了執行階段安全檢查,可能會導致一些效能問題。一旦關於 Bundows 的錯誤報告減少,我們將切換到 ReleaseFast 模式。

已修復:退出 bun 後 cmd.exe 上的 CTRL + C

cmd.exe 和 PowerShell 之間的一個區別是主控台模式。退出時,PowerShell 始終會重設主控台模式。命令提示字元 (cmd.exe) 則不會。

先前,bun 在退出時沒有重設主控台模式。這會導致在退出 bun 後在命令提示字元中按向上或向下箭頭時出現問題。

此問題已修復。

已修復:載入沒有權限的模組時可能發生的崩潰

已修復當 JavaScript 或 TypeScript 檔案不可讀時可能導致載入該檔案崩潰的錯誤。

此錯誤是由於在權限不可訪問時假設其可訪問造成的。

bun install 改進

已修復:虛假的「安裝失敗」錯誤

當安裝具有巢狀 node_modules 資料夾的套件時,如果父套件需要與許多更細微的條件一起下載,bun install 有時會失敗並顯示「安裝失敗」錯誤。

此問題已修復。

已修復:錯誤後非零退出代碼

bun install 中的某些錯誤不會導致 bun 以非零退出代碼退出。此問題已修復。

大多數會發生這種情況的錯誤都與檔案系統權限有關。

已修復:bun install 中可能發生的死鎖

已修復 bun install 中罕見的死鎖。當許多套件在完全相同的時間完成提取,並且由於某種原因主執行緒在收到通知時沒有喚醒時,可能會發生這種情況。

感謝 5 位貢獻者!