Node.js 26.0.0 (Current)
TL;DR · AI 摘要
Node.js 26.0.0 正式启用 Temporal API、升级 V8 到 14.6 和 Undici 到 8.0,并移除多个过时模块,推动平台现代化,为 10 月 LTS 版本奠定基础。
核心要点
- Temporal API 默认启用,替代老旧 Date 对象,提升日期时间处理能力。
- V8 引擎升级至 14.6,支持 upsert 和 iterator sequencing 等新 JavaScript 特性。
- 多个废弃 API 被彻底移除,开发者需及时迁移以避免运行时错误。
结构提纲
按章节快速跳转。
宣布 Node.js 26.0.0 作为当前版本发布,六个月后将进入 LTS 阶段。
包括 Temporal API 默认启用、V8 14.6 和 Undici 8.0 的升级。
移除多个遗留模块和 API,如 http.writeHeader 和 _stream_* 系列。
列出影响主版本的构建与功能变更,如 GCC 升级与 Temporal 默认开启。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Node.js 26.0.0 发布
- 核心特性升级
- Temporal API 默认启用
- V8 14.6(支持 upsert、iterator sequencing)
- Undici 8.0 HTTP 客户端优化
- 废弃与移除
- http.writeHeader() 被移除
- _stream_* 模块彻底删除
金句 / Highlights
值得收藏与分享的关键句。
The Temporal API is now enabled by default in Node.js 26, providing a modern, robust alternative to the legacy Date object.
V8 14.6 brings upsert ([Weak]Map.prototype.getOrInsert()) and Iterator.concat() — two new JavaScript proposals now supported.
http.Server.prototype.writeHeader() is now fully removed. Use writeHead() instead.
Legacy _stream_* modules are fully removed — developers must migrate to modern stream APIs.
[2026-05-05, 版本 26.0.0 (Current), @RafaelGSS](http://nodejs.org/en/blog/release/v26.0.0#2026-05-05-version-2600-current-rafaelgss)
我们很高兴宣布 Node.js 26 的发布!本次更新的主要亮点包括:默认启用 Temporal API、V8 JavaScript 引擎升级至 14.6、Undici 升级至 8.0,以及为持续现代化平台而进行的多项重要弃用和移除。
请注意,Node.js 26 将于十月进入长期支持(LTS)阶段,但在那之前,它将在未来六个月中作为“Current”版本发布。我们鼓励您探索此最新版本提供的新功能和优势,并评估其对您的应用程序可能产生的影响。
[显著变更](http://nodejs.org/en/blog/release/v26.0.0#notable-changes)
#### Temporal API
Temporal API 现已在 Node.js 26 中默认启用。Temporal 是 JavaScript 的现代化日期/时间 API,提供了比传统 Date 对象更强大、功能更丰富的替代方案。
由 Richard Lau 在 #61806 中贡献。
#### V8 14.6
V8 引擎已升级至版本 14.6.202.33,该版本属于 Chromium 134 的一部分。
此版本还包含以下功能:
- Upsert (https://github.com/tc39/proposal-upsert):
[Weak]Map.prototype.getOrInsert(),[Weak]Map.prototype.getOrInsertComputed() - 迭代器序列化 (https://github.com/tc39/proposal-iterator-sequencing):
Iterator.concat()
由 Michaël Zasso 在 #61898 中贡献。
#### Undici 8
Undici 已升级至版本 8.0.2,为 Node.js 的 HTTP 客户端实现带来了新功能和改进。
#### 弃用与移除
- [`dff46c07c3`] - (SEMVER-MAJOR)crypto:将 DEP0182 移至生命周期结束(Tobias Nießen)#61084
- [`93c25815ee`] - (SEMVER-MAJOR)http:将 writeHeader 移至生命周期结束(Sebastian Beltran)#60635
http.Server.prototype.writeHeader() 现已完全移除。请改用 http.Server.prototype.writeHead()。
- [`c755b0113c`] - (SEMVER-MAJOR)stream:将 _stream_* 移至生命周期结束(Sebastian Beltran)#60657
遗留的 _stream_wrap、_stream_readable、_stream_writable、_stream_duplex、_stream_transform 和 _stream_passthrough 模块现已完全移除。
- [`adac077484`] - (SEMVER-MAJOR)crypto:运行时弃用 DEP0203 和 DEP0204(Filip Skokan)#62453
- [`ac6375417a`] - (SEMVER-MAJOR)stream:将 DEP0201 提升为运行时弃用(René)#62173
- [`98907f560f`] - (SEMVER-MAJOR)module:运行时弃用 module.register()(Geoffrey Booth)#62401
- [`89f4b6cddb`] - (SEMVER-MAJOR)module:移除 --experimental-transform-types(Marco Ippolito)#61803
[Semver-Major 提交](http://nodejs.org/en/blog/release/v26.0.0#semver-major-commits)
- [`d3f79aa65d`] - (SEMVER-MAJOR)assert:允许使用 printf 风格消息作为断言错误(Ruben Bridgewater)#58849
- [`f6ce381fec`] - (SEMVER-MAJOR)build:将 GCC 要求提升至 13.2(Michaël Zasso)#62555
- [`bff81fca46`] - (SEMVER-MAJOR)build:默认启用 Temporal(Richard Lau)#61806
- [`6ddb1643e1`] - (SEMVER-MAJOR)build:在调试构建中启用 V8_VERIFY_WRITE_BARRIERS(Joyee Cheung)#61898
- [`a8ab08b373`] - (SEMVER-MAJOR)build:将嵌入者字符串重置为 "-node.0"(Michaël Zasso)#61898
- [`0998c37eb6`] - (SEMVER-MAJOR)build:为 AIX/IBM i 目标 Power 9(Richard Lau)#62296
- [`d73c49e849`] - (SEMVER-MAJOR)build:停止支持 Python 3.9(Mike McCready)#61177
- [`3c92ee1008`] - (SEMVER-MAJOR)build:在 s390x 上的 Linux 启用 Maglev(Richard Lau)#60863
- [`908c468828`] - (SEMVER-MAJOR)build:将嵌入者字符串重置为 "-node.0"(Michaël Zasso)#60488
- [`6380fbb5ee`] - (SEMVER-MAJOR)build:将嵌入者字符串重置为 "-node.0"(Michaël Zasso)#60111
- [`089d6c77e7`] - (SEMVER-MAJOR)(CVE-2026-21717)build,test:测试数组索引哈希冲突(Joyee Cheung)#61898
- [`f9bd0165c4`] - (SEMVER-MAJOR)build,win:修复 Temporal 构建(StefanStojanovic)#61806
- [`6cc4cf8fe8`] - (SEMVER-MAJOR)crypto:通过 KeyObjectHandle::Init 统一非对称密钥导入(Filip Skokan)#62499
- [`adac077484`] - (SEMVER-MAJOR)crypto:运行时弃用 DEP0203 和 DEP0204(Filip Skokan)#62453
- [`74509b166a`] - (SEMVER-MAJOR)crypto:用 OpenSSL 错误详情装饰异步加密作业错误(Filip Skokan)#62348
- [`da5843b91d`] - (SEMVER-MAJOR)crypto:默认将 ML-KEM 和 ML-DSA 的 PKCS8 导出设为仅种子格式(Filip Skokan)#62178
- [`dff46c07c3`] - (SEMVER-MAJOR)crypto:将 DEP0182 移至生命周期结束(Tobias Nießen)#61084
- [`94cd600542`] - (SEMVER-MAJOR)crypto:修复不可提取密钥错误的 DOMException 名称(Filip Skokan)#60830
- [`dae2219cca`] - (SEMVER-MAJOR)deps:V8:挑选 0f024d4e66e0(ishabi)#62408
- [`15d406c1b1`] - (SEMVER-MAJOR)deps:修复 AIX 上的 V8 竞态条件(Abdirahim Musse)#61898
- [`46852d2d7a`] - (SEMVER-MAJOR)deps:V8:挑选 cd2c216e7658(LuYahan)#61898
- [`784431d6fc`] - (SEMVER-MAJOR)deps:V8:向后移植 088b7112e7ab(Igor Sheludko)#61898
- [`3839c4a756`] - (SEMVER-MAJOR)deps:V8:挑选 00f6e834029f(Joyee Cheung)#61898
- [`44f64f1dd9`] - (SEMVER-MAJOR)deps:V8:向后移植 bef0d9c1bc90(Joyee Cheung)#61898
- [`1f8f288e22`] - (SEMVER-MAJOR)deps:V8:挑选 cf1bce40a5ef(Richard Lau)#61898
- [`d7eccac9ad`] - (SEMVER-MAJOR)deps:V8:挑选 daf4656ba85e(Milad Fa)#61898
- [`3ee1ea7d0b`] - (SEMVER-MAJOR)deps:V8:挑选 d83f479604c8(Joyee Cheung)#61898
- [`80907c0239`] - (SEMVER-MAJOR)deps:V8:挑选 edeb0a4fa181(Joyee Cheung)#61898
- [`5e0dc169e9`] - (SEMVER-MAJOR)deps:V8:挑选 aa0b288f87cc(Richard Lau)#61898
- [`8c1f7adbcd`] - (SEMVER-MAJOR)deps:打补丁修复 V8 Windows 构建(StefanStojanovic)#61898
- [`3cbd3404d9`] - (SEMVER-MAJOR)deps:V8:挑选 highway@989a498fdf3(Richard Lau)#61898
- [`9f2b7d4031`] - (SEMVER-MAJOR)deps:在所有 illumos 版本中支持 madvise(3C)(Dan McDonald)#61898
- [`947ec32118`] - (SEMVER-MAJOR)deps:为 illumos 打补丁修复 V8(Dan McDonald)#61898
- [`0660b942b2`] - (SEMVER-MAJOR)deps:从 v8-internal 移除有问题的注释(Michaël Zasso)#61898
- [`bef7b31a3f`] - (SEMVER-MAJOR)deps:在 Windows 上将 V8_PRESERVE_MOST 定义为空操作(Stefan Stojanovic)#61898
- [`a10bf1e6ce`] - (SEMVER-MAJOR)deps:打补丁避免重复的 zlib 符号(Michaël Zasso)#61898
- [`cc547428e1`] - (SEMVER-MAJOR)deps:将 V8 更新至 14.6.202.33(Michaël Zasso)#61898
- [`b81d2cbcae`] - (SEMVER-MAJOR)deps:将 Undici 更新至 8.0.2(Node.js GitHub Bot)#62384
- [`bf5c6a8bd4`] - (SEMVER-MAJOR)deps:V8:向后移植 151d0a44a1b2(Abdirahim Musse)#60488
- [`b59af772dc`