彻底变革 JS 并发:Bun 提交 WebKit 补丁,引入共享内存多线程机制

Bun 的创始人 Jarred Sumner 提交了一个极具野心的实验性 PR,旨在为 JavaScriptCore 引入“共享内存线程”机制,彻底改变 JavaScript 的并发模型。目前的 Web Workers 模型依赖隔离的堆内存、结构化克隆和消息传递,性能开销大且编程复杂。该提案允许开发者在不同核心上直接共享对象,无需序列化或 postMessage,实现了类似 Java、C# 或 Go 的多线程编程范式。PR 引入了 new Thread(fn)、Lock、Condition 等同步原语,并扩展了 Atomics 以支持普通对象属性。目前该功能已移除全局解释器锁(GIL),通过了大量测试用例,但在单线程性能回归控制和复杂性维护上仍面临挑战,可能不会合并到上游 WebKit,但仅作为 Bun 的特性也足以引发行业震动。

事件分析

此项提案直击 JavaScript 在高性能计算场景下的核心痛点。传统 Web Workers 模型因数据隔离导致的序列化成本,使其难以应对复杂的图遍历、解析器或服务器端共享缓存等重负载任务。Bun 方案通过 TID 标记的“分段蝴蝶”对象模型和写时复制策略,试图在保持内存安全(无数据竞争导致的堆损坏)的前提下,实现真正的内存共享。这不仅是对 JavaScriptCore 对象模型、垃圾回收机制和 JIT 编译器的底层重构,也是 JS 运行时向传统系统级语言并发模型的一次激进靠拢。若能成功落地,将极大提升 Bun 在服务端和高密度计算场景下的竞争力,但也给引擎的长期维护带来了巨大的复杂度挑战。

💡 核心观点:JavaScript 终于撕下“单线程”的标签,Bun 试图通过共享内存机制将其推向与 Go、Java 同等的高性能并发竞技场。

原文链接:Hacker News

C code80.ai · AI 编码 API 聚合 Claude / GPT 多模型统一接入,稳定不限速,按量计费,几行配置接入 Claude Code。 了解一下 ›

抢沙发

评论前必须登录!

立即登录   注册