Deno 团队并入 Cloudflare:运行时维护一年后停更,celld 将合并进 workerd

Deno + Cloudflare 官方公告配图

Ryan Dahl 在 2009 年写了 Node.js,把 JavaScript 带上服务器;2018 年他又启动了 Deno,试图修正 Node 的设计遗憾。2026 年 10 月 9 日,Deno 官方博客宣布:整个 Deno 团队加入 Cloudflare,同时给出一份精确到月的收缩时间表。Deno 运行时将再维护一年,之后官方停止开发;托管服务 Deno Deploy 六个月内关停。Node.js 的创造者、第二个运行时的缔造者,把自己下一阶段的工作并入了别人的平台。

一份精确到月的退出时间表

官方公告列出了四条安排,每一条都有明确边界:

产品官方安排
Deno 运行时再支持一年,每月发布包含 bug 修复与安全更新的版本;一年后官方结束开发。项目保持开源(MIT),欢迎社区接手
Deno Deploy继续运行六个月后关停,付费用户将获得迁移到 Cloudflare Workers 的支持
JSR(JavaScript Registry)继续运营,基础设施迁移到 Cloudflare
rusty_v8持续维护,并逐步整合进 Cloudflare 的 workerd

四条安排的分量并不相同。运行时一年维护期意味着所有 Deno 项目都有一个明确的决策窗口:要么在这一年里规划迁移,要么赌社区 fork 接得起来。Deno Deploy 的关停最伤,因为它是 Deno 商业化的主体,从零边际成本的 hello world 到全球分布的生产应用都跑在上面,六个月对个人项目够用,对企业级迁移相当紧张。JSR 是 Deno 生态里处境最好的资产,这个 2024 年上线的包注册表本来就兼容 npm 生态,基础设施搬到 Cloudflare 之后大概率作为独立服务活下去。rusty_v8 是 Deno 项目的 V8 引擎 Rust 封装,并入 workerd 意味着这项底层工作将直接服务于 Cloudflare 的运行时。

从 Node 到 Deno 到 celld:一条技术路线的完整闭环

Ryan Dahl 在与 Cloudflare Distinguished Engineer Kenton Varda 的联合博客里,把这条路线讲得很完整。2009 年他在柏林的一个仓库里演示 Node.js,那是一个 500 行代码的 JavaScript IRC 服务器。这个演示让他在意的问题延续了很多年:单机、单线程的模型能处理大量连接,但一旦要扩展到多台机器、共享频道、持久化消息历史,开发者就得自己组装全部基础设施。

Deno 是他对「更强抽象」的第二次尝试,但运行时层面的改进没有触及真正的难点。真正让他找到答案的是 Cloudflare 的 Durable Objects(下称 DO):一个带 SQLite 数据库的分布式单例。每个 DO 是一台可独立寻址的小服务器,内部 JavaScript 单线程执行、原生处理 WebSocket、本地 SQLite 可以同步访问。给每个聊天频道分配一个 DO,数据分片和连接路由就随架构天然成立,应用不需要自己写分片逻辑。Queues、KV、Workflow API 这些服务,本身都是构建在 DO 抽象之上的。

运营 Deno Deploy 让团队看清了云基础设施的复杂度:多云、多数据库、深度耦合的服务。于是有了今年 8 月发布的 celld:一个 Rust 编写的单二进制程序,把 Workers 和 DO 的运行模型搬到自己的机器上,唯一的外部依赖是一个 S3 兼容存储桶,所有协调都通过存储桶完成,没有成员协议、故障检测器或共识服务。从 Deno 到 Deploy 再到 celld,Ryan 追问的一直是同一件事:分布式能不能成为编程模型的一部分,而不是每家公司自建的运维工程。

Cloudflare 缺的那块拼图,celld 正好补上

Cloudflare 博客这篇公告里信息量最大的部分,来自 Kenton Varda 的自述。workerd(Cloudflare Workers 的运行时)其实是开源的,生产环境跑的就是同一份代码,但很多人并不知道,用的人也少。Kenton 承认了原因:Cloudflare 发布了运行时,却没把周边工具链和服务生态建起来,只是指望社区补位,结果社区没有来。

更关键的短板在 DO。workerd 实现了 DO,但只支持单实例,本地测试够用,无法横向扩展。Kenton 写道,代码里从最初发布起就留着相关 TODO 注释;Cloudflare 生产环境的 DO 路由系统是为数百个节点设计的庞然大物,依赖一支 SRE 团队维护的外部服务,自托管场景需要的完全是另一种设计。他自己在去年春天尝试过一次,没有成功。

