Node.js 26.2.0 (Current)
TL;DR · AI 摘要
Node.js 26.2.0 主要更新包括 stream.compose 稳定化、fs 模块支持 Temporal.Instant、HTTP 增加 writeInformation 方法,以及加密模块多项安全增强和依赖升级。
核心要点
- stream.compose 已标记为稳定,适用于生产环境
- fs 模块新增对 Temporal.Instant 的支持,提升时间处理能力
- HTTP 模块新增 writeInformation 方法,支持发送任意 1xx 状态码
结构提纲
按章节快速跳转。
- §发布概述
Node.js 26.2.0 是一个带有若干显著变更的小版本更新。
stream.compose API 已标记为稳定,可用于生产环境。
fs 模块现在支持 Temporal.Instant 在 Stats 和 BigIntStats 对象中的使用。
新增 writeInformation 方法允许发送任意 1xx HTTP 状态码。
多项加密模块增强,包括强化密钥处理和改进算法验证。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Node.js 26.2.0 Release
- API Stability
- stream.compose stable
- Enhanced Functionality
- Temporal.Instant support
- writeInformation for 1xx codes
- Security & Performance
- Crypto improvements
- Dependency upgrades
金句 / Highlights
值得收藏与分享的关键句。
stream.compose API 已标记为稳定,使其可在生产环境中使用。
fs 模块现在支持 Temporal.Instant 在 Stats 和 BigIntStats 对象中,以更好地处理时间数据。
HTTP 模块的新 writeInformation 方法允许发送任意 1xx 状态码。
标题:Node.js — Node.js 26.2.0(当前版本)
URL 来源:https://nodejs.org/en/blog/release/v26.2.0
Markdown 内容: 跳转到内容
[](https://nodejs.org/en)
[](https://github.com/nodejs/node)
Antoine du Hamel
[2026-05-20,版本 26.2.0(当前),@aduh95](https://nodejs.org/en/blog/release/v26.2.0#2026-05-20-version-2620-current-aduh95)
[主要变更](https://nodejs.org/en/blog/release/v26.2.0#notable-changes)
- [`189d43a193`] - 文档:标记
stream.compose为稳定版(Matteo Collina)#62562 - [`f858c6140e`] - (SEMVER-MINOR) fs:为
Stats和BigIntStats添加对Temporal.Instant的支持(Livia Medeiros)#60789 - [`0cbb3895df`] - (SEMVER-MINOR) http:添加
writeInformation以发送任意 1xx 状态码(Tim Perry)#63155
[提交记录](https://nodejs.org/en/blog/release/v26.2.0#commits)
- [`9a394bab84`] - benchmark: 尊重 stream/iter 广播的背压 (Trivikram Kamat) #63314
- [`ad98b4620b`] - crypto: 对齐 verifyOneShot 接受的类型 (Anshika Jain) #63280
- [`ba0736a847`] - crypto: 在使用 BoringSSL 时启用 ML-DSA 和 ML-KEM (Filip Skokan) #63255
- [`5573a6a4a8`] - crypto: 在使用 BoringSSL 时启用 ChaCha20-Poly1305 的 Web Cryptography (Filip Skokan) #63255
- [`7dc563b8d6`] - crypto: 在使用 BoringSSL 时启用 AES-KW 的 Web Cryptography (Filip Skokan) #63255
- [`b55e2b1f4d`] - crypto: 改进 macOS 上系统证书枚举逻辑 (Robo) #62576
- [`fd509a755a`] - crypto: 加强 CryptoKey 算法槽位 (Filip Skokan) #63111
- [`8657df39e7`] - crypto: 加强 KeyObject 内部槽位 (Filip Skokan) #63111
- [`729274e046`] - crypto: 拒绝无效的原始密钥导入 (Filip Skokan) #63134
- [`8fc9cb9c01`] - crypto: 提高 SubtleCrypto.supports 的准确性 (Filip Skokan) #63104
- [`288065cb3f`] - crypto: 优化 normalizeAlgorithm 分派热路径 (Filip Skokan) #62756
- [`ecf3797d09`] - debugger: 消除探针位置绑定的歧义 (Joyee Cheung) #63286
- [`bdc57135fd`] - debugger: 为
node inspect添加 --help 并改进文档 (Joyee Cheung) #63201 - [`2a6e6058e9`] - deps: 更新 undici 到 8.3.0 (Node.js GitHub Bot) #63377
- [`327b927271`] - deps: 更新 corepack 到 0.35.0 (Node.js GitHub Bot) #63375
- [`5828fadf52`] - deps: 更新 sqlite 到 3.53.1 (Node.js GitHub Bot) #63217
- [`fe127a999b`] - deps: 更新 simdjson 到 4.6.4 (Node.js GitHub Bot) #62811
- [`a34c4ea159`] - deps: V8: cherry-pick 435a2cdf664c (Matthias Liedtke) #63136
- [`ad91efcc43`] - deps: cherry-pick libuv/libuv@a43e543 (Ali Hassan) #63222
- [`5ea6c3ee7e`] - deps: 为 libffi 添加缺失的静态链接目标 (Paolo Insogna) #63168
- [`c1f6ba22b4`] - deps: 更新 ngtcp2 到 1.22.1 (Node.js GitHub Bot) #62812
- [`7b8767ef76`] - doc: 从 v8.md 中移除不受支持的模板类型 (René) #63410
- [`b2ec1880b1`] - doc: 修复
stream_iter.md中的 promise 命名 (Antoine du Hamel) #63406 - [`cf6cbbd39d`] - doc: 修正元音音素缩写前的文章用法 (joao-oliveira-softtor) #62696
- [`da05065d98`] - doc: 移除 bi-monthly contributor spotlight 部分 (Claudio Wunder) #62734
- [`c31f320fba`] - doc: 更新 http2 的
push和trailers事件以包含rawHeaders参数 (YuSheng Chen) #63259 - [`f0d008439b`] - doc: 添加 Windows 下手动安装 Rust 工具链的说明 (Mike McCready) #63367
- [`68b1220fbd`] - doc: 从 Triagers 列表中移除非活跃成员 (Antoine du Hamel) #63329
- [`189d43a193`] - doc: 标记 stream.compose 为稳定 (Matteo Collina) #62562
- [`c4fb894039`] - doc: 修复 CHANGELOG (Richard Lau) #63292
- [`9f319a77e4`] - doc: 在 Module 文档中引用正确的函数 (Robin Malfait) #63247
- [`2c13acc88e`] - doc: 将 Visual Studio 2022 的 Evergreen 版本引用替换为 17.14 (Mike McCready) #63211
- [`7e42c336c9`] - doc: 建议在生产应用中明确指定 Tier 1 或 Tier 2 (Mike McCready) #63187
- [`d99e0bb6d5`] - doc: 在 BUILDING.md 中记录 Temporal 配置标志 (ChrisJr404) #63248
- [`c0ea77b305`] - doc: 运行 license-builder (github-actions[bot]) #63232
- [`8265aba0f4`] - doc: 添加关于大型 Pull Request 贡献指南 (Matteo Collina) #62829
- [`be241bacc8`] - doc: 删除不必要的
<!-- eslint-魔法注释 (Antoine du Hamel) #63200 - [`e0b1f092c3`] - doc: 修复 CJS 代码片段中的不一致性 (Antoine du Hamel) #63199
- [`a3feb15871`] - doc: 明确 SEA 平台支持不包括 darwin-x64 (MJSHANG) #63181
- [`cafd7667fc`] - doc: 改进 QUIC 文档 (James M Snell) #63157
- [`3c784edb6f`] - doc: 更新发布失败时的发布步骤 (Rafael Gonzaga) #63131
- [`9de954e9be`] - doc: 修复 26.0.0 变更日志中的弃用列表 (Antoine du Hamel) #63147
- [`20c553e456`] - doc: 添加仅用于文档的 Hmac.digest() 弃用 (DEP0206) (Anshika Jain) #63121
- [`3494eae2c8`] - doc: 记录最新的 vX.x schema (Marco Ippolito) #63033
- [`c02413d29d`] - doc: 移除
BUILDING.md中的版本列表 (Antoine du Hamel) #63113 - [`53f9a902a1`] - doc,sqlite: 记录 loadExtension 的 entryPoint 参数 (Edy Silva) #63152
- [`f858c6140e`] - (SEMVER-MINOR)fs: 在
Stats和BigIntStats中添加对Temporal.Instant的支持 (Livia Medeiros) #60789 - [`b2ba62ca0e`] - fs: 使
Stats上的Date属性可枚举 (LiviaMedeiros) #63328 - [`0cbb3895df`] - (SEMVER-MINOR)http: 添加 writeInformation 以发送任意 1xx 状态码 (Tim Perry) #63155
- [`f712e6856e`] - http2: 验证 writeEarlyHints 中的非链接头 (Matteo Collina) #62017
- [`3acadae676`] - lib: 修复拼写错误 idenity => identity (Daijiro Wachi) #63112
- [`460329e886`] - lib: 修复验证器消息 (Daijiro Wachi) #62823
- [`9438c832b2`] - lib: 将 ReadableStreamBYOBRequest.view 返回类型缩小到 Uint8Array (RoomWithOutRoof) #63017
- [`c7d27c82c4`] - lib: 在传播标志时处理 --permission-audit (Rafael Gonzaga) #63047
- [`9f19915276`] - lib: 优化 WebIDL 转换选项 (Filip Skokan) #62756
- [`771afd626a`] - meta: 将一个或多个协作者移至 emeritus (Node.js GitHub Bot) #63402
- [`67d094a554`] - meta: 将一个或多个协作者移至 emeritus (Node.js GitHub Bot) #63235
- [`9091398f3d`] - meta: 忽略 AI 助手文件 (Matteo Collina) #62612
- [`96f19a16d0`] - module: 修复导入的 CJS 中 require() 的同步钩子短路问题 (Joyee Cheung) #62920
- [`45f3e3ef11`] - node-api: 在 napi_create_typedarray 中支持 SharedArrayBuffer (Yilong Li) #62710
- [`d7afa617bb`] - quic: 发送正确的 OpenSSL 警告以匹配 ALPN (Tim Perry) #63193
- [`526313beb8`] - quic: 修复 QUIC 流变量块长度问题 (James M Snell) #63230
- [`1613c7fe70`] - quic: 支持 --allow-net 权限 (James M Snell) #63184
- [`72ab7444a8`] - quic: 移除 session_manager.h/cc 中未使用的 env_ 变量 (James M Snell) #63177
- [`2b55656778`] - quic: 移除 session.cc 中未使用的绑定变量 (James M Snell) #63177
- [`83f0d37400`] - quic: 忽略 QUIC 文件的覆盖率 (James M Snell) #63149
- [`7e6b77b14d`] - quic: 完成 QUIC 的内部实现 (James M Snell) #62876
- [`71372418f1`] - repl: 修复规范化行与原始历史记录比较时的去重问题 (Daijiro Wachi) #62886
- [`20f40c2c25`] - sqlite: 在备份过程中保持源数据库活跃 (Matteo Collina) #62673
- [`592f741bd0`] - src: 简化 OpenSSL 功能开关 (Filip Skokan) #63255
- [`520ab7ad40`] - src: 添加 BoringSSL EVP 枚举回退 (Filip Skokan) #63206
- [`12be49acbc`] - src: 在 node.config.json 中支持多个版本 (Marco Ippolito) #63033
- [`296f907585`] - src: 移除 node_task_queue 中未使用的 using 声明 (Mert Can Altin) #63144
- [`7703f11b3c`] - src: 对已解决的 Promise.race 失败者跳过 JS 回调 (Felipe Coelho) #62336
- [`74ab710c3a`] - src,sqlite: 移除死代码 (Edy Silva) #63204
- [`e49154f4c8`] - stream: 为 pipeTo 添加同步可迭代快速路径 (Trivikram Kamat) #63318
- [`537455e98d`] - stream: 修复对象类源的合并处理 (Trivikram Kamat) #63356
- [`e21b8a47f0`] - stream: 限制来自同步可迭代批次的迭代器 (Trivikram Kamat) #63324
- [`3bdb64dc67`] - stream: 在广播中缓存最小游标计数 (Trivikram Kamat) #63322
- [`81819add6b`] - stream: 移除不必要的检查 (Antoine du Hamel) #63030
- [`22e3579d74`] - stream: 避免重试已接受的 pipeTo 写入 (Trivikram Kamat) #63297
- [`691915ea94`] - stream: 验证广播写入器的 writev 块 (Trivikram Kamat) #63300
- [`253f5f4ca2`] - stream: 在块错误时从 fromWritable writev 解 cork (Trivikram Kamat) #63295
- [`aa6913cc4a`] - stream: 在缓存前验证 fromWritable() 选项 (Trivikram Kamat) #63278
- [`6c53ddb988`] - stream: 优化单槽推送队列耗尽 (Trivikram Kamat) #63274
- [`b568649f6f`] - stream: 在背压后保留 toReadableSync 批次 (Trivikram Kamat) #63276
- [`cdcefd7e2f`] - stream: 在 share 中缓存最小游标计数 (Trivikram Kamat) #63262
- [`ba7000e4f7`] - stream: 流/迭代实现的小修改 (René) #63132
- [`c694999ab8`] - test: 在接近堆限制的工作线程测试中禁用 Maglev (Trivikram Kamat) #63398
- [`a6d6d51c1b`] - test: 使连接被拒绝代理测试更稳定 (Trivikram Kamat) #63395
- [`31d89c4f59`] - test: 在 watch 辅助函数中避免重复写入 (Trivikram Kamat) #63386
- [`6f3587c773`] - test: 使 watch 模式工作线程测试更稳定 (Trivikram Kamat) #63384
- [`a57aebaa73`] - test:更新使用 BoringSSL 时的 TLS/Crypto 行为预期(Filip Skokan)#63161
- [`b871cff2db`] - test:放宽 test-memory-usage 中 ArrayBuffer 的检查(inoway46)#63244
- [`25189bcb95`] - test:减少
different-registry-per-thread测试的随机失败率(Antoine du Hamel)#63244 - [`5bdb1f8426`] - test:修复 flaky test-watch-mode-inspect 超时问题(Matteo Collina)#63361
- [`d57bd2bf59`] - test:放宽 test-performance-eventloopdelay 中的最小断言(Marco)#63100
- [`014e1f00c1`] - test:避免调试器异常测试中的 flaky restart sync(Yuya Inoue)#62055
- [`dd28ff8a80`] - test:避免 restart-message 中的初始 break 等待(inoway46)#62060
- [`e89a49a13a`] - test:将 FFI 测试移至
NATIVE_SUITES(Antoine du Hamel)#63165 - [`51ef0258ba`] - test:更新 WPT 的 wasm/jsapi 至 288c467d35(Node.js GitHub Bot)#63136
- [`c0175a9ba1`] - test:使用 ERM 在测试后销毁 sqlite 数据库句柄(René)#63076
- [`83054e8aba`] - test_runner:避免在不完整的 v8 帧上挂起(Ali Hassan)#62704
- [`4f1426d361`] - test_runner:修复 hooks 测试上下文(Moshe Atlow)#63285
- [`6a4c4b7193`] - test_runner:修复 diagnostics channel 上下文跟踪(Moshe Atlow)#63283
- [`eba9c3481b`] - test_runner:添加 tags 选项和标签名过滤器(Chemi Atlow)#63221
- [`2ba124f23b`] - tls:添加不支持的重协商错误(Filip Skokan)#63161
- [`7c5048495a`] - tools:更新 /tools/eslint 中的 eslint 组,包含 4 个更新(dependabot[bot])#63075
- [`6c574110a7`] - tools:更新 gyp-next 到 0.22.2(Node.js GitHub Bot)#63374
- [`f14ed762b3`] - tools:在 tools/nix/openssl-matrix.nix 中添加 boringssl(Filip Skokan)#63206
- [`14d3924c48`] - tools:修复 test426 更新器(Antoine du Hamel)#63271
- [`0d017ece8d`] - tools:为构建工具链过滤 V8 脚本(Richard Lau)#63069
- [`3859a8700e`] - tools:在 staging 分支上使用不同分支进行工具更新(Antoine du Hamel)#63110
- [`4a32ed82bd`] - tools:防止库代码读取 KeyObject 和 CryptoKey 访问器(Filip Skokan)#63111
Windows 64 位安装程序:https://nodejs.org/dist/v26.2.0/node-v26.2.0-x64.msi
Windows ARM 64 位安装程序:https://nodejs.org/dist/v26.2.0/node-v26.2.0-arm64.msi
Windows 64 位二进制文件:https://nodejs.org/dist/v26.2.0/win-x64/node.exe
Windows ARM 64 位二进制文件:https://nodejs.org/dist/v26.2.0/win-arm64/node.exe
macOS 64 位安装程序:https://nodejs.org/dist/v26.2.0/node-v26.2.0.pkg
macOS Apple Silicon 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-darwin-arm64.tar.gz
macOS Intel 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-darwin-x64.tar.gz
Linux 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-x64.tar.xz
Linux PPC LE 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-ppc64le.tar.xz
Linux s390x 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-s390x.tar.xz
AIX 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-aix-ppc64.tar.gz
ARMv8 64 位二进制文件:https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-arm64.tar.xz
源代码:https://nodejs.org/dist/v26.2.0/node-v26.2.0.tar.gz
其他发布文件:https://nodejs.org/dist/v26.2.0/
文档:https://nodejs.org/docs/v26.2.0/api/
[SHASUMS](https://nodejs.org/en/blog/release/v26.2.0#shasums)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
cef2e65897f97088b512f922896a56de3ec0614d020816ef0ecb76290e708b81 node-v26.2.0-aix-ppc64.tar.gz
922634a94fc0beb8a3feb448f55c600fb8eb6a0a598996a6536cb78e98cfc03c node-v26.2.0-arm64.msi
2d8575b6a749c0bc66cc6ecd22a952f7d9bbf3b0ea76fcb0ed3ce858018afff7 node-v26.2.0-darwin-arm64.tar.gz
6c2393ec9fd8a16264282bf30d6c09088695f5189915d8075d0166b23688f04a node-v26.2.0-darwin-arm64.tar.xz
26a5480d0dd952be86beae83e6636dacd7a3ffd17ef51d0b26bc9b260f2b42e9 node-v26.2.0-darwin-x64.tar.gz
50e3fb7cda816f0ab8929551516530669d1c0449a3f6a8a044be82a57cc642a4 node-v26.2.0-darwin-x64.tar.xz
05f779a0a5498712cd8f85cef69ef02072a45c12641ee616f2d9b89416a81a47 node-v26.2.0-headers.tar.gz
2b447554f72320568be9c06566d6a673ab97bffaf799a758a91cb5e81dc16e3c node-v26.2.0-headers.tar.xz
bf52461d25017479cdc549642c4e7a2303ac5c5395d7c3d026d5d8b3fa283c05 node-v26.2.0-linux-arm64.tar.gz
2f06be7e5435728abd890fe53b69965773919b705d8cfedd856c8f604c1e3726 node-v26.2.0-linux-arm64.tar.xz
4b52429b35a049a0cf574360cd1b11cbc9f03201d13876f26897c9863d25ec49 node-v26.2.0-linux-ppc64le.tar.gz
c4bff589e7a1cdf344e4f37f1ee69451eeb747284dd94fc3ae6fdd3813caa05f node-v26.2.0-linux-ppc64le.tar.xz
9d064914e38a5b3e6a3074647407198116f7bc724fce5a9600cece84ac7da671 node-v26.2.0-linux-s390x.tar.gz
bc4cacb7cbc8079a04f78d99d15b1a409147ef0d81fec9f67e5528121df058c8 node-v26.2.0-linux-s390x.tar.xz
8e5b4b969bb2414aca2ff84d2b99608511aedca32bf8a8427e6187dbdd703bbe node-v26.2.0-linux-x64.tar.gz
9f786864128a11375e398b8dfacd4a5e995ec4b6a6c8b3b52ac9afbc95ea8158 node-v26.2.0-linux-x64.tar.xz
90226d28eadd3d94e33f585c5835631bdd52c05027df2b0ed00fd4068dccc375 node-v26.2.0-win-arm64.7z
131efa8bd858f8ad000a1a0436d8bb1320c638291c779a921fb20e5702a1cc0a node-v26.2.0-win-arm64.zip
c617934f4d9fca2df0eb77f6bf924dc44d70fd787da578131d17a6001709f76c node-v26.2.0-win-x64.7z
371071a4f7e2c8a5dd280730049c685911feecc59f50ebc488d675dc1087c69c node-v26.2.0-win-x64.zip
51be3a87789ecc7987c3d515ec805bf304955fe5f96167ef3001e5a428b3bf3e node-v26.2.0-x64.msi
2d8c59df289ba651523d89df2e00ace61655ed468cef68c9a1c262250952c1fd node-v26.2.0.pkg
37032a75a677f063dbe22f0cc72249a3a2faff2ce71056b63771d6967bd63384 node-v26.2.0.tar.gz
ea82be7db418f54b3ef153a02d44d4f6748466f4765ae80bc484f34af40df610 node-v26.2.0.tar.xz
2b2c5c0db8922fbadf6e4d97d5f0a0666ebaa2af9dc513d1f80b2634e69c9d6b win-arm64/node.exe
376eb35054756d8493adc1f26495fba0b7bda7365cdb7c132130044a622d6c31 win-arm64/node.lib
9410ec0655634890df572c2d22807a40cf44faae0d20f7f9ca650b1f4ce19aa2 win-arm64/node_pdb.7z
058fbfa4a8fc95db58bb02eb9e91cbd92bb34c8dcc67628b8c6110f20d3a8a5f win-arm64/node_pdb.zip
96f768b95e8e9d443f5eead1cb2d199744923320bb8240d2c3129362e7ae2a5d win-x64/node.exe
9c236a87f9c50a26099d74f35883c28c6b279585ccc5849aa640ff23de7be9b8 win-x64/node.lib
42da34eb8cdf18eab84610a71fd86d05921ac8d7e7927895e6442d2238fd7c92 win-x64/node_pdb.7z
aaf9c384825145c6bb8fe8a1f9e644350d019b79cf879181011e4e0c78f23e40 win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCag2w1AAKCRAgsaOQsWjT
VmcSAP9blRmG8QqpI9xpuySF9de5BQL4YHKC7WxSkrBvR7GhrgEA6OLocb8H6vNd
vQVfJRgF10JESE7UDBYuL7WePTZWCg4=
=ByRS
-----END PGP SIGNATURE-----