Bun

Bun v1.0.11


Jarred Sumner · 2023 年 11 月 8 日

Bun v1.0.11 修復了 5 個錯誤,新增了 Bun.semver,修復了 bun install 中的一個錯誤,並修復了影響 astro@google-cloud/storage 的錯誤

Bun 是一個極速的 JavaScript 執行環境、打包器、轉譯器和套件管理器 —All-in-one。如果您錯過了,這裡列出 Bun 最近的一些變更

  • v1.0.0 - 首次穩定版本發布!
  • v1.0.1 - .json 和 .toml 檔案的具名導入,修復了 bun installnode:pathBuffer
  • v1.0.2 - 讓 --watch 更快以及大量的錯誤修復
  • v1.0.3 - emitDecoratorMetadata 和 Nest.js 支援,修復了私有 registry 以及更多問題
  • v1.0.4 - server.requestIP、runtime plugins 中的虛擬模組以及更多
  • v1.0.5 - 修復了 fetch() 的記憶體洩漏,node:crypto 模組中的 KeyObject 支援,bun:test 中的 expect().toEqualIgnoringWhitespace 以及更多
  • v1.0.6 - 修復了 3 個錯誤 (解決了 85 個 👍 反應),實作了 package.json 中的 overrides & resolutions,並修復了影響 Docker 使用 Bun 的回歸問題
  • v1.0.7 - 修復了 59 個錯誤 (解決了 78 個 👍 反應),實作了 bun install 中的可選 peer dependencies,並改進了 Node.js 相容性。
  • v1.0.8 - 修復了 138 個錯誤 (解決了 257 個 👍 反應),使 require() 減少使用 30% 的記憶體,為 bun test 新增了模組模擬,修復了更多 bun install 錯誤
  • v1.0.9 - 修復了 glibc 符號版本錯誤、非法指令錯誤、Bun.spawn 錯誤、peer dependency 安裝的邊緣情況以及 JSX 轉譯器錯誤修復
  • v1.0.10 - 修復了 14 個錯誤 (解決了 102 個 👍 反應),node:http 速度提升了 14%,Bun for Linux ARM64 的穩定性改進,bun install 錯誤修復和 node:http 錯誤修復

安裝 Bun

curl
npm
brew
docker
curl
curl -fsSL https://bun.dev.org.tw/install | bash
npm
npm install -g 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

Bun.semver 是一個快速內建的 SemVer 解析器

bun install 的快速 node-semver 相容解析器現在作為內建 Bun API 提供:Bun.semver

import { semver } from "bun";

semver.satisfies("1.0.0", "^1.0.0"); // true
semver.satisfies("1.0.0", "^2.0.0"); // false

const versions = ["2.1.0", "1.0.0", "1.0.1", "1.1.0", "2.0.0", "2.0.1"];
versions.sort(semver.compare); // ["1.0.0", "1.0.1", "1.1.0", "2.0.0", "2.0.1", "2.1.0"]

它比 node-semver 快 20 倍,並通過了 node-semver 的測試套件。

已修復:Semver 排序錯誤與 build tags

先前,當存在包含 . 字元的多個區段的 build tags 時,Bun 會錯誤地排序 semver 版本。這已修復,感謝 @dylan-conway

已修復:=v 前綴在 package.json 版本中

先前,Bun 僅支援 dependency 版本中的 =v 前綴,但不支援 package.json 版本中的前綴。這已修復,感謝 @dylan-conway

已修復:列印例外時的潛在崩潰

自 Bun v0.1.0 之前就存在的崩潰問題已修復。當顯示導致例外的原始碼預覽時,有時 Bun 會崩潰。這已修復。

已修復:TLS 握手錯誤處理問題

Bun.serve 中的一個錯誤,可能導致 Bun 最終不再回應使用用戶端憑證的傳入請求,已修復,感謝 @cirospaciari

影響 @google-cloud/storage 的一個錯誤已修復

一個 Node.js 相容性錯誤導致 @google-cloud/storage 無法如預期般運作。

使用 DEBUG="*",它會印出像這樣的訊息

  retry-request Current retry attempt: 1 +0ms
  retry-request Next retry delay: 2351 +221ms
  retry-request Current retry attempt: 2 +2s
  retry-request Next retry delay: 4143 +150ms
  retry-request Current retry attempt: 3 +4s
  retry-request Next retry delay: 8135 +185ms
  retry-request Current retry attempt: 4 +8s
TypeError: undefined is not an object

這已修復。它不再發生錯誤,也不再錯誤地重試 (這會導致它花費很長時間才失敗)。

影響 Astro 的一個錯誤已修復

一個 Node.js 相容性錯誤導致在 v1.0.10 中使用 Bun 時,astro dev 返回「找不到檔案」錯誤。這已修復。我們很快會新增一個執行 Astro 的整合測試,以防止再次發生這種情況。

完整變更日誌:bun-v1.0.10...bun-v1.0.11