celld 出现时 Cloudflare 的态度是「我们很高兴」:有人做了一个与自家实现完全兼容、又专注于自托管和可扩展性的 Workers 实现,而且正是他们想建而没建出来的东西。合并计划也随之明确:Ryan Dahl 和 Bert Belder 将领导一个新团队,把 celld 的代码和设计思路并回 workerd,让自托管 Workers 成为官方一等支持的使用方式。Kenton 说他会用这套东西在家里跑一个 Cloudflare OS 实例。

一场关于「锁定」的公开辩论

联合博客里有一整节在回应一个流行论调:Workers 与其他云平台架构不同,是为了把用户锁进 Cloudflare。按这个理论,celld 这种开源实现是越狱工具,而 Cloudflare 应该敌视它。

Kenton 的反驳分三层。第一,Workers 的设计不同是因为它更好:把应用跑在全球数百个节点上,成本和运维复杂度低于主流竞品;bindings 机制同时简化了外部资源配置并提升了安全性;DO 让实时协作这类在经典三层架构里难做的系统变得可行。第二,「锁定」损害生意本身:2022 年 Cloudflare 向 Shopify 等客户推销 Workers for Platforms 时,得到的反馈是 Workers 运行时不开源就不会签,于是 Cloudflare 开源了它,还确实有客户用 workerd 迁移走了。第三,结论是原话:开源并给用户留逃生通道,是好生意。

这场辩论的裁判是接下来的工程产出。celld 并入 workerd 后,自托管 Workers 是否真的能做到「radically easy」,社区很快就能验证。

JS 三大运行时,没有一个是独立的

把镜头拉远,这次合并改变了 JavaScript 运行时的整个格局。目前三个主流运行时:Node.js 由 OpenJS 基金会托管,背后是众多企业共同治理;Bun 在 2025 年 12 月被 Anthropic 收购,公告发布时 Claude Code 刚跑出六个月 10 亿美元 run-rate,Bun 转型为 AI 编码工具的基础设施;Deno 现在整体进入 Cloudflare。三个运行时,分别挂在基金会、AI 公司和云厂商之下,没有一个保持独立。

这个格局在 Hacker News 的讨论里(该帖以 533 分登上当日榜首)激起的主要情绪是担忧。有人指出运行时停更这条信息在 Deno 官方公告里位置靠后、在 Cloudflare 公告里则完全没有出现;有开发者直言公司刚把业务从 Node 迁到 Deno,现在要面对二次迁移;也有人认为 Bun 已被 Anthropic 收购、Deno 事件尘埃落定后,竞争事实上已经退场。对 Deno 团队的选择,同情与理解并存:一家累计融资约 2600 万美元(公开融资记录显示 2022 年 6 月 A 轮 2100 万美元)的公司,很难长期独自供养一个浏览器级复杂度的 JS 运行时。

Ryan 在公告里特意点了 AI 这个变量:agent harness(智能体运行框架)需要便宜的无服务器执行、持久状态、WebSocket 和高层语言接口,DO 恰好把这些能力装进同一个抽象。他在公告结尾留下了新邮箱 [email protected],点名寻找「在自己基础设施上大规模跑 agent」的团队。这既是 Cloudflare 收购的技术逻辑,也是这次合并后最先可能出成果的方向。

如果你的项目在 Deno 上

四类处境对应四套动作。Deno Deploy 用户:关停倒计时六个月,付费用户找官方要迁移支持,免费用户自己动手,Workers 的编程模型与 Deploy 高度同源,迁移成本主要集中在绑定和生态差异上。Deno 运行时用户:一年维护期内安全更新不断供,长期项目建议评估 Node 或等 workerd 自托管方案成熟,短期项目不动也没风险,MIT 协议保证 fork 路径始终存在。JSR 用户:不受影响,注册表继续运营。对自托管 Workers 感兴趣的团队:celld 现在就能用,合并后的 workerd 自托管版本值得等官方公告。

Deno 官方公告的结尾没有感伤,只有一句工作交接式的陈述:他们决定把未来的开发投入这个共享平台,而不是继续维护一个独立的运行时和托管服务。一个造了两次轮子的人,第三次选择了修路。

来源: