Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。
所谓 "all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (native bundler)、转译器、task runner、npm 客户端,以及 fetch
、WebSocket
等 Web API。
最新发布的 0.2.0 较上个版本有了显著的性能提升:
此外还包含其他变化:
- 新增
bun --hot
命令,用于为 Bun 的 JavaScript runtime 提供热加载和零停机重启
- 新增
Bun.spawn
和Bun.spawnSync
(process spawning API) - 新增
Request.body
- 传入的 HTTP request body 使用ReadableStream
进行流传输 - 针对
Bun.serve
(HTTP server) 和fetch()
(HTTP client) 的大量 bug 修复和可靠性改进 - 重写
setTimeout
和setInterval
,提升了性能和可靠性 - 降低
Bun.serve
内存使用(较之前减少了 2.7 倍多),以及转向使用Response
对象
- 支持在 package.json (
"#foo"
imports) 中使用"imports"
-
在使用 http server, websockets 等功能时,
"bun:test"
速度提升了 300 多倍 -
支持使用
Bun.file(path).writer()
来增量写入文件 - Array.prototype.indexOf for strings 性能提升了 30%
- Array.prototype.map 性能提升了 37%
- String.prototype.substring 性能提升 1.4 - 4 倍
- String.prototype.replace 性能提升 2.8 倍
- Bun 的
new Blob(["hello world"])
比 Node 快 75 倍
下载地址 & Release Note