返回

文章详情

Bun 1.4

Hacker News2026年8月20日 14:10

Bun 是构建和测试全栈 JavaScript 和 TypeScript 应用的完整工具包。如果你是 Bun 的新手,可以从 Bun 1.0 博客文章中了解更多信息。curl curl -fsSL https://bun.sh/install | bash Bun 1.4 从 Node.js 测试套件中新增了 +1,517 个测试 - 自 Bun 1.0 以来在 Node.js 兼容性方面的最大提升。Bun v1.4 还修复了超过 2,900 个问题。它将空闲 CPU 使用率降低了 5 倍,将内存使用率降低了多达 35%,并在 Linux 上启动更快 50%。它新增了 Bun.Image、Bun.WebView、Bun.markdown、Bun.cron()、Bun.Terminal、bun run --parallel、bun test --parallel、bun audit fix、bun dedupe 和 bun prune。并且它将 Bun 从 Zig 重写为 Rust。本文涵盖了自 Bun 1.3.0(标记为新到 Bun v1.4)以来我们发布的所有内容。要升级:bun upgrade Node.js 兼容性 # Bun 被设计为 Node.js 的替代品。我们从 Node.js 测试套件中添加了 +1,517 个测试,以便在每次提交 Bun 的时候运行。node:http、node:fs、node:cluster、node:timers、node:zlib、node:vm 和 node:stream 通过了 Node 自己测试的 97%;node:quic 99%;node:events、node:trace_events 和 node:sqlite 100%。Node.js v26.3.0 测试套件 · 在每次提交上通过 +1,517 个新通过的测试 quic 235 / 237 +235 http 重写了 403 / 415 +193 fs 349 / 358 +133 tls 191 / 224 +106 http2 重写了 261 / 280 +102 repl 82 / 109 +77 stream 254 / 262 +61 worker 116 / 157 +57 process 160 / 190 +45 net 171 / 191 +39 https 61 / 65 +39 internal 68 / 108 +35 cluster 85 / 88 +31 trace_events 30 / 30 +30 webcrypto 39 / 50 +28 crypto 123 / 135 +27 vm 98 / 101 +25 webstreams 28 / 38 +23 test_runner 28 / 81 +21 module 68 / 93 +19 diagnostics_channel 36 / 69 +19 sqlite 18 / 18 +18 child_process 105 / 116 +15 inspector 22 / 110 +14 来自 Bun 的节点测试/并行套件的每个模块通过计数,Bun 1.3 → 1.4。刻记为 1.3 基线。Bun 还没有 100% 兼容 Node.js。实际上,现有的 JavaScript 生态系统中的大部分工作正常。你可以在这里更详细地跟踪 Bun 的 Node.js 测试套件进展。Playwright v1.4.0 # Playwright 现在可以在 Bun 上运行:通过 connectOverCDP() 驱动浏览器,用 playwright test 和 playwright.config.ts 运行你的套件,打开 --ui,并在 Windows 上启动 Chromium。Next.js 16 v1.3.2 # bun --bun next build 在配有 Turbopack 和 React 编译器的 Next.js 16.3 上正常工作。vitest v1.4.0 # vitest 在 Bun 下运行,包括 --coverage,具有线程和分叉池。OpenTelemetry v1.4.0 # OpenTelemetry 的 http 和 fs 仪表导出范围,并且 shimmer 和 require-in-the-middle 修补打包代码。dd-trace v1.4.0 # dd-trace 持续跟踪并 @datadog/pprof 配置文件;它们链接的 V8 C++ API 已实现。其他 Node.js 兼容性改进 # 每天,Bun 离 100% Node.js 兼容性越来越近。现在更多的包在 Bun 中无需更改即可正常工作:Nuxt : nuxt dev 连接 HMR 和 Nuxt DevTools。testcontainers 和 dockerode : container.exec() 正常运行。https-proxy-agent 和 socks-proxy-agent : http.request() 通过它们进行隧道。crawlee : 通过 proxy-chain 爬取。@grpc/grpc-js 和 ConnectRPC : Envoy 后的服务器和 AWS ALB 后的客户端正常工作。amqplib : 连接到 RabbitMQ。@aws-sdk/client-s3 : 流式上传正常工作。TypeORM : 根据 tsconfig.json 中的装饰器设置启动。nock : 拦截 http 和 https 请求。Fastify inject() 和 light-my-request : 工作正常。happy-dom : 不再破坏 console.log 。piscina : 可以运行。Bun 中的新 Node.js API:worker_threads : resourceLimits,stdout,stderr 和 eval 选项。ws : 'upgrade' 和 'unexpected-response' 事件。socket.upgradeTLS({ isServer: true }) : 服务器端 STARTTLS。node:cluster : 在 worker 之间共享监听套接字。node:repl,node:trace_events,node:domain : 已实现。生产 # Bun v1.4 使用更少的内存、更少的 CPU,并且启动更快。直到 Bun v1.4,Bun 使用两种内存分配器 - JavaScriptCore 的 libpas 分配器和 mimalloc。Bun 中的 JavaScriptCore 现在使用 mimalloc(改善内存回收),我们已经扩展了 mimalloc,增加了部分页面清理、在 JavaScript 空闲时释放内存的清理线程,以及改进的延迟归零。CPU 使用情况 # 对于基于 Bun 构建的大型长时间运行应用 Claude Code,生产 CPU 使用率下降了 2 倍:p99 从 24% 降至 10%,p50 从 5.8% 降至 2.5%。对于一个小型的“hello world”应用,空闲 CPU 使用率下降了 5 倍。我们通过优化垃圾回收器定时请求 GC 的时机、将 JavaScriptCore 访问 Strong 根的方式从链表切换到分段数组的链表,并减少 futex 调用数量,以及上述提到的 mimalloc 更改来实现这一点。内存使用情况 # 使用 Bun 的 HTTP 服务器的应用应会看到 13% - 48% 的内存使用率降低。在负载下的峰值内存(1,000,000 个请求,64 个连接;对于 Next.js 和 Vite 为 100,000):

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