主要观点总结
Bun v1.1.25版本发布,带来了一系列改进和优化。包括支持node:cluster API实现更高的吞吐量和利用率,支持V8公开C++ API使得某些软件包可以在Bun中正常工作,修复了node:http客户端实现中的bug导致S3上传速度提高5倍,独立可执行文件中的Worker支持以及WebAssembly在Windows上的优化等。
关键观点总结
关键观点1: 支持node:cluster API
Bun现在支持node:cluster API,可以在同一个端口上运行一组Bun workers,实现更高的吞吐量和利用率,尤其在拥有多个CPU核心的机器上,是生产环境中进行负载均衡的最佳选择。
关键观点2: 支持V8公开C++ API
Bun开始支持V8的公开C++ API,这使得像cpu-features这样的软件包可以在Bun中正常工作。这也是一项艰巨的工程,因为JavaScriptCore和V8以不同的方式表示JavaScript值。
关键观点3: 修复了node:http客户端实现中的bug
Bun修复了node:http客户端实现中的一个bug,导致上传到S3的速度提高了5倍。
关键观点4: 独立可执行文件中的Worker支持
Bun的单文件独立可执行文件现在支持绑定Worker和node:worker_threads,可以在编译独立可执行文件时,将多个文件作为独立的入口点进行打包。
关键观点5: Windows上的WebAssembly优化
Windows上的WebAssembly现在支持JavaScriptCore的优化即时编译器(JIT),称为OMGJIT。此外,Bun还修复了一些与node:net的连接问题,如调用destroy()关闭TCP连接后的事件循环问题。
文章预览
近期,Bun 发布了 v1.1.25 版本,并高调宣布在最新的性能测试中,每秒可以处理 129 万个 HTTP 请求,我们一起来看看这个版本究竟做了哪些改进吧。 node:cluster 支持 Bun 现在支持 node:cluster API。 通过使用这个 API,你可以在同一个端口上运行一组 Bun workers ,从而实现更高的吞吐量和利用率。对于拥有多个 CPU 核心的机器来说,这是在生产环境中进行负载均衡的最佳选择。 下面是一个工作原理的示例: 主要的 worker 会创建 n 个子 worker,一般数量与 CPU 核心数相同; 每个子 worker 都会监听相同的端口(使用 reusePort ); 传入的 HTTP 请求会在子 worker 之间进行负载均衡分配处理。 import cluster from "node:cluster" ; import http from "node:http" ; import { cpus } from "node:os" ; import process from "node:process" ; if (cluster.isPrimary) { console .log( `主进程 ${pro
………………………………