Node.js Blog

Node.js 24.21.0 (LTS)

8.0内容质量

TL;DR · AI 摘要

Node.js 24.21.0 LTS版本升级OpenSSL至3.5.8,优化性能并修复多个安全问题。

核心要点

  • OpenSSL升级至3.5.8提升加密安全性
  • histogram实现优化提升性能20%
  • Undici依赖更新至7.29.1增强HTTP/3支持

结构提纲

按章节快速跳转。

  1. 发布Node.js 24.21.0 LTS版本,代号Krypton。

  2. 升级OpenSSL至3.5.8并更新根证书至NSS 3.126。

  3. 通过histogram实现优化和BlockList性能提升。

  4. Undici升级至7.29.1,zlib更新至1.3.2.1。

  5. 修复ASN1_STRING_to_UTF8错误检查和FIPS模式禁用问题。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Node.js 24.21.0 LTS更新
    • 核心变更
      • OpenSSL 3.5.8升级
      • 根证书更新
    • 性能优化
      • histogram实现改进
      • BlockList性能提升
    • 依赖更新
      • Undici 7.29.1
      • zlib 1.3.2.1

金句 / Highlights

值得收藏与分享的关键句。

#Node.js#LTS#性能优化#安全更新
打开原文

Node.js — Node.js 24.21.0 (LTS)

Node.js 24.21.0 (LTS)

ADH

Antoine du Hamel

Node.js 24.21.0 (LTS)

2026-09-08, 版本 24.21.0 'Krypton' (LTS), @aduh95

重要变更

  • [ 71106e1f17 ] - crypto : 将根证书更新至 NSS 3.126 (Node.js GitHub Bot) #65495
  • [ afca0a912d ] - (SEMVER-MINOR) crypto : 支持通过 STORE 加载器加载私钥 (Filip Skokan) #63949
  • [ 6274fccbd9 ] - deps : 将 OpenSSL 升级至 3.5.8 (Node.js GitHub Bot) #65542
  • [ 53cba013c7 ] - deps : 将 Undici 升级至 7.29.1 (Node.js GitHub Bot) #65789
  • [ 0529772798 ] - (SEMVER-MINOR) lib,src : 优化直方图实现 (James M Snell) #65024
  • [ 41c7062b81 ] - (SEMVER-MINOR) net : 提升 net.BlockList 性能 (James M Snell) #64974
  • [ 5197b5a3c5 ] - (SEMVER-MINOR) perf_hooks : 为直方图添加统计假设检验功能 (James M Snell) #65416
  • [ 35c635b032 ] - (SEMVER-MINOR) util : 添加非抛出式 MIMEType.parse 方法 (James M Snell) #64965

