Bun v1.0.7 修復了 59 個錯誤(解決了 78 個 👍 反應),在 bun install
中實作了可選的同層級相依性,並改進了 Node.js 的相容性。
Bun 是一個速度極快的 JavaScript 執行環境、打包器、轉譯器和套件管理器 — 功能All in one。如果您錯過了,這裡列出 Bun 最近的一些變更
v1.0.0
- 首個穩定版本!v1.0.1
- 為 .json 和 .toml 檔案命名匯入,修復了bun install
、node:path
和Buffer
v1.0.2
- 讓--watch
更快,以及大量的錯誤修復v1.0.3
-emitDecoratorMetadata
和 Nest.js 支援,修復了私有註冊表等等v1.0.4
-server.requestIP
、執行階段外掛程式中的虛擬模組等等v1.0.5
- 修復了fetch()
的記憶體洩漏、node:crypto
模組中的KeyObject
支援、bun:test
中的expect().toEqualIgnoringWhitespace
等等v1.0.6
- 修復了 3 個錯誤(解決了 85 個 👍 反應),在package.json
中實作了overrides
和resolutions
,並修復了影響 Bun 的 Docker 使用回歸問題
安裝 Bun
curl -fsSL https://bun.dev.org.tw/install | bash
npm install -g bun
brew tap oven-sh/bun
brew install bun
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun
升級 Bun
bun upgrade
bun install
的改進
此版本包含對 bun install
的多項錯誤修復,例如
新功能:可選的 peerDependencies
此版本新增了對可選同層級相依性的支援,解決了 bun install
可能會安裝比 npm install
更多套件的錯誤。
可選的同層級相依性在 package.json 中看起來像這樣
{
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
},
"peerDependenciesMeta": {
"node-notifier": {
"optional": true
}
}
}
這告訴 npm 客戶端不要安裝 node-notifier
,除非它明確列在根專案的 package.json
的 dependencies
或 devDependencies
中。
在先前的版本中,即使 node-notifier
未列在根專案的 package.json
中,Bun 也會安裝它。這會增加 node_modules 的大小,並可能導致 Bun 在多個版本下安裝相同套件的問題。在 Bun v1.0.7 中,此問題已修復。
感謝 @dylan-conway 在 Bun 中實作可選的同層級相依性!
已修復:安裝了錯誤版本套件的邊緣案例
存在一個錯誤,當比對 semver 範圍時,bun install
有時會選擇較舊版本的套件。此問題已修復,感謝 @dylang。
具體來說,我們假設 npm 註冊表 API 以 semver 順序傳回套件版本列表。官方註冊表 API *通常* 這樣做,但並非總是如此。此外,並非所有人都使用官方註冊表 API。這導致 bun install
有時會選擇仍然符合 semver 範圍的較舊版本套件。
Bun 現在將對從註冊表檢索的版本進行排序,然後再選擇最符合的版本。
已修復:bun install github:foo/foo
可能會多次儲存到 package.json
一個錯誤導致 bun install github:foo/foo
多次儲存到 package.json。如果您執行兩次,相依性將在 package.json 中出現多次。此錯誤已修復,感謝 @dylan-conway。
已修復:在 Linux 上導致非決定性 bun.lockb
的邊緣案例
決定性問題導致 bun.lockb
在 Linux 上有時會包含不同的內容。此問題已修復,感謝 @dylan-conway。
已修復:npm 別名邊緣案例錯誤修復
已修復一個錯誤,該錯誤導致相依性中的 npm:` 別名並非總是受到尊重,感謝
@dylan-conway。
Node.js 相容性改進
此版本還包含多項 Node.js 相容性改進。
已修復:child_process
IPC 可靠性
已修復一個可靠性問題,該問題導致 IPC 訊息無法傳送所有內容,感謝 @paperclover。這有助於 Next.js 在 Bun 中更可靠地運作,儘管仍有更多工作要做。
已修復:沒有 end
事件的掛起 socket
已修復一個錯誤,該錯誤導致 node:net
socket 在所有情況下都無法正確發出 end
事件,感謝 @cirospaciari。
此錯誤影響了 pg
和 sequelize
套件以及其他套件。
已修復:napi
記憶體洩漏
已修復 napi 中的記憶體洩漏,感謝 @alangecker。根本原因是參考計數從 1
而不是 0
開始。
已修復:node:stream
崩潰
已修復當將許多小塊寫入 node:stream
時可能發生的崩潰,感謝 @paperclover。
已修復:Unix socket 的 server.address()
已修復一個錯誤,該錯誤導致 node:http
中的 server.address()
為 unix socket 傳回不正確的值,感謝 @Hanaasagi。
已修復:threadId
在 Worker
中未設定
已修復一個錯誤,該錯誤導致 threadId
未在 node:worker_threads
中傳回的 Worker
實例中設定,感謝 @jerome-benoit。
已修復:使用 'binary' 的 Buffer.write
截斷為 ascii 而不是 latin1
已修復一個錯誤,該錯誤導致使用 'binary'
編碼的 Buffer.write
截斷為 ascii 而不是 latin1,感謝 @Electroid。
已修復:Buffer.concat(buffers, undefined)
拋出錯誤
以下程式碼會拋出錯誤的錯誤已修復,感謝 @Hanaasagi。
Buffer.concat([Buffer(1), Buffer(1)], undefined);
以下程式碼不會拋出錯誤
Buffer.concat([Buffer(1), Buffer(1)]);
Buffer.concat([Buffer(1), Buffer(1)], 2);
此錯誤正在檢查本機程式碼中與 arguments.length
等效的內容,而不是 arguments[1]
是否為 undefined
。
已修復:node:dns
lookup 為 family 傳回錯誤的位址
已修復一個錯誤,該錯誤導致當設定 family
時,node:dns
的 lookup
函數傳回錯誤的位址類型,感謝 @Electroid。例如,dns.lookup('localhost', { family: 6 })
可能會傳回 IPv4 位址而不是 IPv6 位址。
執行階段修復
我們還修復了 Bun 執行階段中的幾個錯誤。
已修復:導致 docker 容器拋出不正確「port in use」錯誤的錯誤
已修復一個錯誤,該錯誤導致 Bun 在 Docker 容器中執行時拋出不正確的「port in use」錯誤,感謝 @Hanaasagi。
當繫結到 IPv6 位址失敗時,Bun 會立即傳回錯誤。現在,它也會嘗試繫結到 IPv4 位址,並且僅在也失敗時才傳回錯誤。這是因為 長期存在的問題,即使停用了 IPv6,Docker 仍會在 `/etc/hosts` 中包含 IPv6 項目。
已修復:request.url
有時會有不正確的 port
已修復一個導致 request.url
有時具有不正確 port 的邊緣案例,感謝 @Electroid。
已修復:Response
中缺少 statusText
已修復一個導致 response.statusText
遺失的錯誤,感謝 @toshok。
已修復:WebSocket 客戶端 Host 標頭缺少 port
已修復一個錯誤,其中 WebSocket 客戶端傳送的 Host
標頭中未包含 port 號碼,感謝 @Electroid。
已修復:Bun.write
在錯誤訊息中報告了錯誤的路徑
已修復一個錯誤,該錯誤導致 Bun.write
在錯誤訊息中報告錯誤的路徑,感謝 @Hanaasagi。
已修復:SQLite 中的 statement.all()
有時傳回數字而不是陣列
在某些情況下,bun:sqlite
的 statement.all()
函數傳回數字而不是陣列。這非常令人困惑,並且已修復為始終傳回陣列,感謝 @HForGames。
已修復:describe.only
不適用於巢狀 describe 範圍
已修復 bun:test
中的一個錯誤,該錯誤導致 describe.only
不適用於巢狀 describe 範圍,感謝 @igorshapiro。
為定期 Windows 建置做準備
我們正在對我們的建置系統進行變更,以為定期 Windows 建置做準備。
Bun 即將切換為使用 cmake
和 ninja
進行建置,而不是 2000 多行的 Makefile
。Bun 也將開始使用 JavaScriptCore 的偵錯版本,這啟用了各種斷言,可協助我們更早發現錯誤。此版本實作了大部分必要的變更,感謝 @paperclover。
Bun 也將在下一個版本中從 LLVM 16 升級到 LLVM 17。
新貢獻者
感謝我們的 17 位新貢獻者 🎉
@clay-curry
在#6479
中做出了他們的首次貢獻@jerome-benoit
在#6521
中做出了他們的首次貢獻@Voldemat
在#6128
中做出了他們的首次貢獻@toshok
在#6151
中做出了他們的首次貢獻@HForGames
在#5946
中做出了他們的首次貢獻@yschroe
在#5485
中做出了他們的首次貢獻@Connormiha
在#4975
中做出了他們的首次貢獻@aralroca
在#6558
中做出了他們的首次貢獻@pierre-cm
在#6563
中做出了他們的首次貢獻@klatka
在#6153
中做出了他們的首次貢獻@mountainash
在#6579
中做出了他們的首次貢獻@owlcode
在#6587
中做出了他們的首次貢獻@nygmaaa
在#6581
中做出了他們的首次貢獻@vladaman
在#6208
中做出了他們的首次貢獻@PaulaBurgheleaGithub
在#6620
中做出了他們的首次貢獻@alangecker
在#6598
中做出了他們的首次貢獻@imcatwhocode
在#6590
中做出了他們的首次貢獻