執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

許可證

Bun 的許可證

Bun 本身採用 MIT 許可證。

JavaScriptCore

Bun 靜態連結了 JavaScriptCore(以及 WebKit),其許可證為 LGPL-2。WebKit 中的 WebCore 檔案同樣根據 LGPL-2 許可。根據 LGPL-2:

(1)如果你靜態連結了一個 LGPL 許可的庫,你還必須以目標檔案(不一定是原始碼)格式提供你的應用程式,以便使用者有機會修改庫並重新連結應用程式。

Bun 修改後的 WebKit 位於 https://github.com/oven-sh/webkit。要使用修改內容重新連結 Bun:

  • git clone https://github.com/oven-sh/WebKit vendor/WebKit
  • bun sync-webkit-source(檢出 scripts/build/deps/webkit.ts 中 WEBKIT_VERSION 指定的版本)
  • bun run build:local

bun run build:local 會編譯 JavaScriptCore,編譯 Bun 針對 JavaScriptCore 的 .cpp 繫結(使用 JavaScriptCore 的目標檔案),並輸出一個包含你所做修改的新 bun 二進位制檔案。

連結的庫

Bun 靜態連結以下庫:

庫許可證
boringssl多個許可證
brotliMIT
libarchive多個許可證
lol-htmlBSD 3-Clause
ls-hpackMIT(捆綁的 xxhash 採用 BSD 2-Clause 許可證)
ls-qpackMIT
lsquicMIT(部分程式碼源自 Chromium proto-quic,採用 BSD 3-Clause 許可證)
mimallocMIT
picohttpPerl 許可證或 MIT 許可證(雙重許可)
zstdBSD 許可證或 GPLv2 許可證(雙重許可)
simdutfApache 2.0
tinyccLGPL v2.1
uSocketsApache 2.0
zlib-ngzlib
c-aresMIT 許可
libicu 78ICU 許可證
libbase64BSD 2-Clause
libuv(在 Windows 上)MIT
libdeflateMIT
libjpeg-turboBSD 3-Clause / IJG / zlib
libspngBSD 2-Clause(部分程式碼源自 libpng,採用 PNG Reference Library License v2)
libwebpBSD 3-Clause
highwayApache 2.0
HdrHistogram_c根據 CC0 1.0 或 BSD 2-Clause 許可證雙重許可
sqlite(在 Linux 和 Windows 上)公共領域
uWebsockets 的一個分支採用 Apache 2.0 許可證
Tigerbeetle 的 IO 程式碼 的部分程式碼採用 Apache 2.0 許可證

Polyfill

為確保相容性,Bun 會將以下軟體包嵌入其二進位制檔案中,並在匯入這些軟體包時注入它們。

額外鳴謝

  • Bun 的 JS transpiler 和 Node.js module resolver 原始碼移植自 @evanw 的 esbuild 專案。
  • Bun 的 CSS parser 原始碼衍生自 Lightning CSS 和 Servo 專案。
  • 感謝 @kipply 取名為 “Bun”。