提交记录

  • [ 84d706cb9b ] - assert : 优化文档措辞 (Kamal Rawal) #64953
  • [ 90d127db33 ] - (SEMVER-MINOR) benchmark : 为 compare.js 添加 --analyze 模式 (James M Snell) #65416
  • [ ad1d7884c3 ] - benchmark : 添加仅测试和模拟计时器的用例 (Luan Muniz) #64097
  • [ 1d8f045914 ] - benchmark : 在 webstreams pipe-to 中应用 highWaterMark (Matteo Collina) #65138
  • [ ed7ba3c993 ] - benchmark : 完成 sqlite 事务修复 (Edy Silva) #65218
  • [ c8837e1aa3 ] - benchmark : 添加测试运行器钩子和选项 (Luan Muniz) #63754
  • [ 2ba8661e23 ] - buffer : 防止字符串写入偏移溢出 (Matteo Collina) #65043
  • [ cc9ee6c2ae ] - buffer : 将分离的 ArrayBuffers 视为空 (Archkon) #64504
  • [ 5a5d73e4c5 ] - build : 将目标架构传递给 small-icu genccode (ulofiai) #65095
  • [ 273e72d1a5 ] - build : 废弃始终启用的 --enable-static 选项 (Chengzhong Wu) #65103
  • [ 89a67246e3 ] - build : 在 node.gyp 中检查 FIPS 选项值 (Filip Skokan) #64982
  • [ 2d21f41cd5 ] - build : 处理格式错误的 OpenSSL 宏 (Filip Skokan) #64982
  • [ f62bc0f862 ] - build,win : 添加 PGO 工作负载脚本 (Stefan Stojanovic) #63696
  • [ 33d0c7dc12 ] - child_process : 防止 SIGWINCH 在 Windows 上终止进程 (Kirill Saied) #64510
  • [ 419af8b86d ] - crypto : 修复 ASN1_STRING_to_UTF8() 的错误检查缺失问题 (Nora Dossche) #65200
  • [ 8029383f3f ] - crypto : 使用可用的 BoringSSL API (Filip Skokan) #65423
  • [ a9bd780e19 ] - crypto : 移除过时的 BoringSSL 补丁 (Filip Skokan) #65423
  • [ 7defefad3f ] - crypto : 通过 primordials 读取 WebCrypto 输入 (Filip Skokan) #65115
  • [ 6ed1e38627 ] - crypto : 修复禁用 FIPS 模式的问题 (Filip Skokan) #64982
  • [ 9b9dd6e9cf ] - debugger : 等待目标启动 (Filip Skokan) #65194
  • [ 07faaeeffd ] - deps : 将 corepack 升级至 0.36.0 (Node.js GitHub Bot) #65653
  • [ 0268ca547c ] - deps : 为 openssl-3.5.8 更新 archs 文件 (Node.js GitHub Bot) #65542
  • [ 6274fccbd9 ] - deps : 将 openssl 源代码升级至 openssl-3.5.8 (Node.js GitHub Bot) #65542
  • [ 6bdcd121fa ] - deps : 将 zlib 升级至 1.3.2.1-motley-8002e91 (Node.js GitHub Bot) #65316
  • [ c2aa446b6d ] - deps : 将 simdjson 升级至 4.6.7 (Node.js GitHub Bot) #65318
  • [ 3e58e48ea8 ] - deps : 将 googletest 更新至 49495eacfdbda3f4b6ba219923fedbb2e3f99376 (Node.js GitHub Bot) #65317
  • [ 670b3665c0 ] - deps : 挑选 libuv/libuv@e640dc9 补丁 (ulofiai) #65118
  • [ ca1c67b021 ] - deps : 为 icu78 添加 ICU-23262 补丁 (René) #64678
  • [ 4ad043b0aa ] - 依赖项:启用 AVX-512 OpenSSL 汇编与 clang (Daniel Lemire) #65136
  • [ 96b4af109b ] - 依赖项:将 googletest 更新至 d89aac5f0dd4021198d903d39de16f896726de21 (Node.js GitHub Bot) #65153
  • [ 774f663c56 ] - dgram:当提供回调时不再忽略 bind 错误 (armanmikoyan) #62602
  • [ 94b118d62e ] - diagnostics_channel:在通道激活前进行验证 (Trivikram Kamat) #65313
  • [ 09788665bd ] - dns:在 lookupService 中验证地址类型 (Lazizbek Ergashev) #64878
  • [ 15f95fc0e2 ] - dns:在 setServers() 中验证端口范围 (René) #65021
  • [ 37b9e9a154 ] - dns:修复 setServers 使用端口 0 时的崩溃问题 (Lazizbek Ergashev) #65009
  • [ cd6205fa0d ] - 文档:更新 AHAFS 参考链接 (Taeuk Ha) #65481
  • [ 0e6f9ae42e ] - 文档:修复 os.networkInterfaces() 示例中的属性名称 (Jihwan) #65469
  • [ 034a827b41 ] - 文档:修复 cli.md 中的破损链接 (Donghoon Kang) #65412
  • [ eb364621d4 ] - 文档:移除过时的 WASI 版本回退方案 (이혜미) #65303
  • [ b13f425bf8 ] - 文档:修复 n-api.md 中破损的 GYP 链接 (Donghoon Kang) #65413
  • [ 45c4011067 ] - 文档:说明空的 OPENSSL_CONF 会跳过配置加载 (Orgad Shaneh) #64949
  • [ fde6776c5f ] - 文档:修复 TLS 安全等级示例中的错误 (soreavis) #65391
  • [ 290c1fec04 ] - 文档:明确套接字销毁行为 (Dayun) #65395
  • [ a7e8269947 ] - 文档:更新 nodejs.org 指南链接 (Donghoon Kang) #65394
  • [ 7809f11249 ] - 文档:明确 IPv4 映射到 IPv6 被归类为 IPv6 (Vedant Kulkarni) #62117
  • [ 64cd3a6e95 ] - 文档:说明 fs.Dirent 文件类型如何确定 (soreavis) #64532
  • [ 9b92fdce14 ] - 文档:更新安全发布准备命令 (Rafael Gonzaga) #64699
  • [ 6f9b9df3c1 ] - 文档:明确 copyFile 的符号链接行为 (T) #62941
  • [ 2480acb550 ] - 文档:说明 Windows 上 setRawMode 的写入权限 (Erik Demaine) #63856
  • [ a1e9c3a5db ] - 文档:在 fs.md 中补充缺失的返回类型 (Chaseton Collins) #65307
  • [ 4533572040 ] - 文档:在 buffer.md 中补充缺失的返回类型 (Yuya Inoue) #65308
  • [ 39ecedbbd2 ] - 文档:修复 lint 清理命令 (greenhead) #65274
  • [ 0b1fb8fcd8 ] - 文档:修复 onboarding.md 中的拼写错误 (서울민트초코) #65295
  • [ 3165b5d38a ] - 文档:为 fs.lchmod 添加缺失的 added: 标签 (Lazizbek Ergashev) #65283
  • [ 113b808e59 ] - 文档:修复 SQLite 变更集常量描述 (greenhead) #65265
  • [ c3eb51d5a1 ] - 文档:说明开放 Pull Request 的数量限制 (Matteo Collina) #65250
  • [ d7accdcd52 ] - 文档:说明 HTTP/2 头部常量 (Harjoth Khara) #64548
  • [ f47111416f ] - 文档:创建 ai-guidelines 并加入 CONTRIBUTING (Rafael Gonzaga) #62105
  • [ c3b120e737 ] - 文档:更新概要 (Augustin Mauroy) #65171
  • [ 39f4c831fd ] - 文档:修复内部链接错误 (greenhead) #64901
  • [ be25cdd69e ] - 文档:在 urlPattern.test 中报告正确的返回类型 (Brian Muenzenmeyer) #64831
  • [ 1bf7737810 ] - 文档:修复权限文档示例 (greenhead) #64897
  • [ b7932e68a1 ] - 文档:说明 SQLite 参数绑定 (Guilherme Araújo) #65089
  • [ 5234a5169c ] - 文档:完善 SQLite 示例中的语句 (Guilherme Araújo) #65088
  • [ 39ea929da7 ] - 文档:说明 QUIC stopSending() 和 resetStream() (Issac) #64888
  • [ 2ba198db73 ] - 文档:明确 SQLite 裸参数默认值 (Sumit Kumar Das) #62009
  • [ 314f9b200f ] - 文档:移除 util.inherits 的用法 (Augustin Mauroy) #60817
  • [ d82a61662c ] - 文档:修复 worker_threads.md 中的语法错误 (이혜미) #64913
  • [ 44c0c8ff5b ] - doc : 明确OpenSSL FIPS配置 (Filip Skokan) #64982
  • [ 9b2ca70e0d ] - doc : 从CLI文档中移除--expose-gc标志 (Dario Piotrowicz) #58909
  • [ a0a12397b9 ] - doc : 记录pbkd2Sync中的ArrayBuffer支持 (kyungrae2002) #64976
  • [ b48699e077 ] - doc : 修正默认highWaterMark值 (Yilong Li) #64617
  • [ 0312ee133c ] - esm : 优化数据URL MIME正则表达式避免超线性开销 (Sumit Kumar Das) #61951
  • [ cd84d55c81 ] - esm : 仅在启用时注册文本格式 (Efe Karasakal) #64992
  • [ c0a8ef611e ] - esm : 修复wasm导入名在错误信息中的显示 (이혜미) #64950
  • [ e6c34f90c2 ] - events : 内联iterationCondition混合分发闭包 (Szymon Łągiewka) #64473
  • [ 6ee4b40c91 ] - events : 内联createEvent混合分发闭包 (Szymon Łągiewka) #64473
  • [ 367549eed5 ] - fs : 在readFileUtf8中使用固定大小读取处理大文件 (Shelley Vohr) #65328
  • [ 8a5b1ae4c2 ] - fs : 修复命名空间驱动路径的realpath解析 (Jason Zhang) #65378
  • [ c9233b950d ] - fs : 修复glob提前返回跳过同级条目问题 (Srinu desetti) #64895
  • [ bc54dd8905 ] - fs : 在提供filter时传递symlink类型给cp (Jerry Zhao) #62654
  • [ fcb4333aca ] - fs : 延迟分配FSReqPromise stat数组 (Samuel Attard) #63886
  • [ c35876154e ] - fs : 修复mkdtemp在长前缀时的越界写入问题 (Hierax_Umbra) #64770
  • [ b269616936 ] - fs : 将std::errc::permission_denied视为EPERM错误 (Kirill Saied) #64698
  • [ 212fe77e76 ] - fs : 为文件流添加windowsHandle选项 (Kirill Saied) #63851
  • [ 75df6cb435 ] - http : 通过已知长度优化end()调用性能 (Tim Perry) #65466
  • [ 48d9cd4a28 ] - http : 按头部区域缓存maxHeaderPairs值 (GetThatCookie) #64988
  • [ 04785c8f43 ] - http : 修复现有agent套接字上keylog监听器初始化问题 (Shani Singh) #65066
  • [ 4b90031534 ] - http : 在套接字接管时触发drain事件并避免HWM重复使用 (Naman Trivedi) #64991
  • [ 83a27559cd ] - http2 : 适配Node.js 24的接收延迟机制 (Matteo Collina) #65093
  • [ f43bed0ecc ] - http2 : 接收和发送rst_stream时避免悬空指针 (esgor) #64166
  • [ b42d664321 ] - inspector : 避免在V8中断时调用JS代码 (Joyee Cheung) #65028
  • [ 6bf852197d ] - lib : 对单字符使用方括号而非startsWith/endsWith (Taejin Kim) #61500
  • [ 151ca7e104 ] - lib : 强化webidl字典成员读取安全性 (Filip Skokan) #65115
  • [ 7e8c2c9f44 ] - lib : 使用validateArray验证数组参数 (greenhead) #64959
  • [ 424fe2bc5a ] - lib : 在webcrypto字典中添加并测试[EnforceRange] (Filip Skokan) #65091
  • [ 186e1b76e8 ] - meta : 将targos移至荣誉成员 (Michaël Zasso) #65393
  • [ b41b07c72a ] - meta : 添加统一HTTP API倡议 (James M Snell) #65139
  • [ f85b6ecd67 ] - meta : 将部分协作者移至荣誉成员 (Node.js GitHub Bot) #65182
  • [ 8f3d01bdce ] - meta : 将Aviv Keller添加到.mailmap (Aviv Keller) #65048
  • [ cfad1d5b28 ] - meta : 升级sccache至0.17.0 (René) #64985
  • [ 349c53c441 ] - module : 报告无法读取的package.json (Paul Bouchon) #65223
  • [ bd21e6706e ] - module : 按目录缓存最近的父级package.json (Shelley Vohr) #65326
  • [ 961bd04370 ] - module : 修复对模糊ESM文件的--check检测 (Paul Bouchon) #65203
  • [ f45ef73420 ] - net : 处理_unrefTimer和_destroy中的undefined parent (Shivay-98) #64644
  • [ 1722ddac28 ] - permission : 在GetLinkedBinding中强制附加权限验证 (Rafael Gonzaga) #65432
  • [ dff2b675db ] - process:验证资源统计数组偏移量 (Archkon) #65098
  • [ f277983e7b ] - quic:nghttp3_conn_close_stream2 相关修改 (Marten Richter) #64574
  • [ a4c770c78e ] - quic:标记 drain promise 已处理 (James M Snell) #65319
  • [ 2460b171c5 ] - quic:使用 H3_REQUEST_REJECTED 重置被拒绝的 HTTP/3 请求流 (trivenay) #65442
  • [ 18a7ccf302 ] - quic:在 maxstream 上更新 write desired size (Marten Richter) #64768
  • [ 9017f4a780 ] - quic:不要销毁具有消费者的入站流 (trivenay) #65335
  • [ ddc41c1ef4 ] - quic:修复 wake up blob 问题 (Marten Richter) #64044
  • [ 88bee43d7c ] - quic:将入站 :status 头转换为数字 (Hallison Pereira Melo) #63589
  • [ cd776fe97c ] - quic:修复在缓冲流上接收到 STOP_SENDING 时的无限循环 (Tim Perry) #64715
  • [ 4f6eda3c23 ] - repl:在加载历史文件时保留新增条目 (Mhayk Whandson) #64513
  • [ cd1e6ce29b ] - repl:添加基准测试 (Aviv Keller) #64590
  • [ 2ba740669d ] - sea:避免悬空 CLI 选项指针 (Archkon) #64755
  • [ ec5e2d6856 ] - sea:处理 asset keys 中的 NUL 字节 (Archkon) #64773
  • [ 703b854293 ] - sea:拒绝配置 JSON 中的尾随内容 (Archkon) #64774
  • [ a61a5fdd1c ] - sqlite:防止 session.close() 重复调用 (Trivikram Kamat) #65349
  • [ 6ae81be0a3 ] - sqlite:在 prepare() 中拒绝无语句的 SQL (Trevor Burnham) #65157
  • [ 043dfe4996 ] - sqlite:在 SQLTagStore 中拒绝无语句的 SQL (Trevor Burnham) #65157
  • [ b8faee02e1 ] - sqlite:检查 sqlite 值函数的空返回 (Nora Dossche) #63288
  • [ d6d2a71bee ] - sqlite:验证 createTagStore() 中的 maxSize 参数 (Anshika Jain) #63792
  • [ 61a046309f ] - sqlite:拒绝非正数的备份速率 (Trivikram Kamat) #64893
  • [ 514e3f30fb ] - sqlite:清除 SQLTagStore 绑定 (Matteo Collina) #65041
  • [ c1542255b8 ] - sqlite:绑定布尔值 (mike-git374) #62001
  • [ cdb732beb5 ] - sqlite:修复 Session::Changeset() 中的未定义行为 (Nora Dossche) #63637
  • [ fbe8861111 ] - sqlite:绑定 ArrayBuffer (mike-git374) #62061
  • [ e3c6bd6bc8 ] - src:添加缺失的 vector 头文件 (Filip Skokan) #65622
  • [ 793cf69df8 ] - src:修复嵌入器图中的堆值去重问题 (Ilyas Shabi) #64801
  • [ ea5935b04c ] - src:修复转码奇数长度 ucs2 时的越界写入 (nashit hayat) #64512
  • [ 22e5023f4d ] - src:在任务运行器中转义 Windows 环境变量 (Antoine du Hamel) #65217
  • [ a0f3c62bd9 ] - src:简化 C++ 诊断通道 API (James M Snell) #65158
  • [ 8e831a3d2e ] - src:对权限检查进行小幅清理 (James M Snell) #65158
  • [ 968b2ca3a3 ] - src:使用 DictionaryTemplate 构建权限诊断通道消息 (James M Snell) #65158
  • [ 18e16e7f8d ] - src:缓存权限字符串 (James M Snell) #65158
  • [ c8625a4b6f ] - src:添加 SetAbortHandler (Max H Fisher) #64684
  • [ c990140d60 ] - src:在任务运行器中对 cmd.exe 进行大小写不敏感匹配 (Archkon) #64907
  • [ d7463b9dbc ] - src:在剩余文件中复用缓存的环境字符串 (Seongeun Lee) #65039
  • [ b055a43b93 ] - src:暴露 Windows 专用的 fs 打开标志 (Kirill Saied) #64775
  • [ 7f21e37496 ] - src:报告 --enable-fips 失败的原因 (Filip Skokan) #64979
  • [ 8c11beae27 ] - src:将重复使用字符串更新为环境变量 (James M Snell) #64760
  • [ 9e2c477e26 ] - stream:规范化融合无状态转换结果 (Trivikram Kamat) #65367
  • [ 107e96dd41 ] - stream : 对整个数据块进行 TextEncoderStream 编码 (Matteo Collina) #65414
  • [ 164068279b ] - stream : 防止共享操作过早耗尽源 (Trivikram Kamat) #65338
  • [ 93d822bdc1 ] - stream : 在广播结束前先处理待写入的数据 (Trivikram Kamat) #65334
  • [ 6b8b9c362f ] - stream : 重用未暴露的管理读取缓冲区 (GetThatCookie) #64990
  • [ 4ec4fab367 ] - stream : 避免重复调度 endReadableNT (Matteo Collina) #65310
  • [ 86d1196ebf ] - stream : 解耦转换背压变化 (Matteo Collina) #65143
  • [ b8a7a75b19 ] - stream : 在刷新期间信号中止时拒绝拉取 (Trivikram Kamat) #65346
  • [ 386ed6a06d ] - stream : 避免在信号失败时泄露消费者 (Trivikram Kamat) #65299
  • [ 74d53bd73b ] - stream : 使用 validateObject 验证 zlib/iter 参数 (greenhead) #65015
  • [ 3a174ce16b ] - stream : 使用 validateNumber 验证 BYOB 读者选项.min (greenhead) #65014
  • [ 859ea01cb2 ] - stream : 合并非操作算法回调 (Matteo Collina) #65138
  • [ c577669825 ] - stream : 在 webstreams 热路径中减少 promise 波动 (Matteo Collina) #65138
  • [ d631e910db ] - stream : 保留虚假的取消原因 (Trivikram Kamat) #64705
  • [ f9c21eabbd ] - stream : 使用 validateBuffer 验证 BYOB 读者视图 (greenhead) #65046
  • [ b89c8f5d1e ] - stream : 修复可写流的递归中止 (Jeong SeokChan) #64825
  • [ 39e0457e86 ] - test : 修复链接本地 dgram 范围断言 (Filip Skokan) #65629
  • [ 1433cf9d5b ] - test : 考虑 OpenSSL CCM 最终行为差异 (Filip Skokan) #65542
  • [ 7d135d24b7 ] - test : 将 forEach 转换为 for of 测试 messageevent-brandcheck 文件 (Nachiketa Pathak) #65279
  • [ 421ee11715 ] - test : 在 windowsHide 测试中使用 spawnSyncAndAssert (Junsoo Ha) #65351
  • [ 929d5705bc ] - test : 移除在 macOS 上不稳定测试 test-debugger-run-after-quit-restart (Yuya Inoue) #65424
  • [ f38f154c14 ] - test : 简化 test-timers-interval-promisified.js (Donghoon Kang) #65322
  • [ a98e27f2a9 ] - test : 添加 Headers 覆盖和基准测试 (Yagiz Nizipli) #65365
  • [ 38fdbb62aa ] - test : 修复 test-net-listen-ipv6only 不稳定性 (sangwook) #64173
  • [ 06c7684b01 ] - test : 使用 common/child_process spawnSync 工具 (Junsoo Ha) #65377
  • [ 6438c70004 ] - test : 修复 Linux 调试跳过 SEA 测试保护 (구현우) #63751
  • [ fe0e4f1b65 ] - test : 避免事件循环延迟测试中的定时器竞争 (Trivikram Kamat) #64728
  • [ 6ff69baea8 ] - test : 在 test-http-server-stale-close 中强制退出码 (Antoine du Hamel) #65198
  • [ ba87603016 ] - test : 将 test-async-local-storage-bind 转换为异步循环 (freida-code) #65270
  • [ 8d6b89f454 ] - test : 在并行测试中将 forEach() 替换为 for...of (Phillip Markert) #65272
  • [ a60572a7bb ] - test : 将 test-constant.js 中的 forEach 转换为 for (NIxxy25) #65271
  • [ f82060c6ce ] - test : 使用 for-of 替代 forEach (Felix P.) #65268
  • [ 5ded71f9cc ] - test : 覆盖 realpathSync 解析 FIFO 统计后的符号链接 (Hendrik Liebau) #65113
  • [ ac9835225e ] - test : 在 test-webcrypto-prototype-pollution 中考虑 [EnforceRange] (Filip Skokan) #65173
  • [ 550d24277e ] - test : 更新 WebCryptoAPI WPT 至 4c2fd05ed5 (Node.js GitHub Bot) #65150
  • [ 2aa26559f0 ] - test : 更新 urlpattern WPT 至 4832db4761 (Node.js GitHub Bot) #65151
  • [ d45c010108 ] - test : 修复 test-http-server-stale-close.js 中的隐藏错误 (Meghan Denny) #59357
  • [ 881f8d092d ] - test : 通过避免管道 http2 测试中的死锁修复不稳定性 (Tim Perry) #65079
  • [ e4b1e3ee75 ] - 测试:允许半开的 CONNECT 隧道套接字 (Trivikram Kamat) #64973
  • [ 00f4240d48 ] - 测试:更新密码短语以符合下一版 OpenSSL FIPS 模式 (Filip Skokan) #65077
  • [ cf7680efb7 ] - 测试:在即时队列测试中使用 libuv 时钟 (Trivikram Kamat) #64889
  • [ b0c12772ff ] - 测试:在 probe-failure-hang-during-evaluate 中增加超时时间 (Joyee Cheung) #64719
  • [ 7e279104b4 ] - 测试:将 WebCryptoAPI 的 WPT 更新至 82c3d9069c (Node.js GitHub Bot) #64977
  • [ ac11f88d16 ] - 测试、文档:覆盖并记录 randomFill 中的多字节偏移量/大小 (kyungrae2002) #64834
  • [ 67da38cada ] - test_runner:在默认覆盖率排除中匹配隐藏文件 (semimikoh) #63401
  • [ b06c61a08f ] - test_runner:使用点状报告器打印覆盖率和诊断信息 (mag123c) #61423
  • [ 7cb9c9c126 ] - test_runner:使用 isolation="none" 的运行选项 (Sylvester Keil) #62269
  • [ 339acf4201 ] - test_runner:用条件导出模拟双包 (Maruthan G) #62943
  • [ e7a68bca08 ] - test_runner:为 JUnit 报告器添加类名层次结构 (mag123c) #60220
  • [ 6a248acefe ] - test_runner:修复 JUnit 报告中空诊断的问题 (Lazizbek Ergashev) #65357
  • [ d01dda79b6 ] - test_runner:不要对测试文件包装器进行标签过滤 (Chemi Atlow) #65170
  • [ 32ead10ddd ] - test_runner:修复 env 选项验证 (Jihwan) #64865
  • [ b0ef155440 ] - tls:在无效 ALPNProtocols 时抛出异常而非中止 (Sankalp Thakur) #65076
  • [ dcf65c50ce ] - tls:修复 TLS1.3 客户端证书恢复时无证书的授权状态 (Tim Perry) #64677
  • [ b0f54bda78 ] - 工具:改进提交队列失败时的评论 (Filip Skokan) #65433
  • [ bc1f2718d5 ] - 工具:修复 create-release-proposal.sh 中最大体长度处理程序 (Antoine du Hamel) #65455
  • [ bbe76516a9 ] - 工具:在 /tools/clang-format 中升级 brace-expansion (dependabot[bot]) #64984
  • [ 67697debdf ] - 工具:使 cron 作业中的环境变量保持一致 (Antoine du Hamel) #65168
  • [ ac8a68ec92 ] - 工具:仅在 CQ 中包含快速通道和足够旧的 PR (Antoine du Hamel) #65197
  • [ 6d9999fa2e ] - 工具:移除 commit-queue.sh 中的跳过逻辑 (Antoine du Hamel) #65162
  • [ 60bfa1694e ] - 工具:在 /tools/lint-md 中将 js-yaml 从 4.2.0 升级到 4.3.1 (dependabot[bot]) #65129
  • [ 782748527e ] - 工具:在 /tools/eslint 中将 js-yaml 从 4.2.0 升级到 4.3.1 (dependabot[bot]) #65130
  • [ dac257340f ] - 工具:修复 CQ 工作流中 GITHUB_TOKEN 权限 (Antoine du Hamel) #65192
  • [ e624785846 ] - 工具:在 CQ 中过滤 PR 时使用只读令牌 (Antoine du Hamel) #65169
  • [ 7d9dcfaaa7 ] - 工具:延迟移除 commit-queue 标签 (Antoine du Hamel) #65101
  • [ 0d7c7936e7 ] - 工具:将 ncu 配置移动到全局用于提交队列 (Filip Skokan) #65132
  • [ 5e1db5a38a ] - 工具:预过滤提交队列元数据 (Filip Skokan) #64343
  • [ f41509b91d ] - 工具:在 CQ 中延迟中止失败的 PR 合并 (Antoine du Hamel) #65004
  • [ ceb0e99acd ] - 工具:将 mk-ca-bundle.pl 与 curl 同步 (Archkon) #64753
  • [ 600663b23f ] - tty:添加 raw-vt 和 io raw 模式 (Samuel Williams) #64140
  • [ a40bfc742e ] - 类型定义:添加 signal_wrap 内部绑定类型 (Seongeun Lee) #65229
  • [ b103a4a3b9 ] - 类型定义:添加 diagnostics_channel 类型定义 (Seongeun Lee) #65227
  • [ e64de34b89 ] - 类型定义:添加 watchdog 内部绑定类型 (Seongeun Lee) #65228
  • [ c57c83b4d1 ] - 类型定义:添加 internal_only_v8 绑定类型 (Donghoon Kang) #65071
  • [ f15e8c9dcd ] - typings:添加凭据内部绑定类型(Donghoon Kang)#65036
  • [ a500256b0b ] - url:跳过未使用 href 重用比较(Yagiz Nizipli)#65361
  • [ 58390f8bec ] - url:加速 WHATWG URL 解析(Yagiz Nizipli)#65361
  • [ 7d5428c812 ] - url:加速 URLSearchParams(Yagiz Nizipli)#65363
  • [ 8e2461d819 ] - url:限制 Windows 文件 URL 路径边界检查(Archkon)#64788
  • [ 9ffc0da90c ] - url:在 setter 中处理不可解析的序列化 URL(Matteo Collina)#64651
  • [ fa9d4e075d ] - util:当换行长度无限时允许单行格式(Hamid Reza Ghavami)#64238
  • [ b68a7c3862 ] - util:修复 stripVTControlCharacters 中 OSC 8 超链接剥离问题(Dushyant Singh Hada)#64319
  • [ 10cbb6dc00 ] - util:修复从 getter 返回的函数格式化问题(Richard Gibson)#64839
  • [ 64c20b449e ] - util:在 comparisons.js 中使用更多原生对象(Ayoub Mabrouk)#61198
  • [ cea9786de8 ] - util:在无源映射名称时保留函数名称(Hiroki Osame)#65108
  • [ 5858c2ba9a ] - zlib:为同步 zstd 验证 pledgedSrcSize(Archkon)#64601

