使用 JavaScript 运行时的开发者们迎来了一个新的主要版本,那便是26系列。
Node.js 26.0.0 为平台带来了期待已久的 Temporal API,同时还更新了 V8 引擎、改进了 HTTP 客户端,并移除了一些长期计划移除的功能,这些移除将需要在某些应用程序中进行代码修改。
值得一提的是,5月7日,也就是昨天,Node.js 26.1.0又发布了微量更新。
Node.js 之TSC 成员 Rafael Gonzaga在X平台上宣告道:26版本系列更新,Temporal API 默认启用,V8 升级到 14.6,Undici 升到 8,关键的弃用工作将继续推进。
接下来盘点这一主干版本有什么变化。
Temporal 是一个日期与时间 API,旨在取代现有的 agingDate对象,现在无需实验性标志即可在 Node.js 中使用。
此 API 提供了更丰富的时区、日历、持续时间和瞬间处理功能,并解决了长期以来用户对 JavaScript 内置日期处理方式的诟病。
// 旧的写法,月份从 0 开始,时区若不留神就出错const d = new Date(2026, 4, 6);// Temporal API的新写法const date = Temporal.PlainDate.from('2026-05-08');const next = date.add({ days: 30 });const zoned = Temporal.ZonedDateTime.from('2026-05-08T10:00[Asia/Shanghai]');
这表示从 26 开始可以直接引用 Temporal.Now.plainDateISO()方法。
如果你写的是同构代码(服务端和客户端共用),目前还不能在前端项目里直接换掉 dayjs。但对于纯 Node.js 服务端场景,这是一个可以尝试的良好时间点。
捆绑的 V8 JavaScript 引擎升级至 14.6.202.33 版本,该版本与 Chromium 146 版本一同发布。
此次升级在语言层面引入了两项 TC39 提案。Upsert 提案为 `setUpsert` 和 `setInitialize` 分别添加了 `upsert`getOrInsert()和`setInitialize`getOrInsertComputed()方法,简化了读取值或首次访问时初始化值的常见模式。
迭代器序列化提案引入了 `iterator-sequence` ,它可以将多个迭代器合并成一个序列。MapWeakMapIterator.concat()
NODE_MODULE_VERSION版本号已提升至 147,这意味着针对早期版本编译的本地插件需要重新构建。
基于 Undici 的内置 HTTP 客户端已更新至 8.0.2 版本。该软件包是fetch()Node.js 中全局实现的基础,并为许多应用程序处理 HTTP/1.1 和 HTTP/2 流量。
值得一提的,Node.js 内置的 fetch、Request、Response 这套接口,底层用的就是 Undici。
Undici 8 的具体改动较多,包括HTTP/2 的处理、连接池策略、错误对象的格式都有调整。如果代码中直接 import 了 undici 包,升级时建议先看一遍 Undici 的 changelog,主要是看 Pool、Agent、Dispatcher 这几个类有没有破坏性变更。
在26版本中,多个已弃用的 API 已被移除,包括 http.Server.prototype.writeHeader();应用程序必须使用writeHead()。
旧版的_stream_wrap、_stream_readable、_stream_writable、_stream_duplex和模块_stream_transform以及TypeScript 转换标志_stream_passthrough也已被移除--experimental-transform-types。加密弃用 DEP0182 已达到生命周期的结束状态。
一些 API 已被提升为运行时弃用,包括module.register()与流相关的 DEP0201 以及与加密相关的 DEP0203 和 DEP0204。
使用这些 API 的代码路径现在会发出deprecation等警告。
此外,构建环境的门槛提高。GCC 最低版本要求从 12 升到 13.2,Python 3.9 不再支持。
现在从源代码编译 Node.js 需要 GCC 13.2 或更高版本,构建工具链不再支持 Python 3.9。AIX 和 IBM i 的构建现在以 Power 9 硬件为目标,不再支持较旧的 Power 处理器。
支持的 Windows SDK 版本已升级至 11。Maglev(一款 V8 中间层优化编译器)现已在 s390x 上的 Linux 系统中启用。
此外,26 还给一些不太主流的平台做了适配工作。包括如下:
Power 9 (AIX/IBM i) 支持:IBM 系的服务器仍然有不少企业在用,这次把 Power 9 架构的支持加进去了。
Linux s390x 启用 Maglev:Maglev 是 V8 的中间优化层编译器,这次在 IBM 的 z 系列大型机架构上也能用了,跑 Node.js 的性能会有提升。
开发者可能不一定用到这些平台,但是我们可以看到 Node.js 项目对企业场景和非 x86/ARM 平台的持续投入。
APIKeyObject新增了对原始键格式的支持。
捆绑的 SQLite 集成启用了百分位数扩展。ICU 已更新至 78.3 版本,libuv 已更新至 1.52.1 版本。此版本还修复了编号为 CVE-2026-21717 的 V8 数组索引哈希冲突漏洞。
Node.js 26 并不是一次大改动版本,它更像是一次"清理 + 提速 + 收尾"。Temporal、V8 14.6、Undici 8 都是顺势升级,弃用清单是给后面的版本号革命铺路。
真正的转折点将是下一版本—— 27。一年一度的 LTS、版本号对齐年份、Alpha 通道接管尝鲜需求,这套新规则会让 Node.js 的发布节奏变得更稳定,也更可预测。
编辑:场长
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。