ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Node.js 24.4.0(Current)版本全解析:crypto XOF 输出长度、Watch 模式新信号与权限模型增强

Node.js 24.4.0(Current)版本全解析:crypto XOF 输出长度、Watch 模式新信号与权限模型增强 Node.js 24.4.0Current版本全解析crypto XOF 输出长度、Watch 模式新信号与权限模型增强【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.orgNode.js 24.4.0 是于 2025-07-09 发布的 Current 版本维护人为 RafaelGSS由 nodejs.org 网站仓库 中的官方 Release Blog 整理而成。本指南将逐项拆解该版本 7 项 SEMVER-MINOR 新特性、全量提交清单、跨平台下载产物与 SHASUMS 校验方式并结合仓库源码说明这些 Release 数据是如何被自动化生成、渲染与校验的帮助你快速判断升级价值并安全落地。版本概览与发布背景属性值版本号v24.4.0发布渠道Current非 LTS、未 EOL发布日期2025-07-09发布维护人RafaelGSSSEMVER-MINOR 新特性7 项源码位置apps/site/pages/en/blog/release/v24.4.0.mdCurrent 这一状态并非随意标注而是由站点数据生成逻辑动态判定。在 apps/site/next-data/generators/releaseData.mjs 中getNodeReleaseStatus会先判断是否已过 EOL 日期再判断该主版本最新发布是否为 LTS两者皆否则返回Currentconst getNodeReleaseStatus (latest, eol) { const now new Date(); if (eol now new Date(eol)) { return EOL; } if (latest.lts.isLts) { return LTS; } return Current; };也就是说v24.4.0 发布时尚未进入 LTS 阶段属于功能持续演进中的 Current 发行线。Release Blog 是如何生成的这类发布文章并非纯手工编写仓库内的 apps/site/scripts/release-post/index.mjs 是专门的自动化生成脚本。运行node index.mjs [version]省略版本号时自动从https://nodejs.org/dist/index.json选取最新版本后脚本会依次执行fetchChangelog从 Node.js 官方 CHANGELOG 中按a id版本号/a锚点截取对应版本的变更段落fetchAuthor通过正则/^## .*? \([^)]\)[,.] (\S)/解析发布维护人并查询其资料fetchVersionPolicy解析版本策略Stable / LTS 等fetchShasums拉取SHASUMS256.txt.asc失败时回退为[INSERT SHASUMS HERE]占位符verifyDownloads对 downloadsTable.mjs 生成的每个下载地址发起 HEAD 请求返回真实链接或*Coming soon*。最终经 Handlebars 模板 template.hbs 渲染、Prettier 格式化后写入pages/en/blog/release/vX.md。本篇文章的主体内容Notable Changes、Commits、下载列表、SHASUMS正是这一流水线的产物。Notable Changes7 项 SEMVER-MINOR 新特性详解本节完整覆盖官方 Notable Changes 列表并结合源码与测试印证。1. cryptocrypto.hash支持 XOF 函数的outputLength选项提交22b60e8a57PR #58121Aditi为crypto.hash增加了outputLength选项用于可扩展输出函数XOF典型如 SHAKE128 / SHAKE256。XOF 允许调用方按需指定输出摘要长度此前缺少显式控制能力该选项让crypto.hash的使用方式更贴近crypto.createHash的完整语义const { hash } require(node:crypto); // 指定 XOF 输出长度字节 const digest hash(shake256, message, { outputLength: 32 });同版本还包含一项关键配套修复77712ae2a1PR #58942Filip Skokan修复了 OpenSSL 3.4 引入的 SHAKE128/256 破坏性变更breaking change保证默认行为不被 OpenSSL 升级意外改变93e1a33b81PR #58845则修复了OPENSSL_IS_BORINGSSL宏的包含问题服务于 BoringSSL 构建场景。2. watch新增--watch-kill-signal标志提交fe17f5d285PR #58719Dario Piotrowicz为 watch 模式新增--watch-kill-signal标志允许用户在文件变更触发重启时指定发送给被监视进程的信号默认通常为SIGTERMnode --watch-kill-signalSIGINT app.js配套提交80dec9849dSEMVER-MINORdoc将所有 watch 模式相关标志补充到node.1手册页并新增测试d8a86a622ePR #58878确保node.1与cli.md保持同步防止文档漂移。同系列修复94f9424d78PR #58952消除了test-runner-watch-mode-kill-signal的偶发失败deflake。3. fs新增可释放disposable的mkdtempSync提交87f4d078b3PR #58516Kevin Gibbons为fs.mkdtempSync增加了基于 [Explicit Resource Management]Symbol.dispose的释放语义使临时目录可在作用域结束时自动清理const { mkdtempSync } require(node:fs); { using dir mkdtempSync(/tmp/example-); // 使用临时目录... } // 作用域结束自动删除该特性与 JavaScript 的using声明配合能显著减少临时目录泄漏的隐患。本版本 fs 模块还包含若干健壮性修复b378fc3ac0在options.bufferSize非法时先关闭目录再抛错23bd4d1867支持在chown、lchown、fchown中传入特殊值-1表示不修改 uid/gidd07ce8e90c对非法调用抛出ERR_INVALID_THIS。4. permissionspawn 时传播权限模型标志 支持permission.has(addon)权限模型Permission Model在本版本获得两项 SEMVER-MINOR 增强提交9623c50b53PR #58853Rafael Gonzaga当通过child_processspawn 子进程时权限模型标志会被传播到子进程确保子进程继承父进程的--permission约束提交ed966a0215PR #58951Rafael Gonzagaprocess.permission.has()新增对addon权限域的查询支持应用可在运行时检测原生插件Addon是否被允许加载if (process.permission.has(addon)) { // 允许加载原生插件 }此外dd54910ab1PR #58898增强了权限模型的调试输出能力便于定位权限拦截原因。5. sqlite连接级别新增readBigInts选项提交797ec4da04PR #58697Miguel Marcondes Filho为node:sqlite的数据库连接级别增加了readBigInts选项读取时可将 INTEGER 列直接映射为 JavaScript 的BigInt避免大整数精度丢失const { DatabaseSync } require(node:sqlite); const db new DatabaseSync(app.db, { readBigInts: true });同版本依赖同步升级f735b8b8d0PR #58882将内置 SQLite 升级至 3.50.2。6~7. 文档与工具链watch 标志手册同步已在第 2 节覆盖80dec9849d同时属于 Notable Changesdoc 类 SEMVER-MINOR具体内容与--watch-kill-signal一并说明。至此 7 项 Notable Changes 全部覆盖完毕。Commits 全量解读按模块分类的变更地图v24.4.0 共包含数十个提交涵盖运行时、构建、文档、测试与工具链。以下按模块完整梳理保留提交哈希、改动要点与作者便于按业务场景检索。运行时核心crypto / fs / dns / os / tty / v8 / vm / repl提交哈希模块内容作者 / PR22b60e8a57cryptoXOF 函数crypto.hash支持outputLengthSEMVER-MINORAditi / #5812177712ae2a1crypto修复 OpenSSL 3.4 引入的 SHAKE128/256 破坏性变更Filip Skokan / #5894293e1a33b81crypto修复OPENSSL_IS_BORINGSSL宏包含Shelley Vohr / #5884587f4d078b3fs可释放mkdtempSyncSEMVER-MINORKevin Gibbons / #58516b378fc3ac0fsoptions.bufferSize非法时先关闭目录再抛错Livia Medeiros / #5885623bd4d1867fschown/lchown/fchown支持特殊值-1Alex Yang / #58836d07ce8e90cfs非法调用抛出ERR_INVALID_THISLivia Medeiros / #588483afb15b715dns修复解析过程内存泄漏theanarkh / #58973f40ac32f3ednstimeout 0时统一按 1000ms 处理theanarkh / #584417f7a833e82os修复GetInterfaceAddresses内存泄漏theanarkh / #589401ee539a3aatty空NO_COLOR与未设置等价Antoine du Hamel / #580742b34867ba9v8修复 heap utils 销毁时缺失的回调Ruben Bridgewater / #58846a1f4333695vmSourceTextModule.moduleRequests暴露 import 阶段Chengzhong Wu / #5882972f7f7a833e82repl关闭后 eval 抛错改为ERR_USE_AFTER_CLOSEDario Piotrowicz / #58791c891db1c05repl改进计算属性computed properties的 Tab 补全Dario Piotrowicz / #58775注72f7f7a833e82为efe19b50b6的笔误校正实际 repl 修复对应efe19b50b6。权限与进程permission / bootstrap / inspector / lib提交哈希模块内容作者 / PR9623c50b53permissionspawn 时传播权限模型标志SEMVER-MINORRafael Gonzaga / #58853ed966a0215src,permission支持permission.has(addon)SEMVER-MINORRafael Gonzaga / #58951dd54910ab1src,permission增强权限模型调试Rafael Gonzaga / #588984170359bcdbootstrap用户模块加载器初始化后再初始化 http proxyJoyee Cheung / #589380d969a66dcinspector支持 undici 流量数据检查Chengzhong Wu / #58953839b25e371libWASI 类暴露setupInstance方法toyobayashi / #57214d8f3f649c2lib修正getTypeScriptParsingModejsdoc沈鸿飞 / #58681模块系统module提交哈希内容作者 / PRd29b195b51使用 module request record 链接模块Chengzhong Wu / #58886a78385c4bdconvertCJSFilenameToURL时转换 schema-only 核心模块Alex Yang / #58612e0de362319为组合式歧义模块语法错误补充测试Mert Can Altin / #55874测试与测试运行器test / test_runner提交哈希内容作者 / PR94f9424d78消除 watch-mode-kill-signal 测试偶发失败Dario Piotrowicz / #58952b6ff6c8d20新增递归 readdirBuffer 路径已知问题测试Dario Piotrowicz / #58893c300f107ac新增fs.cp已知问题测试James M Snell / #58883d8a86a622e测试确保node.1与cli.md同步Dario Piotrowicz / #5887857c69acb78用.find()替换.filter()[0]Livia Medeiros / #5887267b3f4fbee移除对树内deps/undici的依赖Richard Lau / #58866df85b02a00关闭fs-opendir测试中的目录句柄Livia Medeiros / #58855692f1aebf0更新 WPT urlpattern 至 84b75f0880Node.js GitHub Bot / #587853a119be362/924cf1ef25配置文件测试存入临时目录并去抖动Luigi Pinca / #58799b5c7e645c9test_runner 正确过滤--experimental-config-filePietro Marchini / #58833d0faf723c7修复 run 中 timeout 未传播到子进程jakecastelli / #588316052d8c1ac修正 already mocked 错误标点位置Jacob Smith / #58840构建与工具链build / tools / deps / meta / doc提交哈希内容作者 / PRc76585d10e非 64 位平台禁用v8_enable_pointer_compression_shared_cageShelley Vohr / #58867049c838609支持自定义 inspector_protocol 路径Shelley Vohr / #58839e8dd1897d5maglev 禁用时将 maglev 文件编译进 v8_compilerYao Zi / #58861191396260c更新 /tools/eslint 依赖6 项dependabot / #589211e423e0680inspector_protocol 更新至 69d69ddShelley Vohr / #589000def4e23b1gyp-next 更新至 0.20.2Node.js GitHub Bot / #58788adb950cde2更多 MDN 链接迁移到类型typesAntoine du Hamel / #58930d534706211/3ec5fe04d0升级 step-security/harden-runner 与 codeql-actiondependabot / #58923 / #58922bd4a1a5b06新增协作者 IlyasShabi/ #58916573171deb0/bf66291382V8 上游 cherry-pick 两处Levi Zim / #58773、Michaël Zasso / #58749f735b8b8d0sqlite 更新至 3.50.2Node.js GitHub Bot / #588828e9622e494undici 更新至 7.11.0Node.js GitHub Bot / #588598741da81c7googletest 更新Node.js GitHub Bot / #58710028ce40e25minimatch 更新至 10.0.3Node.js GitHub Bot / #58712文档doc共 10 项提交哈希内容80dec9849d将全部 watch 模式相关标志补充到node.1SEMVER-MINOR921b563999移除权限模型源码的失效链接78628d6158澄清 TSC 公开/私下会议细节ab834a8b94globals.md稳定性标记保持一致8d4f6a0016Core Promise APIs 移入 Completed initiatives94725fced5修复globals.md中fetch小节a7a4870014补充缺失的Class:标记98f29fa2fd/710e13d436/8b93008dc0协作者与维护人信息更新9ff81d21ed/ff2efd266d/5e854e1f61修复 vm、test.md 链接与 child_process 标点b36fa0fda1修正assert.ifError()的 jsdoc 定义cebb93ea12http 请求头类型补充 array 类型1519b75191/6e6b373da1stream.md 小节顺序与 globals.md 冒号修复48f5d6d686增加 ERM 支持引入指南其他 src 清理-Wunreachable-code 系列8eecaa264d、143379df56、056a1af197、ba661459f5Shelley Vohr / #58901分别修复node_config_file.cc、crypto_context.cc、node_contextify.cc、node_api.cc中的不可达代码告警2445f86dc9#58844修复debug_utils.cc的-Wmismatched-new-delete6af0163dda#58896简化 ExternalReferenceRegistry 的 fast API 注册12286c9f64#58028更系统地使用 C20 ranges 库210e608938#58915在existSync前清理uv_fs_req。另含a118bfc536assert 死代码清理#58760与31252b9af1benchmark 新增 source map 相关基准#58125。下载产物矩阵与版本兼容逻辑官方 Release 列出了面向 Windows、macOS、Linux、AIX 与源码的完整下载产物全部位于https://nodejs.org/dist/v24.4.0/目录此处仅作数据展示不再逐个外链Windows 64-bit Installer: https://nodejs.org/dist/v24.4.0/node-v24.4.0-x64.msi Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.4.0/node-v24.4.0-arm64.msi Windows 64-bit Binary: https://nodejs.org/dist/v24.4.0/win-x64/node.exe Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.4.0/win-arm64/node.exe macOS 64-bit Installer: https://nodejs.org/dist/v24.4.0/node-v24.4.0.pkg macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-darwin-arm64.tar.gz macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-darwin-x64.tar.gz Linux 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-linux-x64.tar.xz Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-linux-ppc64le.tar.xz Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-linux-s390x.tar.xz AIX 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-aix-ppc64.tar.gz ARMv8 64-bit Binary: https://nodejs.org/dist/v24.4.0/node-v24.4.0-linux-arm64.tar.xz Source Code: https://nodejs.org/dist/v24.4.0/node-v24.4.0.tar.gz Other release files: https://nodejs.org/dist/v24.4.0/ Documentation: https://nodejs.org/docs/v24.4.0/api/从源码看这份下载清单并非固定不变在 apps/site/scripts/release-post/downloadsTable.mjs 中resolveDownloads会根据 semver 范围动态裁剪产物例如版本 16.0.0不提供 macOS Apple Silicon 二进制版本 19.9.0不提供 Windows ARM 安装器与二进制版本 23.0.0移除 Windows 32 位产物版本 24.0.0移除 ARMv7 32 位二进制。因此 v24.4.0 的产物表中不会出现 ARMv7 32 位或 Windows 32 位条目——这正是下载页archive.tsxapps/site/util/download/archive.tsx中getCompatiblePlatforms依据compatibility.semver过滤平台列表、并最终在 下载页 上呈现给用户的同源数据。SHASUMS 校验与安全发布Release 文章末尾附带的 SHASUMS 块是经过 PGP 签名的校验清单SHASUMS256.txt.asc完整内容如下供离线核验-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 41394530a9b85327f1cd6aa618ca351f7386f0d9db41181973abf3f601637508 node-v24.4.0-aix-ppc64.tar.gz e52e72c5bf332de9acd8a8ae57864f7fa53f9f4a6eae7c6467125cac4bf11c06 node-v24.4.0-arm64.msi d7db0e5017d68f4e34405f5c99ad3895481793cc6420550e582b7eedf911780f node-v24.4.0-darwin-arm64.tar.gz b126a6d978a0d1ac1cd8b4e34b108b64ec074039820fe66714583e3c136aeff5 node-v24.4.0-darwin-arm64.tar.xz 3dea0c90625c2e7be1e71c3561e1e3337d42d7b6e67dd6f3a3709ec12359bec7 node-v24.4.0-darwin-x64.tar.gz 15e2d12e279e86b3bf7595f843dc0ecc0a3f243f0471b7b1611a690cc0a12801 node-v24.4.0-darwin-x64.tar.xz acb66dfaf241c0eeb73e09d84922b776f72be3b237495ee57b375df39e65df31 node-v24.4.0-headers.tar.gz 063a87ca06d7b3d4144aa7b44114a693970a90668db16e23ba4a1fd8dfaf2e7e node-v24.4.0-headers.tar.xz 637ab954900450101c9a254df9014771f5f21d5fd12fec53e4cf4f8bae7e7365 node-v24.4.0-linux-arm64.tar.gz 48ecb7ee501f69e2a27d9b4b724c05e82bbd1cf03df7152ce37628956b8303a7 node-v24.4.0-linux-arm64.tar.xz dd7bbd65b315097c685aef1f0f0cd4cb5e605a1a94458dc44cae7da814eb209a node-v24.4.0-linux-ppc64le.tar.gz b00e1449ad9a4ec77cc1b8c1e3df3799e995fd781c24ba9bc4d787ba4ad3f605 node-v24.4.0-linux-ppc64le.tar.xz efa22fc1bdb25c9eb656465b9304b02a037c2d07774c9f9adaf3bf3741583cd3 node-v24.4.0-linux-s390x.tar.gz 3333eb8b114111742056865516685519e486e8988521e2cb086f40ef73d0f2bc node-v24.4.0-linux-s390x.tar.xz 292c187efeb7a360dee81efb519518dea2e02cb98e4c0d1d5a0f0af62c31e4b6 node-v24.4.0-linux-x64.tar.gz af59f88ed35c68f7196dc94938e74327e3abe62055b831746de5b23bd7e1670a node-v24.4.0-linux-x64.tar.xz cee5a937a67b1e99d7b92ceafefef03109dc2f9c667284f9d9a23aa523645769 node-v24.4.0-win-arm64.7z e6ebdac17e1c25c9722c85647f1f07bb1ee160b9fb9cfb9a9214f20703981ea0 node-v24.4.0-win-arm64.zip 4643950bbff4b920690af1d3b673dfba96cbcc648844192cc9310997a2c34adf node-v24.4.0-win-x64.7z 1471b32d0690b21b2d0f67f3b11c7ecbf9577c1bfc03acf41df0074e677f1531 node-v24.4.0-win-x64.zip 6fa0be2a221a4c3cdfa9a4c017b95a8f8b99c8abc1261285239fe98c86f86b89 node-v24.4.0-x64.msi bff7a6239d9c5a809f4fe4e8585144ccc930533d88f8ef2935afa0d5aa86c244 node-v24.4.0.pkg 20d683315d8ecd6ea21a786437d3b680b2a0693646662ddade8ccef4509b78b9 node-v24.4.0.tar.gz 42fa8079da25a926013cd89b9d3467d09110e4fbb0c439342ebe4dd6ecc26bbb node-v24.4.0.tar.xz 8fcf14f206c72b2362ecb04e977e1428810331d3ff18845b06f97f9ee204dde4 win-arm64/node.exe 6809fc156673d10cca7dff0e54f28309bb111d235c54493a4a0ca401c2113be7 win-arm64/node.lib be8b31d78b98764041c9b8990df3b8ffa26ff182f3eefae5dbae1987454e7f62 win-arm64/node_pdb.7z 0185e4657278b57b772e8b890c56b889f97edd5832d8149c642bae2017e174c0 win-arm64/node_pdb.zip 0b0be4b64648e4f01803b9582aafce9d0f648b1115083abbdd55351cae38bde1 win-x64/node.exe 34882ca2bb450431047f2dd3bae1c3b8c1cd2b4cffd5c1a0bf079948846d2b83 win-x64/node.lib 384fe079b2d28986217ffbecf5b97401a8286a8115b92da90bdb9854476cde0c win-x64/node_pdb.7z 390d0ae2bb72992f4c4d70cbb16019cbdddacb195ac9a4a7d85fb44319414efb win-x64/node_pdb.zip -----BEGIN PGP SIGNATURE----- iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbiq0389VXvQFAmhuYjIACgkQiq0389V XvQtxwv/dGQ4Cae3duKsqMjliKhRKuK2dQIosk/yOyPLZhstZygIiaMacARq12 AL3BabOFtScmT2QMv45Rdso43TFFgCuD/8tZihapxXpU9sTDbRlOZsr3TrQ3A1zf XWZGWmtyzfA0paOiOwmpI0YD2Mbyhf/1tLiWrVLv05hduf18dyLxY8kiXCrnfD wWox6fvVwJ7hJzAN1Qjr8Rl/ZHTEfnTsCn5742uC4N080lE4kUmvw5OPUP4tAo 4j3iPPB4kNnwwFs2JmZ92r5UonFQufiUl6IYAfM3wnxEnxRj5qo09Ih9PCR9tu Yfb6StsxjhxNKcn2zvcrqZFTHptmXyle5PvVsUgdc9OTW0K37OnKXgupEv0m/nP t0MdcQztD4EC3/vCBXmV4QhgCYxRPawYTx8ey5GPh1m5J0CVxsGtgZP13Z9tF7A UVKJKrvkuK1Azs2Voz0IhZovIoamMPGWMaK9SZKOWqHWZjoEidWOk857JHNsobF 7UmbjimH ElhG -----END PGP SIGNATURE-----实践中校验流程为先用gpg --verify验证签名再对下载文件计算 SHA-256 并与上表比对。该校验清单由生成脚本中的fetchShasums自动拉取确保与官方分发目录实时一致下载页也提供了验证签名 SHASUMS的指引入口见 apps/site/pages/en/download/index.mdx。发布信息在 nodejs.org 站点中的呈现链路了解 Release 文章如何被站点消费有助于理解它的结构约束博客卡片渲染文章 frontmatter 中的category: release、title、author、date由 BlogPostCard 渲染为博客列表卡片并依据mapBlogCategoryToPreviewType映射为对应的预览类型版本内互链下载页上的 blog post 链接由 BlogPostLink 根据当前选择的版本动态指向/blog/release/v24.4.0而 changelog 链接由 ChangelogLink 基于BASE_CHANGELOG_URL拼出版本状态驱动文章所属版本的状态Current / LTS / EOL由 releaseData.mjs 在构建期生成并经由 releaseProvider 提供给各组件。升级评估与结论v24.4.0 作为 Current 版本其价值集中在三方面开发体验--watch-kill-signal让 watch 模式对信号控制更精细mkdtempSync的 disposable 语义配合using声明简化临时资源管理数据精度sqlitereadBigInts解决大整数精度问题crypto XOFoutputLength补齐哈希能力安全加固权限模型在 spawn 场景的标志传播与permission.has(addon)运行时检测进一步收紧了权限边界。同时本版本修复了多处在升级 OpenSSL 3.4、SQLite 3.50.2、undici 7.11.0 后可能出现的兼容性回归尤其是 SHAKE128/256并清理了 dns、os 等模块的内存泄漏。建议在测试环境先行验证上述涉及模块后再进入生产升级流程完整的逐条提交信息可继续查阅 v24.4.0 发布原文 及仓库内的生成脚本与下载逻辑源码。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表