上周,随着将 JavaScript 引入服务器并在随后十年中为其辩护的创始人宣布其公司 Deno 加入 Cloudflare,JavaScript 运行时战争正式落下帷幕。表面上看,这似乎是一起典型的硅谷收购案:创始人表示对未来充满期待,公司强调对使命的热情,而员工则痛苦地理解了“Prof Stack”的含义。但仔细想想,一家已经拥有自己的运行时的部署平台的公司去收购一个更差的运行时,这本身就有些奇怪。

在本期视频中,我们将揭示 Cloudflare 究竟买到了什么,了解 Ryan Dahl 为何现在认为重新实现 Node.js 是一个错误的主意,并深入探讨 Deno 的未来。剧透一下:前景并不乐观。现在是 2026 年 10 月 15 日,欢迎收看《代码报告》。

早在 2009 年,Ryan Dahl 在 JS Conf EU 大会上向世界介绍了 Node.js——一个允许你在服务器端编写 JavaScript 的新开源运行时。九年后的同一天,他带着题为《关于 Node.js 我后悔的十件事》的演讲重返舞台。他在大部分时间里抨击了原始项目,随后透露他从头开始重建了这个运行时,但这次去除了所有的遗憾。

他将这个新项目命名为 Deno。与 Node.js 不同,Deno 自带格式化程序、代码检查器和测试运行器;它原生支持 TypeScript,默认安全,并提供了一种合理的外部包管理方式。Deno 1.0 于几年后的 2020 年发布,到了 2021 年,Ryan 宣布了他们的无服务器平台 Deno Deploy,并完成了新一轮 500 万美元的种子轮融资。

起初,一切进展顺利。Netlify 和 Supabase 基于 Deno 构建了边缘函数,Slack 也用它来驱动其新的应用平台。次年即 2022 年,他们从红杉资本获得了 2100 万美元的 A 轮融资,推出了名为 Fresh 的网络框架。看起来他们真的有机会成为服务端 JavaScript 的未来。

然而,随后他们的势头消失了。最大的问题在于 Node.js 并没有就此躺平。在那几年里,Node.js 增加了 fetch API、权限模型以及直接运行 TypeScript 文件的能力。因此,Deno 失去了其竞争优势。与此同时,那些本应带来收入的产品未能获得足够的市场反响来证明其估值是合理的。

Deno Deploy 的区域从 35 个减少到只有 6 个;2023 年推出的 Deno KV 数据库从未走出测试版阶段;而 Fresh 框架甚至出现了数月不发布新版本的情况。与此同时,Ryan 卷入了一场与 Oracle 关于 JavaScript 商标的法律纠纷中——Oracle 在 Ryan 创建 Node.js 的同一年收购了 Sun Microsystems,从而继承了该商标。

这是一项高尚的事业,但为律师筹款的 GoFundMe 可能并不是红杉资本开出 2100 万美元支票时所期望看到的。去年,这种负面情绪变得如此严重,以至于开发者 David Bushell 写了一篇博客文章,宣称 Deno 基本上已经死亡,因为每一个新版本都只是无尽的追赶游戏中更多的 Node.js 兼容性修复补丁。

讽刺的是,Ryan 也得出了同样的结论,只是他花了一点时间才接受这一点。因此,今年早些时候,团队开始研究运行时之外的难题,例如跨机器分布计算、协调状态和扩展规模。他们找到的最佳答案是 Cloudflare 的 Durable Objects(持久对象)。

如果你不熟悉的话,Durable Objects 本质上是微小的单线程服务器,每个都有自己的私有 SQLite 数据库以及保持 WebSocket 连接的能力。但问题是,Durable Objects 真的只能在 Cloudflare 上运行良好。因此,在八月,Deno 团队发布了他们自己的版本,称为 Cell D,允许你以极低的成本在自己的服务器上运行 Durable Objects。

令人惊讶的是,Cloudflare 对此感到非常高兴。在公告帖子中,Cloudflare Workers 的创建者表示,人们指责 Cloudflare 利用 Workers 锁定开发者,但自 2022 年以来,Workers 运行时一直是开源的。他们多年来一直希望构建一个可自托管的版本,只是从未付诸行动。

他甚至承认去年春天他自己尝试过构建这样一个版本但未能成功。因此,当 Deno 团队通过 Cell D 解决这个问题时,Cloudflare 做了一家市值 1230 亿美元的公司会做的事——他们直接收购了整个公司。

计划是让 Ryan 和联合创始人 Bert Belder 将 Cell D 合并到 Cloudflare 的开源 Workers 运行时中,以便任何人都可以在自己的服务器上运行 Workers 和 Durable Objects,并获得 Cloudflare 的官方支持。由于我们不能在不谈论它的情况下看完整个视频,Ryan 表示重点在于 AI Agent(智能体),因为 Durable Objects 非常适合需要廉价计算、持久状态和实时连接的代理。

但不幸的是,如果你使用的是除 Cell D 之外的任何 Deno 产品,你就惨了。Cloudflare 表示他们只会在接下来的一年内继续为 Deno 发布错误修复和安全补丁。但在那之后,他们将完全停止开发。如果你今天使用的是 Deno Deploy,你大约有 6 个月的时间进行迁移。

最终,随着 Anthropic 收购了 Bun,而 Cloudflare 在六月收购 Vercel(原文误写为Vee)之后又买下了 Deno,唯一不被拥有云服务的公司控制的主要 JavaScript 运行时就是 Node.js——也就是 Ryan 花了最后 8 年试图取代的那个。

所以,如果你是 Deno 开发者需要迁移,至少可以通过 JetBrains——本期视频赞助商——让这次转换的成本稍微低一些。由于我童年的财务创伤,每次我的编程代理做任何事情时,我的大脑开始强迫性地计算它将花费多少 Token。

因此很高兴看到每个 JetBrains 账户现在都附带一个免费的基线模型,称为 Juni Light。它位于你的 IDE 和 CLI 中。没有倒计时的试用期,这只是一个免费提问和处理繁琐工作而不致让家庭破产的方法。

我在 Juni CLI 中用于一个旧的个人项目,重命名了一堆函数并搭建了一些测试。它在几分钟内完成了所有工作,花费为 0 美元。对于更复杂的工作我仍然会切换到前沿模型,这很容易做到,因为 Juni Light 位于 JetBrains Air 内部,你可以在代理提交更改之前并行运行多个代理并审查所有更改。

从今天开始在下方链接免费使用 Juni Light。这就是《代码报告》。感谢观看,我们下期再见。