JavaScript高性能运行时-Bun


Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。其提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (native bundler)、转译器、task runner、npm 客户端,以及 fetch、WebSocket等 Web API。是一个配套齐全的 JavaScript 解决方案,集运行时、打包器、转译器和包管理器于一体,追求极致的运行速度。项目本身采用MIT协议授权。

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one.
特性:
带有 Web API 的 JavaScript 运行时,内置 fetch、WebSocket等 API。bun 嵌入了 JavaScriptCore,它往往比 V8 等更流行的引擎更快且内存效率更高(尽管更难嵌入)
JavaScript/TypeScript/JSX 转译器
JavaScript 和 CSS 打包器
package.json 脚本的任务运行器
npm 兼容的包管理器
Bun 基于 Request 和 Response 等 Web 标准的HTTP服务器:
// http.js
export default {
port: 3000,
fetch(request) {
return new Response("Welcome to Bun!");
},
};
Bun 完全从零开始构建,对标的项目是 Node.js 和 Deno 这类现代化的 JavaScript 运行时。旨在替代当前的 JavaScript 和 TypeScript 应用程序或脚本,原生实现了数百个 Node.js 和 Web API,包括约 90% 的 Node-API 函数(native modules)、fs、path、Buffer 等。
其目标是在浏览器之外运行世界上大多数 JavaScript,为未来的基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发人员的生产力。
它内置了诸如 fetch、WebSocket 和 ReadableStream 等 Web API。
node_modules bun 实现了 Node.js 的模块解析算法,因此你可以在 Bun 中使用 npm 包。支持 ESM 和 CommonJS,但 Bun 内部使用 ESM。
在 Bun 中,每个文件都是转译的。TypeScript 和 JSX 就可以使用。
Bun 支持来自 tsconfig.json 文件的 "paths"、"jsxImportSource" 等。
Bun.Transpiler Bun 的 JsX 和 TypeScript 转译器在 Bun 中作为 API 可用。
使用 Bun.write 提供的最快系统调用来写入、复制、管道、发送和克隆文件。
Bun 自动从.env 文件加载环境变量。不再需要 require ("dotenv").config ()
Bun 提供了一个快速的 SQLite3 客户端,内置 bun:sqlite。
Node-API Bun 实现了大部分的 Node-API(N-API)。许多 Node.js 原生模块都可以使用。
bun:ffi 使用 Bun 的低开销外部函数接口从 JavaScript 调用 native code。
node:fs node:path Bun 原生支持越来越多的 Node.js 核心模块,以及像 Buffer 和 process 这样的 globals。
最新版本:0.7
新型 JavaScript 运行时 Bun 于2023年7月下旬正式发布了 0.7 版本,带来了重大的升级。此次更新主要集中在与 Node.js 的兼容性提升和新功能支持上。
首先 Bun 宣布与流行的前端打包工具 Vite 实现了初步兼容。开发者现在可以使用 Bun 直接运行 Vite 项目,享受热更新等方便功能,无需进行额外配置。不过由于 Bun 和 Vite 内部机制不同,Vite 目前仍未使用 Bun 的打包和转译优势。但这为未来的深度集成创造了条件。然后 Bun 实现了浏览器环境下的 Worker 线程支持。开发者现在可以通过新加的 Worker 类创建子线程,利用多核 CPU 提升计算密集型任务的执行效率。Bun 的 Worker 天生支持模块化、TypeScript 等特性,比浏览器原生 Worker 用起来更顺手。值得一提的是,流行的 comlink 库也可以无缝应用在 Bun 的 Worker 中,让线程间通信更加方便。此外 Bun 还原生支持了异步上下文存储 AsyncLocalStorage,这是许多框架实现异步操作追踪的关键。接下来 Bun 有望兼容 Next.js 等流行框架。
在 Node.js 兼容性方面,Bun 追加实现了事件循环中的定时器回调保证异步执行的特性,对命令行应用来说重要的标准输出流也增强了窗口尺寸查询支持。特别是在 TLS 网络方面,Bun 改进了密钥导出、会话重用等接口的实现,满足了流行加密库的需求。当然此次更新也增加了实用的新功能。比如,开发者现在可以更容易地在主线程与 Worker 之间传递数据,还可以利用结构化克隆算法(structuredClone())进行高效的深拷贝。将可读流转换为 FormData 对象的 API 也成为可能。测试框架方面,新增了在第一个测试失败后立即结束的 “--bail” 模式,提高了 CI/CD 环境下的效率。WebSocket 连接也增强了 ping/pong 监听支持。
一些棘手的 Bug 导致的内存泄露和性能问题也得到修复。总体来看,0.7 版本带来的升级让其在与 Node.js 的竞争中又近了一步。随着兼容性进一步提高,开发者可能会看到越来越多的项目转向使用 Bun。我们拭目以待 Bun 后续的表现。毕竟,一个快速、高效、易用的 JavaScript 解决方案,对开发者的吸引力可想而知。
最新版本:1.0
2023年9月8日,Javascript 运行时 Bun 正式发布 1.0 版本,标志着这个由前 Facebook 工程师创建的项目正式进入稳定生产可用阶段。Bun 的愿景是通过深度整合,让 Javascript 开发 “快如闪电”。这个新生力量是否能撼动 Javascript 界老牌霸主 Node 的地位,成为下一代前端开发标准?
Bun v1.0 作为 Javascript 社区中一个相对较新的革新者,其致力于解决碎片化工具过多导致的开发低效问题。它将运行时、打包工具、测试框架等功能融合在一个工具中,提供开箱即用的高性能体验。它兼容现有的 Node.js 生态,几乎所有 Node 程序可以无缝迁移。更令人振奋的是,Bun 的启动速度可达 Node 的 4 倍,运行 TypeScript 的速度比 esbuild+Node 快 5 倍!原因在于其使用了 Apple 开源的 WebKit 引擎,而不是 Node 常见的 V8。
其内置对 TypeScript 和 JSX 的支持,省去了编译配置的麻烦。同时它也能兼容 CommonJS 和 ESM 模块,你可以在同一文件内混合使用 import 和 require 语句。Bun 成功地消除了模块管理的复杂性问题,表现十分出色!
import lodash from "lodash";
const _ = require("underscore");
它还拥有先进的本地 API,比如用 Bun.file() 替代 fs 读文件,可获得 10 倍速度提升。Bun.write() 写入文件也比 Node 快 3 倍。Bun.serve() 启动 HTTP 服务支持 WebSocket,性能均是 Node 的 5 倍左右。可以说,Bun 的本地 API 设计是效率至上的。其最大的杀手锏是其集成的打包功能。基于 esbuild 优化,它比主流的 Rollup、Parcel、Webpack 都快上一两个数量级,堪称 JS 打包速度之最。Bun 更开创了 JS 宏的新概念,可以在打包时运算 JS 函数并内联结果到代码中,是其他打包器难以企及的创新。
对于前端测试,Bun 实现了与 Jest 兼容的测试框架 bun:test。它利用原生实现提升了匹配器速度,完爆 Jest 和 Vitest 达 10-100 倍。命令 bun test 即可享受极速测试体验。最后,Bun 现在首次推出实验版本,为 Windows 操作系统提供原生支持,这意味着 Windows 用户无需再依赖 Windows Subsystem for Linux(WSL),即可轻松体验 Bun 所带来的超光速开发乐趣。1.0 的发布预示着 Javascript 生态可能再次被颠覆和重塑。新老开发者们不妨试用 Bun,体验其中的进化与乐趣。让我们共同见证 Javascript 的新纪元!
Bun v1.0.12于2023年11月中旬发布。该版本在修复了 24 个安全漏洞的基础上,引入了多项创新功能和重大改进,以增强用户体验并提高与 Node.js 的兼容性。一个显著新特性是 bun -e 命令的加入,允许开发者在不创建文件的情况下直接运行脚本。这极大提升了编写和测试小型脚本的便利性和灵活性。此外通过 bun --env-file 命令的引入,使得用户可以指定不同的环境变量文件,这对于多环境测试尤为重要。
新版 Bun 还增加了对 server.url 的支持,它允许返回定义 HTTP 服务器位置的 URL 对象,这对于需要在测试中获取服务器实际 URL 的用户非常有用。同时,import.meta.env 的引入使得在 Bun 环境中访问环境变量变得更为简便。在代码健壮性方面,v1.0.12 引入了 expect.unreachable(),它用于在代码路径不应被执行时抛出错误。同时,该版本对 Bun 的 CLI 帮助进行了改进,使其更易于阅读和理解。
在打包功能方面,v1.0.12 引入了一项重要改进:现在可以在打包时使用宏来导入内置模块。例如,开发者可以在打包阶段使用宏来调用readFileSync和spawnSync等内置模块的功能。这一改进为开发者在构建过程中提供了更多的灵活性和便利,使得例如在打包时读取文件内容或启动进程等操作变得可行。此外,对 mock.module 的支持也得到了改进,解决了覆盖默认导出和重新导出时的问题,增强了在测试环境中模拟模块的功能。在解决 bug 方面,Bun 团队修复了多项问题,包括 bun install 在处理特殊情况时的错误,HTTP 客户端响应头缺失情况的改进,以及其他潜在的稳定性问题。
综合来看,v1.0.12 的发布是该项目在打造更加强大、易用工具方面的一大步。这些更新和改进预期将使 Bun 在 JavaScript 开发社区中的作用更为重要,为开发者提供更高效、更可靠的编程体验。
兼具运行时、打包工具、转译器和包管理器多重功能的 JavaScript 工具,在2024年1月中旬迎来了 1.0.23 版本的更新。本次更新针对社区反馈修复了 40 个 bug,共计获得了 194 个赞,使其在打包部署等方面的易用性有所提升。
引入 SQLite 数据库:轻松管理数据
v1.0.23 的一大亮点是引入了对 SQLite 数据库的支持。开发者现在可以直接在 Bun 中导入 SQLite 数据库,极大简化了在项目中使用 SQLite 的流程。通过简单的 import 语句,开发者能够轻松导入和管理数据库,这对于需要处理数据存储和读取的应用程序来说,无疑是一个巨大的便利。此外也支持将 SQLite 数据库嵌入到单文件可执行程序中。这意味着开发者可以创建包含数据库的独立应用程序,极大地简化了部署过程。
性能提升:更快的 TCP 和 bug 修复
在性能方面,v1.0.23 做出了显著的优化。特别是在 Linux 系统上,TCP 传输性能提升了4%,这得益于减少了系统调用次数。这一改进对于需要处理大量网络数据的应用来说,无疑是一个巨大的提升。
Node.js 兼容性和资源管理
对于 Node.js 的兼容性,v1.0.23 也进行了重要的更新,解决了一些先前版本中存在的问题。例如,现在可以在 Bun 环境中无缝使用 Node.js 内置模块,如 fs 和 path。还引入了对 TC39 提出的第三阶段提案 —— 资源管理(Resource Management)的支持。这意味着开发者可以更加有效地管理文件句柄、数据库连接和网络套接字等资源。
其他重要更新
SQLite 升级至 3.45.0 版本:加入了 JSONB 支持,使得存储和读取 JSON 数据更加高效。
嵌入.node 文件的支持:允许开发者在构建时将 NAPI 插件.node 文件嵌入,使得打包本地 Node.js 模块变得简单。
HTTP 服务器头部限制提升:从 50 提升到 100,增强了服务器的处理能力。
增强的 import.meta 支持:新增了 import.meta.dirname 和 import.meta.filename 支持,增强了与 Node.js 的兼容性。
fs/promises 中的 FileHandle 支持:使得文件操作更加灵活和强大。
众多 bug 修复和性能优化:包括 zlibBufferSync 的错误处理、Bun.spawn() 中的文件描述符泄漏、URL 处理的一致性问题等。
本次更新使 Bun 成为 Web 应用打包部署更便捷高效的选择;相信随着 Bun 的持续完善,会有更多开发者加入使用。
最新版本:1.1
JavaScript 开发者们瞩目已久的 Bun 1.1 版本于2024年4月上旬正式发布了!这次大版本更新带来了一系列令人兴奋的新特性和显著的性能提升,将为开发者们提供更加顺畅、高效的开发体验。首先为其支持 Windows 而欢呼吧!是的,现在 Windows 开发者也能享受到 Bun 带来的极速体验了。通过一行简单的 PowerShell 命令,即可在 Windows 10 及以上系统安装 Bun。更令人惊喜的是,Bun 在 Windows 上的测试覆盖率已经达到了 98%,这意味着你能在 Windows 上尽情使用 Bun 的各项功能,与 macOS 和 Linux 版本几乎完全一致。
说到速度,Bun 1.1 在各个方面都有了大幅提升。在 Windows 上进行依赖安装时,Bun 的表现尤其亮眼。以安装一个 Vite React 应用为例,使用 Bun,安装速度比 Yarn 快 18 倍,比 npm 更是快了 30 倍之多!Bun 还对 Windows 上的文件系统操作进行了深度优化,例如递归读取目录的速度比 Node.js 快了 22 倍。对 Node.js 兼容性的改进也非常显著。不仅修复了上千个 bug,还新增了大量 Node.js API 的支持。现在你可以在 Bun 中使用 HTTP/2 客户端、递归的 fs.readdir()、进程间通信等功能了。值得一提的是,Bun 还支持许多 Node.js 中没有文档说明的内部 API,让你的 npm 包可以在 Bun 下平滑迁移,而无需修改代码。
作为一个多才多艺的 JavaScript 运行时,Bun 1.1 在打包、测试、SQLite 支持等方面也有诸多亮点。全新的 bun build --target=node 命令让你轻松将 TypeScript 代码打包成可在 Node.js 下运行的文件。而 bun build --compile 命令更是一个黑科技,它能将你的 JS/TS 代码连同 SQLite 数据库一起编译成一个单文件可执行程序!
说到 SQLite,Bun 1.1 内置了一个高性能的 SQLite 接口,并且支持了多语句查询、导入预置数据库等实用功能。结合编译成单文件 exe 的功能,Bun 让嵌入式数据库应用开发变得无比简单高效。当然,Bun 1.1 在开发者体验方面也下了不少功夫。语法高亮的错误堆栈、更加简洁的调用栈信息、bun --eval 命令行直接执行脚本……Bun 力求为开发者提供更加友好便捷的使用体验。
还有很多很多的新特性,在这里无法一一列举。但可以肯定的是,Bun 1.1 是一个里程碑式的版本,它以其卓越的性能、丰富的功能和贴心的开发体验,势必将 JavaScript 开发推向一个新的高度。
Bun 在解码 Base64 方面比 Node.js v22 快
在2024年6月下旬的一则推文中,计算机科学家 Daniel Lemire 指出,JavaScript 运行时 Bun 在解码 Base64 输入时,比 Node.js 22 快了数倍。尽管两者都依赖于同一个底层库 simdutf 来进行实际解码,但 Node.js 在与其底层 JavaScript 引擎 v8 交互时遇到了瓶颈。Lemire 详细解释了问题的根源在于 Node.js 在开始解码字符串之前,需要通过调用 String::Value 函数来获取字符串的值。这一步操作会在 Node.js 内部分配一个数组,并要求 v8 将内容复制到这个数组中。由于无法直接访问 v8 中存储的字符串,Node.js 被迫将纯 ASCII 字符串转换为 UTF-16,导致了不必要的性能损失。
其分析显示,Base64 解码过程仅占总运行时间的五分之一,而字符复制过程则占据了将近一半的时间。这种多余的转换不仅浪费了资源,还使得整个解码过程效率低下。与此同时,Bun 通过不同的架构设计,避免了这些性能瓶颈。Bun 使用了 JavaScriptCore 引擎,并通过优化字符串处理路径,直接处理 8-bit 输入,避免了不必要的 UTF-16 转换。这样的设计使得 Bun 能够在 Base64 解码等操作中显著领先于 Node.js。
这则消息在开发者社区引发了广泛讨论。有开发者在 HackerNews 上分享了他们对 Bun 的使用体验,称其在速度和文档方面都表现出色,并推荐其他开发者尝试使用 Bun。尽管 Bun 仍然存在一些 API 和行为上的差异,但其性能优势和良好的开发体验使其成为 Node.js 的一个有力竞争者。Bun 的开发团队也在不断努力,通过阅读和优化 JavaScriptCore 的代码,致力于提升 Bun 的性能和兼容性。Lemire 的分析不仅揭示了 Node.js 在性能优化上的挑战,也为 Bun 的发展提供了宝贵的参考。开发者们期待着 Node.js 和 Bun 在未来能够共同推动 JavaScript 生态系统的进步。
2024年8月发布了 v1.1.25 版本,并高调宣布在最新的性能测试中,每秒可以处理 129 万个 HTTP 请求,一起来看看这个版本究竟做了哪些改进。
1、node:cluster 支持
Bun 现在支持 node:cluster API。通过使用这个 API,你可以在同一个端口上运行一组 Bun workers,从而实现更高的吞吐量和利用率。对于拥有多个 CPU 核心的机器来说,这是在生产环境中进行负载均衡的最佳选择。下面是一个工作原理的示例:
主要的 worker 会创建 n 个子 worker,一般数量与 CPU 核心数相同;
每个子 worker 都会监听相同的端口(使用 reusePort);
传入的 HTTP 请求会在子 worker 之间进行负载均衡分配处理。
目前 reusePort 只在 Linux 系统上有效。在 Windows 和 macOS 上,操作系统无法像预期那样对 HTTP 连接进行负载均衡处理。
2、开始支持 V8 公开 C++ API
Bun 现在支持了 V8 的公开 C++ API,这使得像 cpu-features 这样的软件包可以在 Bun 中正常工作。这是一个值得注意的变化,因为 Bun 不是像 Node.js 一样构建在 V8 之上。相反,Bun 是构建在 JavaScriptCore 上的,JavaScriptCore 是 Safari 使用的 JavaScript 引擎。
这意味着官方需要实现一个自己的 C++ 翻译层,将 V8 的 API 与 JavaScriptCore 进行对接。这是一项非常艰巨的工程,JavaScriptCore 和 V8 以不同的方式表示 JavaScript 值。V8 使用了移动式、并发的垃圾收集器,并且有明确的句柄作用域,而 JavaScriptCore 使用了非移动式的并发垃圾收集器,它会扫描堆栈内存(类似于隐式句柄作用域)。
什么要支持 V8 的内部 API?
最初 Bun 并没有打算支持这些 API,但是在发现许多受欢迎的软件包依赖于这些 API 后,开始决定加以支持,这些软件包包括:
cpu-features
node-canvas@v2
node-sqlite3
libxmljs
以及许多使用nan的软件包
在这个版本中,只有cpu-features从上述列表中受到支持,其他 API 正在努力支持中。
3、使用 @aws-sdk/client-s3 实现的 S3 上传速度提高了5倍
Bun 修复了 node:http 客户端实现中的一个 bug,这使得上传到 S3 的速度提高了5倍。
4、独立可执行文件中的 Worker
Bun 的单文件独立可执行文件现在支持绑定 Worker 和 node:worker_threads。
5、使用 OMGJIT 在 Windows 上实现更快的 WebAssembly
Windows 上的 WebAssembly 现在支持 JavaScriptCore 的优化即时编译器 (JIT),称为 OMGJIT。
6、Node.js兼容性改进
execa 现在可以正常工作了。Bun 修复了一个不能正确支持 EventTarget的setMaxListeners 的 bug。这个问题影响到了像 execa 这样的包,会导致错误报 undefined is not a function。在调用 destroy() 关闭 TCP 连接后,与 node:net 的连接出现挂起,也是一个 bug 修复,在调用 destroy() 关闭 TCP 连接后,进程没有始终正确退出,因为事件循环仍然处于活动状态。这有时会导致像 postgres 这样的包无限期地挂起。
Bun在2024年11月下旬迎来了最近迎来了一项重要更新:正式支持 Musl libc。这使得 Bun 可以在以 Alpine Linux 为代表的轻量级 Linux 发行版上运行。Alpine 凭借其极小的镜像体积(通常不足 5MB)和高安全性,已经成为容器化应用的首选基础镜像。这一更新让开发者可以将 Bun 部署在这些精简的系统中,大幅降低运行环境的资源占用,同时提升启动速度。这对许多使用 Docker 的开发者尤其有意义,因为大量 Docker 镜像都是基于 Alpine 构建的。
Musl libc 的支持不仅解决了过去在这些环境中遇到的兼容性问题,更拓展了 Bun 的适用场景。对于微服务架构、边缘计算、资源受限的云环境,这种高效、轻量的组合显得尤为契合。通过减少对传统 glibc 的依赖,开发者在构建和部署时可以保持镜像的精简性,同时不牺牲运行时性能。除了这一关键更新,Bun 的开发团队也没有停下优化的步伐。二进制文件大小减少了 6 MB,让 Bun 变得更加精简;文件系统操作性能提升显著,尤其是对小文件的 fs.readFile,速度有了肉眼可见的改进。此外,Bun 增加了对 JUnit XML 测试输出的支持,这一功能极大地方便了与 CI/CD 工具的集成,让开发和交付更加高效。
在开发者关心的内存管理方面,Bun 表现也更加稳健。长时间运行的进程现在能够更好地利用内存,避免了资源浪费或内存泄漏问题。此外,Node.js 的兼容性也得到了进一步增强。团队修复了 ReadableStream 和 HTTP/1.1 等多个兼容性问题,同时优化了 CSS 解析和依赖管理工具的表现。这些改进为开发者提供了一个更加可靠和高效的运行环境。Bun 正在以惊人的速度发展,而对 Musl libc 的支持无疑是一个关键节点。它不仅让轻量级 Linux 系统的用户大大受益,也为整个生态带来了更广阔的想象空间。
最新版本:1.2
JavaScript运行时新秀 Bun 于2025年1月下旬发布 v1.2 版本,这是自2024年4月发布 1.1 以来最重要的一次更新;本次更新不仅大幅提升了与 Node.js 的兼容性,还为开发者带来了内置的数据库支持和云服务集成能力,进一步强化了其 “全能工具包” 的定位。
Node.js 兼容性获得突破性进展
在此次更新中,最引人注目的是 Bun 在 Node.js 兼容性方面取得的突破性进展。Bun 团队改变了此前被动修复问题的策略,转而主动运行 Node.js 的测试套件来提升兼容性。这一改变使得包括 http、crypto、dgram 等多个核心模块的测试通过率超过 90%。特别值得一提的是,Express 这个广受欢迎的 Web 框架在 Bun 中的性能提升了 3 倍,这无疑会吸引更多开发者尝试将项目迁移到 Bun 上。
云原生时代的标配:内置数据库与对象存储支持
此次更新的另一大亮点是为开发者带来了内置的 PostgreSQL 客户端和 S3 对象存储支持。这意味着开发者无需安装额外的依赖包,就能直接与这些关键的云服务进行交互。尤其是 Bun 的 S3 客户端,其性能测试显示比使用传统 AWS SDK 的 Node.js 应用快 5 倍。这一改进将显著降低云原生应用的开发门槛。
包管理器也要与时俱进
作为一个全能型工具包,Bun 的包管理功能也获得了重要升级。最显著的变化是将默认的二进制锁文件(bun.lockb)改为文本格式的 bun.lock。这一改变虽然看似简单,但解决了代码审查、版本控制和冲突解决等实际问题。更值得注意的是,尽管切换到了文本格式,新版本的 bun install 性能反而提升了 30%,这体现了 Bun 团队在性能优化方面的执着。
测试运行器更进一步
其内置测试运行器在此次更新中也得到加强,新增了 JUnit 和 LCOV 报告支持,这使得它更容易集成到现有的 CI/CD 流程中。此外,新增的内联快照测试等特性,也让测试体验更接近主流测试框架如 Jest。
性能持续领先
作为以性能著称的 JavaScript 运行时,Bun 1.2 在多个方面都实现了显著的性能提升。从 HTTP/2 服务器到文件系统操作,从 JSON 解析到控制台输出,几乎每个常用操作都变得更快。特别是在 Windows 平台上,JavaScript 执行性能获得了全面提升,这表明 Bun 正在努力填补其在 Windows 支持方面的短板。
展望未来
通过这次更新,Bun 展示了其在全栈开发工具链中的野心。从更完善的 Node.js 兼容性到云服务的原生支持,从更快的包管理到更强大的测试工具,Bun 正在将自己打造成一个真正的全能型开发工具包。特别是在云原生开发方面的创新,显示出 Bun 团队对未来开发趋势的敏锐把握。然而,挑战依然存在。尽管 Node.js 兼容性有了显著提升,但距离完全兼容仍有距离。同时,如何在保持高性能的同时确保稳定性,也将是 Bun 团队需要持续面对的挑战。
总的来说,v1.2 的发布展示了这个项目的快速发展势头,也证明了 JavaScript 生态系统仍有巨大的创新空间。对于开发者来说,现在可能是一个合适的时机来认真评估 Bun 是否适合自己的项目需求。毕竟,在性能、开发体验和云原生支持等方面,Bun 已经展现出了独特的优势。
项目主页:https://github.com/oven-sh/bun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one.
特性:
带有 Web API 的 JavaScript 运行时,内置 fetch、WebSocket等 API。bun 嵌入了 JavaScriptCore,它往往比 V8 等更流行的引擎更快且内存效率更高(尽管更难嵌入)
JavaScript/TypeScript/JSX 转译器
JavaScript 和 CSS 打包器
package.json 脚本的任务运行器
npm 兼容的包管理器
Bun 基于 Request 和 Response 等 Web 标准的HTTP服务器:
// http.js
export default {
port: 3000,
fetch(request) {
return new Response("Welcome to Bun!");
},
};
Bun 完全从零开始构建,对标的项目是 Node.js 和 Deno 这类现代化的 JavaScript 运行时。旨在替代当前的 JavaScript 和 TypeScript 应用程序或脚本,原生实现了数百个 Node.js 和 Web API,包括约 90% 的 Node-API 函数(native modules)、fs、path、Buffer 等。
其目标是在浏览器之外运行世界上大多数 JavaScript,为未来的基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发人员的生产力。
它内置了诸如 fetch、WebSocket 和 ReadableStream 等 Web API。
node_modules bun 实现了 Node.js 的模块解析算法,因此你可以在 Bun 中使用 npm 包。支持 ESM 和 CommonJS,但 Bun 内部使用 ESM。
在 Bun 中,每个文件都是转译的。TypeScript 和 JSX 就可以使用。
Bun 支持来自 tsconfig.json 文件的 "paths"、"jsxImportSource" 等。
Bun.Transpiler Bun 的 JsX 和 TypeScript 转译器在 Bun 中作为 API 可用。
使用 Bun.write 提供的最快系统调用来写入、复制、管道、发送和克隆文件。
Bun 自动从.env 文件加载环境变量。不再需要 require ("dotenv").config ()
Bun 提供了一个快速的 SQLite3 客户端,内置 bun:sqlite。
Node-API Bun 实现了大部分的 Node-API(N-API)。许多 Node.js 原生模块都可以使用。
bun:ffi 使用 Bun 的低开销外部函数接口从 JavaScript 调用 native code。
node:fs node:path Bun 原生支持越来越多的 Node.js 核心模块,以及像 Buffer 和 process 这样的 globals。
最新版本:0.7
新型 JavaScript 运行时 Bun 于2023年7月下旬正式发布了 0.7 版本,带来了重大的升级。此次更新主要集中在与 Node.js 的兼容性提升和新功能支持上。
首先 Bun 宣布与流行的前端打包工具 Vite 实现了初步兼容。开发者现在可以使用 Bun 直接运行 Vite 项目,享受热更新等方便功能,无需进行额外配置。不过由于 Bun 和 Vite 内部机制不同,Vite 目前仍未使用 Bun 的打包和转译优势。但这为未来的深度集成创造了条件。然后 Bun 实现了浏览器环境下的 Worker 线程支持。开发者现在可以通过新加的 Worker 类创建子线程,利用多核 CPU 提升计算密集型任务的执行效率。Bun 的 Worker 天生支持模块化、TypeScript 等特性,比浏览器原生 Worker 用起来更顺手。值得一提的是,流行的 comlink 库也可以无缝应用在 Bun 的 Worker 中,让线程间通信更加方便。此外 Bun 还原生支持了异步上下文存储 AsyncLocalStorage,这是许多框架实现异步操作追踪的关键。接下来 Bun 有望兼容 Next.js 等流行框架。
在 Node.js 兼容性方面,Bun 追加实现了事件循环中的定时器回调保证异步执行的特性,对命令行应用来说重要的标准输出流也增强了窗口尺寸查询支持。特别是在 TLS 网络方面,Bun 改进了密钥导出、会话重用等接口的实现,满足了流行加密库的需求。当然此次更新也增加了实用的新功能。比如,开发者现在可以更容易地在主线程与 Worker 之间传递数据,还可以利用结构化克隆算法(structuredClone())进行高效的深拷贝。将可读流转换为 FormData 对象的 API 也成为可能。测试框架方面,新增了在第一个测试失败后立即结束的 “--bail” 模式,提高了 CI/CD 环境下的效率。WebSocket 连接也增强了 ping/pong 监听支持。
一些棘手的 Bug 导致的内存泄露和性能问题也得到修复。总体来看,0.7 版本带来的升级让其在与 Node.js 的竞争中又近了一步。随着兼容性进一步提高,开发者可能会看到越来越多的项目转向使用 Bun。我们拭目以待 Bun 后续的表现。毕竟,一个快速、高效、易用的 JavaScript 解决方案,对开发者的吸引力可想而知。
最新版本:1.0
2023年9月8日,Javascript 运行时 Bun 正式发布 1.0 版本,标志着这个由前 Facebook 工程师创建的项目正式进入稳定生产可用阶段。Bun 的愿景是通过深度整合,让 Javascript 开发 “快如闪电”。这个新生力量是否能撼动 Javascript 界老牌霸主 Node 的地位,成为下一代前端开发标准?
Bun v1.0 作为 Javascript 社区中一个相对较新的革新者,其致力于解决碎片化工具过多导致的开发低效问题。它将运行时、打包工具、测试框架等功能融合在一个工具中,提供开箱即用的高性能体验。它兼容现有的 Node.js 生态,几乎所有 Node 程序可以无缝迁移。更令人振奋的是,Bun 的启动速度可达 Node 的 4 倍,运行 TypeScript 的速度比 esbuild+Node 快 5 倍!原因在于其使用了 Apple 开源的 WebKit 引擎,而不是 Node 常见的 V8。
其内置对 TypeScript 和 JSX 的支持,省去了编译配置的麻烦。同时它也能兼容 CommonJS 和 ESM 模块,你可以在同一文件内混合使用 import 和 require 语句。Bun 成功地消除了模块管理的复杂性问题,表现十分出色!
import lodash from "lodash";
const _ = require("underscore");
它还拥有先进的本地 API,比如用 Bun.file() 替代 fs 读文件,可获得 10 倍速度提升。Bun.write() 写入文件也比 Node 快 3 倍。Bun.serve() 启动 HTTP 服务支持 WebSocket,性能均是 Node 的 5 倍左右。可以说,Bun 的本地 API 设计是效率至上的。其最大的杀手锏是其集成的打包功能。基于 esbuild 优化,它比主流的 Rollup、Parcel、Webpack 都快上一两个数量级,堪称 JS 打包速度之最。Bun 更开创了 JS 宏的新概念,可以在打包时运算 JS 函数并内联结果到代码中,是其他打包器难以企及的创新。
对于前端测试,Bun 实现了与 Jest 兼容的测试框架 bun:test。它利用原生实现提升了匹配器速度,完爆 Jest 和 Vitest 达 10-100 倍。命令 bun test 即可享受极速测试体验。最后,Bun 现在首次推出实验版本,为 Windows 操作系统提供原生支持,这意味着 Windows 用户无需再依赖 Windows Subsystem for Linux(WSL),即可轻松体验 Bun 所带来的超光速开发乐趣。1.0 的发布预示着 Javascript 生态可能再次被颠覆和重塑。新老开发者们不妨试用 Bun,体验其中的进化与乐趣。让我们共同见证 Javascript 的新纪元!
Bun v1.0.12于2023年11月中旬发布。该版本在修复了 24 个安全漏洞的基础上,引入了多项创新功能和重大改进,以增强用户体验并提高与 Node.js 的兼容性。一个显著新特性是 bun -e 命令的加入,允许开发者在不创建文件的情况下直接运行脚本。这极大提升了编写和测试小型脚本的便利性和灵活性。此外通过 bun --env-file 命令的引入,使得用户可以指定不同的环境变量文件,这对于多环境测试尤为重要。
新版 Bun 还增加了对 server.url 的支持,它允许返回定义 HTTP 服务器位置的 URL 对象,这对于需要在测试中获取服务器实际 URL 的用户非常有用。同时,import.meta.env 的引入使得在 Bun 环境中访问环境变量变得更为简便。在代码健壮性方面,v1.0.12 引入了 expect.unreachable(),它用于在代码路径不应被执行时抛出错误。同时,该版本对 Bun 的 CLI 帮助进行了改进,使其更易于阅读和理解。
在打包功能方面,v1.0.12 引入了一项重要改进:现在可以在打包时使用宏来导入内置模块。例如,开发者可以在打包阶段使用宏来调用readFileSync和spawnSync等内置模块的功能。这一改进为开发者在构建过程中提供了更多的灵活性和便利,使得例如在打包时读取文件内容或启动进程等操作变得可行。此外,对 mock.module 的支持也得到了改进,解决了覆盖默认导出和重新导出时的问题,增强了在测试环境中模拟模块的功能。在解决 bug 方面,Bun 团队修复了多项问题,包括 bun install 在处理特殊情况时的错误,HTTP 客户端响应头缺失情况的改进,以及其他潜在的稳定性问题。
综合来看,v1.0.12 的发布是该项目在打造更加强大、易用工具方面的一大步。这些更新和改进预期将使 Bun 在 JavaScript 开发社区中的作用更为重要,为开发者提供更高效、更可靠的编程体验。
兼具运行时、打包工具、转译器和包管理器多重功能的 JavaScript 工具,在2024年1月中旬迎来了 1.0.23 版本的更新。本次更新针对社区反馈修复了 40 个 bug,共计获得了 194 个赞,使其在打包部署等方面的易用性有所提升。
引入 SQLite 数据库:轻松管理数据
v1.0.23 的一大亮点是引入了对 SQLite 数据库的支持。开发者现在可以直接在 Bun 中导入 SQLite 数据库,极大简化了在项目中使用 SQLite 的流程。通过简单的 import 语句,开发者能够轻松导入和管理数据库,这对于需要处理数据存储和读取的应用程序来说,无疑是一个巨大的便利。此外也支持将 SQLite 数据库嵌入到单文件可执行程序中。这意味着开发者可以创建包含数据库的独立应用程序,极大地简化了部署过程。
性能提升:更快的 TCP 和 bug 修复
在性能方面,v1.0.23 做出了显著的优化。特别是在 Linux 系统上,TCP 传输性能提升了4%,这得益于减少了系统调用次数。这一改进对于需要处理大量网络数据的应用来说,无疑是一个巨大的提升。
Node.js 兼容性和资源管理
对于 Node.js 的兼容性,v1.0.23 也进行了重要的更新,解决了一些先前版本中存在的问题。例如,现在可以在 Bun 环境中无缝使用 Node.js 内置模块,如 fs 和 path。还引入了对 TC39 提出的第三阶段提案 —— 资源管理(Resource Management)的支持。这意味着开发者可以更加有效地管理文件句柄、数据库连接和网络套接字等资源。
其他重要更新
SQLite 升级至 3.45.0 版本:加入了 JSONB 支持,使得存储和读取 JSON 数据更加高效。
嵌入.node 文件的支持:允许开发者在构建时将 NAPI 插件.node 文件嵌入,使得打包本地 Node.js 模块变得简单。
HTTP 服务器头部限制提升:从 50 提升到 100,增强了服务器的处理能力。
增强的 import.meta 支持:新增了 import.meta.dirname 和 import.meta.filename 支持,增强了与 Node.js 的兼容性。
fs/promises 中的 FileHandle 支持:使得文件操作更加灵活和强大。
众多 bug 修复和性能优化:包括 zlibBufferSync 的错误处理、Bun.spawn() 中的文件描述符泄漏、URL 处理的一致性问题等。
本次更新使 Bun 成为 Web 应用打包部署更便捷高效的选择;相信随着 Bun 的持续完善,会有更多开发者加入使用。
最新版本:1.1
JavaScript 开发者们瞩目已久的 Bun 1.1 版本于2024年4月上旬正式发布了!这次大版本更新带来了一系列令人兴奋的新特性和显著的性能提升,将为开发者们提供更加顺畅、高效的开发体验。首先为其支持 Windows 而欢呼吧!是的,现在 Windows 开发者也能享受到 Bun 带来的极速体验了。通过一行简单的 PowerShell 命令,即可在 Windows 10 及以上系统安装 Bun。更令人惊喜的是,Bun 在 Windows 上的测试覆盖率已经达到了 98%,这意味着你能在 Windows 上尽情使用 Bun 的各项功能,与 macOS 和 Linux 版本几乎完全一致。
说到速度,Bun 1.1 在各个方面都有了大幅提升。在 Windows 上进行依赖安装时,Bun 的表现尤其亮眼。以安装一个 Vite React 应用为例,使用 Bun,安装速度比 Yarn 快 18 倍,比 npm 更是快了 30 倍之多!Bun 还对 Windows 上的文件系统操作进行了深度优化,例如递归读取目录的速度比 Node.js 快了 22 倍。对 Node.js 兼容性的改进也非常显著。不仅修复了上千个 bug,还新增了大量 Node.js API 的支持。现在你可以在 Bun 中使用 HTTP/2 客户端、递归的 fs.readdir()、进程间通信等功能了。值得一提的是,Bun 还支持许多 Node.js 中没有文档说明的内部 API,让你的 npm 包可以在 Bun 下平滑迁移,而无需修改代码。
作为一个多才多艺的 JavaScript 运行时,Bun 1.1 在打包、测试、SQLite 支持等方面也有诸多亮点。全新的 bun build --target=node 命令让你轻松将 TypeScript 代码打包成可在 Node.js 下运行的文件。而 bun build --compile 命令更是一个黑科技,它能将你的 JS/TS 代码连同 SQLite 数据库一起编译成一个单文件可执行程序!
说到 SQLite,Bun 1.1 内置了一个高性能的 SQLite 接口,并且支持了多语句查询、导入预置数据库等实用功能。结合编译成单文件 exe 的功能,Bun 让嵌入式数据库应用开发变得无比简单高效。当然,Bun 1.1 在开发者体验方面也下了不少功夫。语法高亮的错误堆栈、更加简洁的调用栈信息、bun --eval 命令行直接执行脚本……Bun 力求为开发者提供更加友好便捷的使用体验。
还有很多很多的新特性,在这里无法一一列举。但可以肯定的是,Bun 1.1 是一个里程碑式的版本,它以其卓越的性能、丰富的功能和贴心的开发体验,势必将 JavaScript 开发推向一个新的高度。
Bun 在解码 Base64 方面比 Node.js v22 快
在2024年6月下旬的一则推文中,计算机科学家 Daniel Lemire 指出,JavaScript 运行时 Bun 在解码 Base64 输入时,比 Node.js 22 快了数倍。尽管两者都依赖于同一个底层库 simdutf 来进行实际解码,但 Node.js 在与其底层 JavaScript 引擎 v8 交互时遇到了瓶颈。Lemire 详细解释了问题的根源在于 Node.js 在开始解码字符串之前,需要通过调用 String::Value 函数来获取字符串的值。这一步操作会在 Node.js 内部分配一个数组,并要求 v8 将内容复制到这个数组中。由于无法直接访问 v8 中存储的字符串,Node.js 被迫将纯 ASCII 字符串转换为 UTF-16,导致了不必要的性能损失。
其分析显示,Base64 解码过程仅占总运行时间的五分之一,而字符复制过程则占据了将近一半的时间。这种多余的转换不仅浪费了资源,还使得整个解码过程效率低下。与此同时,Bun 通过不同的架构设计,避免了这些性能瓶颈。Bun 使用了 JavaScriptCore 引擎,并通过优化字符串处理路径,直接处理 8-bit 输入,避免了不必要的 UTF-16 转换。这样的设计使得 Bun 能够在 Base64 解码等操作中显著领先于 Node.js。
这则消息在开发者社区引发了广泛讨论。有开发者在 HackerNews 上分享了他们对 Bun 的使用体验,称其在速度和文档方面都表现出色,并推荐其他开发者尝试使用 Bun。尽管 Bun 仍然存在一些 API 和行为上的差异,但其性能优势和良好的开发体验使其成为 Node.js 的一个有力竞争者。Bun 的开发团队也在不断努力,通过阅读和优化 JavaScriptCore 的代码,致力于提升 Bun 的性能和兼容性。Lemire 的分析不仅揭示了 Node.js 在性能优化上的挑战,也为 Bun 的发展提供了宝贵的参考。开发者们期待着 Node.js 和 Bun 在未来能够共同推动 JavaScript 生态系统的进步。
2024年8月发布了 v1.1.25 版本,并高调宣布在最新的性能测试中,每秒可以处理 129 万个 HTTP 请求,一起来看看这个版本究竟做了哪些改进。
1、node:cluster 支持
Bun 现在支持 node:cluster API。通过使用这个 API,你可以在同一个端口上运行一组 Bun workers,从而实现更高的吞吐量和利用率。对于拥有多个 CPU 核心的机器来说,这是在生产环境中进行负载均衡的最佳选择。下面是一个工作原理的示例:
主要的 worker 会创建 n 个子 worker,一般数量与 CPU 核心数相同;
每个子 worker 都会监听相同的端口(使用 reusePort);
传入的 HTTP 请求会在子 worker 之间进行负载均衡分配处理。
目前 reusePort 只在 Linux 系统上有效。在 Windows 和 macOS 上,操作系统无法像预期那样对 HTTP 连接进行负载均衡处理。
2、开始支持 V8 公开 C++ API
Bun 现在支持了 V8 的公开 C++ API,这使得像 cpu-features 这样的软件包可以在 Bun 中正常工作。这是一个值得注意的变化,因为 Bun 不是像 Node.js 一样构建在 V8 之上。相反,Bun 是构建在 JavaScriptCore 上的,JavaScriptCore 是 Safari 使用的 JavaScript 引擎。
这意味着官方需要实现一个自己的 C++ 翻译层,将 V8 的 API 与 JavaScriptCore 进行对接。这是一项非常艰巨的工程,JavaScriptCore 和 V8 以不同的方式表示 JavaScript 值。V8 使用了移动式、并发的垃圾收集器,并且有明确的句柄作用域,而 JavaScriptCore 使用了非移动式的并发垃圾收集器,它会扫描堆栈内存(类似于隐式句柄作用域)。
什么要支持 V8 的内部 API?
最初 Bun 并没有打算支持这些 API,但是在发现许多受欢迎的软件包依赖于这些 API 后,开始决定加以支持,这些软件包包括:
cpu-features
node-canvas@v2
node-sqlite3
libxmljs
以及许多使用nan的软件包
在这个版本中,只有cpu-features从上述列表中受到支持,其他 API 正在努力支持中。
3、使用 @aws-sdk/client-s3 实现的 S3 上传速度提高了5倍
Bun 修复了 node:http 客户端实现中的一个 bug,这使得上传到 S3 的速度提高了5倍。
4、独立可执行文件中的 Worker
Bun 的单文件独立可执行文件现在支持绑定 Worker 和 node:worker_threads。
5、使用 OMGJIT 在 Windows 上实现更快的 WebAssembly
Windows 上的 WebAssembly 现在支持 JavaScriptCore 的优化即时编译器 (JIT),称为 OMGJIT。
6、Node.js兼容性改进
execa 现在可以正常工作了。Bun 修复了一个不能正确支持 EventTarget的setMaxListeners 的 bug。这个问题影响到了像 execa 这样的包,会导致错误报 undefined is not a function。在调用 destroy() 关闭 TCP 连接后,与 node:net 的连接出现挂起,也是一个 bug 修复,在调用 destroy() 关闭 TCP 连接后,进程没有始终正确退出,因为事件循环仍然处于活动状态。这有时会导致像 postgres 这样的包无限期地挂起。
Bun在2024年11月下旬迎来了最近迎来了一项重要更新:正式支持 Musl libc。这使得 Bun 可以在以 Alpine Linux 为代表的轻量级 Linux 发行版上运行。Alpine 凭借其极小的镜像体积(通常不足 5MB)和高安全性,已经成为容器化应用的首选基础镜像。这一更新让开发者可以将 Bun 部署在这些精简的系统中,大幅降低运行环境的资源占用,同时提升启动速度。这对许多使用 Docker 的开发者尤其有意义,因为大量 Docker 镜像都是基于 Alpine 构建的。
Musl libc 的支持不仅解决了过去在这些环境中遇到的兼容性问题,更拓展了 Bun 的适用场景。对于微服务架构、边缘计算、资源受限的云环境,这种高效、轻量的组合显得尤为契合。通过减少对传统 glibc 的依赖,开发者在构建和部署时可以保持镜像的精简性,同时不牺牲运行时性能。除了这一关键更新,Bun 的开发团队也没有停下优化的步伐。二进制文件大小减少了 6 MB,让 Bun 变得更加精简;文件系统操作性能提升显著,尤其是对小文件的 fs.readFile,速度有了肉眼可见的改进。此外,Bun 增加了对 JUnit XML 测试输出的支持,这一功能极大地方便了与 CI/CD 工具的集成,让开发和交付更加高效。
在开发者关心的内存管理方面,Bun 表现也更加稳健。长时间运行的进程现在能够更好地利用内存,避免了资源浪费或内存泄漏问题。此外,Node.js 的兼容性也得到了进一步增强。团队修复了 ReadableStream 和 HTTP/1.1 等多个兼容性问题,同时优化了 CSS 解析和依赖管理工具的表现。这些改进为开发者提供了一个更加可靠和高效的运行环境。Bun 正在以惊人的速度发展,而对 Musl libc 的支持无疑是一个关键节点。它不仅让轻量级 Linux 系统的用户大大受益,也为整个生态带来了更广阔的想象空间。
最新版本:1.2
JavaScript运行时新秀 Bun 于2025年1月下旬发布 v1.2 版本,这是自2024年4月发布 1.1 以来最重要的一次更新;本次更新不仅大幅提升了与 Node.js 的兼容性,还为开发者带来了内置的数据库支持和云服务集成能力,进一步强化了其 “全能工具包” 的定位。
Node.js 兼容性获得突破性进展
在此次更新中,最引人注目的是 Bun 在 Node.js 兼容性方面取得的突破性进展。Bun 团队改变了此前被动修复问题的策略,转而主动运行 Node.js 的测试套件来提升兼容性。这一改变使得包括 http、crypto、dgram 等多个核心模块的测试通过率超过 90%。特别值得一提的是,Express 这个广受欢迎的 Web 框架在 Bun 中的性能提升了 3 倍,这无疑会吸引更多开发者尝试将项目迁移到 Bun 上。
云原生时代的标配:内置数据库与对象存储支持
此次更新的另一大亮点是为开发者带来了内置的 PostgreSQL 客户端和 S3 对象存储支持。这意味着开发者无需安装额外的依赖包,就能直接与这些关键的云服务进行交互。尤其是 Bun 的 S3 客户端,其性能测试显示比使用传统 AWS SDK 的 Node.js 应用快 5 倍。这一改进将显著降低云原生应用的开发门槛。
包管理器也要与时俱进
作为一个全能型工具包,Bun 的包管理功能也获得了重要升级。最显著的变化是将默认的二进制锁文件(bun.lockb)改为文本格式的 bun.lock。这一改变虽然看似简单,但解决了代码审查、版本控制和冲突解决等实际问题。更值得注意的是,尽管切换到了文本格式,新版本的 bun install 性能反而提升了 30%,这体现了 Bun 团队在性能优化方面的执着。
测试运行器更进一步
其内置测试运行器在此次更新中也得到加强,新增了 JUnit 和 LCOV 报告支持,这使得它更容易集成到现有的 CI/CD 流程中。此外,新增的内联快照测试等特性,也让测试体验更接近主流测试框架如 Jest。
性能持续领先
作为以性能著称的 JavaScript 运行时,Bun 1.2 在多个方面都实现了显著的性能提升。从 HTTP/2 服务器到文件系统操作,从 JSON 解析到控制台输出,几乎每个常用操作都变得更快。特别是在 Windows 平台上,JavaScript 执行性能获得了全面提升,这表明 Bun 正在努力填补其在 Windows 支持方面的短板。
展望未来
通过这次更新,Bun 展示了其在全栈开发工具链中的野心。从更完善的 Node.js 兼容性到云服务的原生支持,从更快的包管理到更强大的测试工具,Bun 正在将自己打造成一个真正的全能型开发工具包。特别是在云原生开发方面的创新,显示出 Bun 团队对未来开发趋势的敏锐把握。然而,挑战依然存在。尽管 Node.js 兼容性有了显著提升,但距离完全兼容仍有距离。同时,如何在保持高性能的同时确保稳定性,也将是 Bun 团队需要持续面对的挑战。
总的来说,v1.2 的发布展示了这个项目的快速发展势头,也证明了 JavaScript 生态系统仍有巨大的创新空间。对于开发者来说,现在可能是一个合适的时机来认真评估 Bun 是否适合自己的项目需求。毕竟,在性能、开发体验和云原生支持等方面,Bun 已经展现出了独特的优势。
项目主页:https://github.com/oven-sh/bun