Bun

Bun v0.5.6


Ashcon Partovi · 2023年2月9日

Bun v0.5.6 引入了 Bun.sleep,改進了 Docker 支援,並對 Node.js 和 npm 相容性進行了各種改進。

# Install using curl
curl -fsSL https://bun.dev.org.tw/install | bash

# Install using npm
npm install -g bun

# Install using Docker (New!)
docker pull oven/bun:latest

# Upgrade
bun upgrade

Bun.sleep

Bun 現在支援 Bun.sleep()。這提供了一個快速簡便的 API 來延遲執行,而無需使用 setTimeout()

// This:
await Bun.sleep(100);

// Instead of this:
await new Promise((resolve) => {
  setTimeout(resolve, 100);
});

您還可以指定一個 Date,它將休眠到給定的日期。

const date = new Date(2024, 01, 01);
await Bun.sleep(date); // sleep until next year

Docker 映像檔:oven/bun

Bun 有了一個新的和改進的 Docker 映像檔:oven/bun。基礎映像檔是 Debian,並支援 x64 和 arm64 架構。

這是一個使用 Bun 的 Dockerfile 範例。

FROM oven/bun

ADD src src
ADD package.json package.json
ADD bun.lockb bun.lockb
RUN bun install

CMD bun src/index.js

Node.js 相容性改進

bun install 改進

  • 修正了提升 peerDependencies 時的問題
  • 修正了當套件在工作區中時,二進制檔案未被連結的問題
  • 修正了 bun install 會下載上次修改的標籤,而不是最新標籤的問題
  • 修正了安裝帶有 npm: 前綴的套件時的問題
  • 變更工作區為不遞迴解析 (符合 npm 的行為)

感謝 @alexlamsl 修正了這些問題!

更新日誌

b7c96bf修正了在 bun:sqlite 中使用 db.prepare() 時的「非法指令」錯誤
#2000修正了 @alexlamsl 提供的別名依賴項的邊緣案例
#2011修正了 @alexlamsl 提供的提升 peerDependencies 時的問題
#2016修正了 @alexlamsl 提供的 bun install 最新標籤不正確的問題
#2003修正了 @colinhacks 提供的 bun-types 中的各種錯誤
#1972修正了 @gaurishhs 提供的 bun-types 中更多的錯誤
#1998由 @michalwarda 提供的公開 fs.Direntfs.Stats
b12762a由 @Jarred-Sumner 提供的使 fs.Stat 函式更快
#1982由 @colinhacks 提供的為 node:consolenode:perf_hooks 新增類型
#1997由 @TerrorJack 提供的修正 wasi-js 的 URL
#1996由 @cirospaciari 提供的修正 uWebSockets 的錯誤
#2013由 @RobViren 提供的修正列印不正確版本的問題