首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

谢谢你,德诺

摘要

Ryan Dahl announced last week that the Deno team is joining Cloudflare. The Deno runtime winds down over the next year, JSR keeps running on Cloudflare's infrastructure, & the team's new job, per Clou...

the Deno that you Node was The Cloudflare not were
2026-10-16 1 阅读 约7分钟阅读 jcbhmr
分享:
字号:
Ryan Dahl 上周宣布 Deno 团队将加入 Cloudflare。 Deno 运行时将在明年结束,JSR 继续在 Cloudflare 的基础设施上运行,根据 Cloudflare 的帖子,团队的新工作是将 Deno 的 celld 合并到workerd 中。该公告是在 Deno 2 发布两年后的第二天发布的。 Bun 十个月前加入 Anthropic。诱人的结论是,替代运行时实验已经结束,Node 默认获胜。事实上,生态系统已经获得了 Deno 所推动的好处,但并非来自 Deno 本身。竞争对于健康的生态系统至关重要不幸的是,Deno 从未真正在生产中达到临界质量; Node 在 2026 年和 2018 年一样占据主导地位。 Deno 所做的是重振现有技术并向现有技术施加压力,而且这种压力不仅仅以一种方式运行。 Deno 一开始就彻底决裂。 Ryan 于 2018 年在 JSConf EU 上发言,列出了他与 Node 不同的做法:默认拒绝权限、TypeScript 作为一流输入、服务器上的 Web 标准 API、仅 ES 模块、单个可执行文件。并且,明确地说,没有 npm ,没有 package.json 和没有 node_modules 。依赖关系就是 URL。幻灯片清楚地说明了这一点:“无需列出依赖项。”我们中的许多人在 npm 和 Node 上花费了数年时间,对最后一部分持怀疑态度(不是权限或 TypeScript,它们显然很好),并且当时是这么说的。我们以前也经历过这样的情况,在热链接时代,每个页面都会将 jquery.min.js 从其他人的服务器上拉下来,并在移动或受到损害时崩溃。 URL 告诉您某物在哪里,而不是它是什么。一旦您关心测试的字节是您发送的字节,您就需要一个完整性哈希并在某处记录它,并且您已经重新发明了锁定文件。 Node TSC 的 Matteo Collina 在 2020 年表示,“另一起 left-pad 事件即将发生,但这一次没有‘中央实体’可以修复它。”这种怀疑有些是防御性的,但最终恰好是正确的。 Deno 1.0 于 2020 年按照最初的条款发布,然后在接下来的四年里一次一点地把它们带回来。首先是 deps.ts 约定,一个重新导出每个 URL 的文件:除了名称之外的所有内容的清单。然后是 lock.json ,每个 URL 的完整性哈希:一个锁文件。然后导入映射,这样您就可以再次编写裸说明符。今天,Deno 自己的文档建议通过 HTTPS 导入使用注册表,因为它们“可以跨文件漂移到不同版本”并且“信任服务主机”。这些是 2018 年的反对意见,并作为指导进行了重申。然后包子出现了。 Bun 0.1 于 2022 年 7 月发布,但押注相反:从头开始重建工具链以提高速度,但运行现有的 npm 包、读取 package.json 并充当 Node 的直接替代品。大约六周后,Deno 发布了“Deno 的重大变化”,宣布 npm:说明符,承诺让 80-90% 的 npm 包在三个月内运行,并成为“最快的 JavaScript 运行时”的新目标。 Deno 对这一转变归功于用户反馈;从时间上来看,发髻是其中的很大一部分。 Deno 2 于 2024 年 10 月完成了这项工作,并具有完全的 Node 和 npm 兼容性。作为 Node 生态系统的替代方案推出四年后,Deno 已成为另一种运行 Node 的方式。这是正确的决定,而且也承认生态系统不会在一夜之间放弃十多年的依赖关系。 Cloudflare 的 workd 于 2022 年开源,出于同样的原因发展了自己的 Node 兼容层:这就是软件包所在的位置。节点最终需要响应。自 2018 年以来,它已经推出了全球 fetch 、 WebSocket 、 Web Streams 和 Web Crypto ;稳定的测试运行器 & --watch ; --env-file 和单一可执行版本;稳定的权限模型;默认情况下键入剥离;节点:sqlite; &要求(esm)。 Node 的贡献者(许多志愿者)付出了艰苦的努力来倾听并做出重大改变,他们应该为此获得巨大的赞誉,但我认为如果没有其他三个运行时首先提出许多这些想法,这一切就不会发生在那个时间线上。一个成熟的开源项目很少缺少好的想法。它缺乏紧迫感,而竞争对手提供了这种紧迫感。标准工作也源于同样的压力:WinterCG 于 2022 年成立,因为几个严肃的运行时制定了“最低通用 API 是什么?”一个实际的问题,现在,作为 Ecma TC55 ,它应该比接下来整合的任何运行时都要耐用。包管理器和注册中心 在 JavaScript 包生态系统的大部分历史中,它都是一种单一文化:一个客户端、一个注册中心和一个足够非正式的 API 合约,以至于它在十五年的时间里一直没有有效记录。此后几乎所有的进步都来自于拒绝接受现状的人。 Yarn (2016) 坚持安装是确定性的,并为我们提供了锁定文件、工作区和离线缓存; npm 5 于明年发布了 package-lock.json。 pnpm 表明,node_modules 不必是数百兆字节的重复文件。 Bun 的安装速度足够快,以便现任
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