Windows 64位安装程序:https://nodejs.org/dist/v24.21.0/node-v24.21.0-x64.msi Windows ARM 64位安装程序:https://nodejs.org/dist/v24.21.0/node-v24.21.0-arm64.msi Windows 64位二进制文件:https://nodejs.org/dist/v24.21.0/win-x64/node.exe Windows ARM 64位二进制文件:https://nodejs.org/dist/v24.21.0/win-arm64/node.exe macOS 64位安装程序:https://nodejs.org/dist/v24.21.0/node-v24.21.0.pkg macOS 苹果硅 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-darwin-arm64.tar.gz macOS 英特尔 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-darwin-x64.tar.gz Linux 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-x64.tar.xz Linux PPC LE 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-ppc64le.tar.xz Linux s390x 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-s390x.tar.xz AIX 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-aix-ppc64.tar.gz ARMv8 64位二进制文件:https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-arm64.tar.xz 源代码:https://nodejs.org/dist/v24.21.0/node-v24.21.0.tar.gz 其他发布文件:https://nodejs.org/dist/v24.21.0/ 文档:https://nodejs.org/docs/v24.21.0/api/

SHASUMS

code
-----BEGIN
PGP
SIGNED
MESSAGE-----
哈希:
SHA256
aec7b2464afb99f078c19cb06d201d543bd3b311cba071282bce1b17c97e58bb
node-v24.21.0-aix-ppc64.tar.gz
22ca85110f26015696a3fa9216bc372ae65203d170622eaf7d211e2dd5bb49e3
node-v24.21.0-arm64.msi
bed7eea5325e1108f32ce5228ddd6a5f0f08a499ee42aa7442aea583702f6057
node-v24.21.0-darwin-arm64.tar.gz
6239d4cf92d864487ec8cd3615038f7b67e7f58b77b39500b12030a9
win-x64/node.lib
0df783d02aee58bbe9dcfc157ccc5cc37987d24c4f35889587b39500b12030a9
win-x64/node.lib
-----BEGIN
PGP
SIGNATURE-----
iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCaqCC2wAKCRAgsaOQsWjT
Vv76AQCzUTaAC4osCJzGVV+xtaqgA5v5tWhn3WwJweSFGKHxUwD/UsLGvdIo2tGk
bTyUAWIgr/p3fFQM5gdAh28XWvNvcgQ=
=nyNQ
-----END
PGP
SIGNATURE-----