运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

许可证

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”。