Node.js 24.15.0 (LTS)
TL;DR · AI 摘要
Node.js 24.15.0 LTS 版本发布,新增多项 SEMVER-MINOR 功能,包括 CLI 选项、crypto 原始密钥支持、fs.stat 选项及 SQLite 模块 RC 状态。
核心要点
- 新增 --max-heap-size 和 --require-module 等 CLI 参数提升运行时控制能力
- crypto 模块支持原始密钥格式,fs.stat 增加 throwIfNoEntry 选项
- 内置 SQLite 模块标记为发布候选(RC),测试运行器增强并发与中断支持
Antoine du Hamel
[2026-04-15, Version 24.15.0 'Krypton' (LTS), @aduh95](http://nodejs.org/en/blog/release/v24.15.0#2026-04-15-version-24150-krypton-lts-aduh95)
[Notable Changes](http://nodejs.org/en/blog/release/v24.15.0#notable-changes)
- [`3d87ecacbc`] - (SEMVER-MINOR)cli: add --max-heap-size option (tannal) #58708
- [`83c38672f7`] - cli: add --require-module/--no-require-module (Joyee Cheung) #60959
- [`54ef940e01`] - (SEMVER-MINOR)crypto: add raw key formats support to the KeyObject APIs (Filip Skokan) #62240
- [`f4a3edc47a`] - (SEMVER-MINOR)fs: add
throwIfNoEntryoption for fs.stat and fs.promises.stat (Juan José) #61178 - [`5cdcba17cc`] - (SEMVER-MINOR)http2: add http1Options for HTTP/1 fallback configuration (Amol Yadav) #61713
- [`8b6be3fe14`] - module: mark require(esm) as stable (Joyee Cheung) #60959
- [`68fbc0c6cc`] - module: mark module compile cache as stable (Joyee Cheung) #60971
- [`c851e76f8c`] - (SEMVER-MINOR)net: add
setTOSandgetTOStoSocket(Amol Yadav) #61503 - [`6ac4304c87`] - (SEMVER-MINOR)sqlite: add limits property to DatabaseSync (Mert Can Altin) #61298
- [`aaf9af1672`] - sqlite: mark as release candidate (Matteo Collina) #61262
- [`eb77a7a297`] - (SEMVER-MINOR)src: add C++ support for diagnostics channels (RafaelGSS) #61869
- [`6834ca13bb`] - (SEMVER-MINOR)stream: rename
Duplex.toWeb()type option toreadableType(René) #61632 - [`f5f21d36a6`] - test_runner: add exports option for module mocks (sangwook) #61727
- [`1f2025fd1e`] - (SEMVER-MINOR)test_runner: expose worker ID for concurrent test execution (Ali Hassan) #61394
- [`1ca20fc33d`] - (SEMVER-MINOR)test_runner: show interrupted test on SIGINT (Matteo Collina) #61676
[Commits](http://nodejs.org/en/blog/release/v24.15.0#commits)
- [`148373cea1`] - assert,util: improve comparison performance (Ruben Bridgewater) #61176
- [`e5558b0859`] - assert,util: fix deep comparing invalid dates skipping properties (Ruben Bridgewater) #61076
- [`83cffd92b5`] - async_hooks: enabledHooksExist shall return if hooks are enabled (Gerhard Stöbich) #61054
- [`2c9436b43d`] - benchmark: fix destructuring in dgram/single-buffer (Ali Hassan) #62084
- [`837acd7382`] - benchmark: add startup benchmark for ESM entrypoint (Joyee Cheung) #61769
- [`a6ced7d272`] - buffer: improve performance of multiple Buffer operations (Ali Hassan) #61871
- [`a82003bf8b`] - buffer: optimize buffer.concat performance (Mert Can Altin) #61721
- [`83dfd0be1d`] - buffer: disallow ArrayBuffer transfer on pooled buffer (Chengzhong Wu) #61372
- [`ed2d0cb1bf`] - build: support empty libname flags in
configure.py(Antoine du Hamel) #62477 - [`09f7920267`] - build: fix timezone-update path references (Chengzhong Wu) #62280
- [`af46b15b91`] - build: use path-ignore in GHA coverage-windows.yml (Chengzhong Wu) #61811
- [`2cf77eadd1`] - build: generate_config_gypi.py generates valid JSON (Shelley Vohr) #61791
- [`e0220f0c35`] - build: build with v8 gdbjit support on supported platform (Joyee Cheung) #61010
- [`5505511dcb`] - build: enable -DV8_ENABLE_CHECKS flag (Ryuhei Shima) #61327
- [`5f8ecf3940`] - build: add --debug-symbols to build with -g without enabling DCHECKs (Joyee Cheung) #61100
- [`ab18c0867b`] - build: fix --node-builtin-modules-path (Filip Skokan) #62115
- [`bfa60d5782`] - build: fix GN for new merve dep (Shelley Vohr) #61984
- [`0d1975fe3a`] - build,win: add WinGet Visual Studio 2022 Build Tools Edition config (Mike McCready) #61652
- [`10b2bb5fa6`] - child_process: add tracing channel for spawn (Marco) #61836
- [`3d87ecacbc`] - (SEMVER-MINOR)cli: add --max-heap-size option (tannal) #58708
- [`83c38672f7`] - cli: add --require-module/--no-require-module (Joyee Cheung) #60959
- [`9d37233824`] - crypto: update root certificates to NSS 3.121 (Node.js GitHub Bot) #62485
- [`b0cbfe38a4`] - crypto: add crypto::GetSSLCtx API for addon access to OpenSSL contexts (Tim Perry) #62254
- [`dc034a4ac9`] - crypto: reject ML-KEM/ML-DSA PKCS#8 import without seed in SubtleCrypto (Filip Skokan) #62218
- [`8aa6e706df`] - crypto: refactor WebCrypto AEAD algorithms auth tag handling (Filip Skokan) #62169
- [`20cb932bcf`] - crypto: read algorithm name property only once in normalizeAlgorithm (Filip Skokan) #62170
- [`e2934162b4`] - crypto: add missing AES dictionaries (Filip Skokan) #62099
- [`8b8db52f65`] - crypto: fix importKey required argument count check (Filip Skokan) #62099
- [`bd5458db29`] - crypto: fix missing nullptr check on RSA_new() (ndossche) #61888
- [`7302c7ed22`] - crypto: fix handling of null BUF_MEM* in ToV8Value() (Nora Dossche) #61885
- [`8d0c22ea20`] - crypto: fix potential null pointer dereference when BIO_meth_new() fails (Nora Dossche) #61788
- [`72aad8b40f`] - crypto: always return certificate serial numbers as uppercase (Anna Henningsen) #61752
- [`2395fc0f4d`] - crypto: rename CShakeParams and KmacParams length to outputLength (Filip Skokan) #61875
- [`541be3aaf2`] - crypto: recognize raw formats in keygen (Filip Skokan) #62480
- [`54ef940e01`] - (SEMVER-MINOR)crypto: add raw key formats support to the KeyObject APIs (Filip Skokan) #62240
- [`bef1949823`] - deps: V8: cherry-pick 33e7739c134d (Thibaud Michaud) #62567
- [`2e1a565a55`] - deps: update ada to 3.4.4 (Node.js GitHub Bot) #62414
- [`d0418bad10`] - deps: update timezone to 2026a (Node.js GitHub Bot) #62164
- [`53aad66415`] - deps: update googletest to 2461743991f9aa53e9a3625eafcbacd81a3c74cd (Node.js GitHub Bot) #62484
- [`90fab71a84`] - deps: update simdjson to 4.5.0 (Node.js GitHub Bot) #62382
- [`a416ddf6d9`] - deps: V8: cherry-pick cf1bce40a5ef (Richard Lau) #62449
- [`4d9123e57d`] - deps: upgrade npm to 11.12.1 (npm team) #62448
- [`952d715028`] - deps: update sqlite to 3.51.3 (Node.js GitHub Bot) #62256
- [`f3fd7ed426`] - deps: update googletest to 73a63ea05dc8ca29ec1d2c1d66481dd0de1950f1 (Node.js GitHub Bot) #61927
- [`71a2f82d7c`] - deps: upgrade npm to 11.11.1 (npm team) #62216
- [`84f60c26f7`] - deps: update amaro to 1.1.8 (Node.js GitHub Bot) #62151
- [`43159d0e5f`] - deps: update sqlite to 3.52.0 (Node.js GitHub Bot) #62150
- [`b887657b38`] - deps: V8: cherry-pick aa0b288f87cc (Richard Lau) #62136
- [`7ab885b323`] - deps: update ada to 3.4.3 (Node.js GitHub Bot) #62049
- [`671ddec2b9`] - deps: update minimatch to 10.2.4 (Node.js GitHub Bot) #62016
- [`290fe37d4d`] - deps: update simdjson to 4.3.1 (Node.js GitHub Bot) #61930
- [`a13bee76b5`] - deps: update acorn-walk to 8.3.5 (Node.js GitHub Bot) #61928
- [`f0e40b35b9`] - deps: update acorn to 8.16.0 (Node.js GitHub Bot) #61925
- [`463dfa023a`] - deps: update minimatch to 10.2.2 (Node.js GitHub Bot) #61830
- [`4b2e4bb108`] - deps: update nbytes to 0.1.3 (Node.js GitHub Bot) #61879
- [`5626cb83d0`] - deps: remove stale OpenSSL arch configs (René) #61834
- [`52668874fd`] - deps: update llhttp to 9.3.1 (Node.js GitHub Bot) #61827
- [`b3387b07b1`] - deps: update googletest to 5a9c3f9e8d9b90bbbe8feb32902146cb8f7c1757 (Node.js GitHub Bot) #61731
- [`196268cb4c`] - deps: V8: cherry-pick c5ff7c4d6cde (Chengzhong Wu) #61372
- [`36869b52de`] - deps: update merve to 1.2.2 (Node.js GitHub Bot) #62213
- [`3cbac055de`] - deps: update merve to 1.2.0 (Node.js GitHub Bot) #62149
- [`7757cc3495`] - deps: V8: backport 6a0a25abaed3 (Vivian Wang) #61670
- [`359797c2fb`] - deps,src: prepare for cpplint update (Michaël Zasso) #60901
- [`ace802e59b`] - diagnostics_channel: add diagnostics channels for web locks (Ilyas Shabi) #62123
- [`a072411b03`] - doc: remove spawn with shell example from bat/cmd section (Kit Dallege) #62243
- [`0b152449af`] - doc: fix typo in --disable-wasm-trap-handler description (Dmytro Semchuk) #61820
- [`73ea387ad7`] - doc: remove obsolete Boxstarter automated install (Mike McCready) #61785
- [`7f234add8e`] - doc: deprecate
module.register()(DEP0205) (Geoffrey Booth) #62395 - [`12fc3c6a30`] - doc: clarify that features cannot be both experimental and deprecated (Antoine du Hamel) #62456
- [`1ecc5962a2`] - doc: fix 'transfered' typo in quic.md (lilianakatrina684-a11y) #62492
- [`56741a1303`] - doc: move sqlite type conversion section to correct level (René) #62482
- [`12b04d17d5`] - doc: add Rafael to last security release steward (Rafael Gonzaga) #62423
- [`c4567e4a8d`] - doc: fix overstated Date header requirement in response.sendDate (Kit Dallege) #62206
- [`384a41047f`] - doc: enhance clarification about the main field (Mowafak Almahaini) #62302
- [`93d19b1a1c`] - doc: minor typo fix (Jeff Matson) #62358
- [`3db35d2c59`] - doc: add path to vulnerabilities.json mention (Rafael Gonzaga) #62355
- [`57b105c9d5`] - doc: deprecate CryptoKey use in node:crypto (Filip Skokan) #62321
- [`490168c993`] - doc: fix small environment_variables typo (chris) #62279
- [`0291be584b`] - doc: test and test-only targets do not run linter (Xavier Stouder) #62120
- [`ba0a82a1e1`] - doc: clarify fs.ReadStream and fs.WriteStream are not constructable (Kit Dallege) #62208
- [`125bdbf504`] - doc: clarify that any truthy value of
shellis part of DEP0190 (Antoine du Hamel) #62249 - [`a141ad0aeb`] - doc: remove outdated Chrome 66 and ndb references from debugger (Kit Dallege) #62202
- [`44bde8e573`] - doc: add note (and caveat) for
mock.moduleabout customization hooks (Jacob Smith) #62075 - [`8c46a1ca1a`] - doc: copyedit
addons.md(Antoine du Hamel) #62071 - [`7f989f02f7`] - doc: correct
util.convertProcessSignalToExitCodevalidation behavior (René) #62134 - [`a4466ebdac`] - doc: add efekrskl as triager (Efe) #61876
- [`db516eca3a`] - doc: fix markdown for
expectFailurevalues (Jacob Smith) #62100 - [`ad97045125`] - doc: include url.resolve() in DEP0169 application deprecation (Mike McCready) #62002
- [`309f37ba42`] - doc: expand SECURITY.md with non-vulnerability examples (Rafael Gonzaga) #61972
- [`dbb3551b7b`] - doc: separate in-types and out-types in SQLite conversion docs (René) #62034
- [`191c433db8`] - doc: fix small logic error in DETECT_MODULE_SYNTAX (René) #62025
- [`8511b1c784`] - doc: fix module.stripTypeScriptTypes indentation (René) #61992
- [`dd1139f52c`] - doc: update DEP0040 (punycode) to application type deprecation (Mike McCready) #61916
- [`54009e9c62`] - doc: explicitly mention Slack handle (Rafael Gonzaga) #61986
- [`78fa1a1a49`] - doc: support toolchain Visual Studio 2022 & 2026 + Windows 11 SDK (Mike McCready) #61864
- [`d8204d3cdb`] - doc: rename invalid
functionparameter (René) #61942 - [`a5a14482fb`] - doc: clarify status of feature request issues (Antoine du Hamel) #61505
- [`bd0688feb6`] - doc: add esm and cjs examples to node:vm (Alfredo González) #61498
- [`240b512f9f`] - doc: clarify build environment is trusted in threat model (Matteo Collina) #61865
- [`5dd48e3456`] - doc: remove incorrect mention of
moduleintypescript.md(Rob Palmer) #61839 - [`9502c22055`] - doc: simplify addAbortListener example (Chemi Atlow) #61842
- [`6fec397828`] - doc: clean up globals.md (René) #61822
- [`a810f5ccef`] - doc: clarify async caveats for
events.once()(René) #61572 - [`2bf990bb1a`] - doc: update Juan's security steward info (Juan José) #61754
- [`0312db948d`] - doc: fix methods being documented as properties in
process.md(Antoine du Hamel) #61765 - [`e558b26e7f`] - doc: add riscv64 info into platform list (Lu Yahan) #42251
- [`49254e3dc0`] - doc: fix dropdown menu being obscured at <600px due to stacking context (Jeff) #61735
- [`4ff01b5c10`] - doc: fix spacing in process message event (Aviv Keller) #61756
- [`94097a79d6`] - doc: move describe/it aliases section before expectFailure (Luca Raveri) #61567
- [`b7cd31acbe`] - doc: fix broken links of net.md (YuSheng Chen) #61673
- [`ae5e353fe2`] - doc: clean up Windows code snippet in
child_process.md(reillylm) #61422 - [`ea9beb6a3c`] - doc: update to Visual Studio 2026 manual install (Mike McCready) #61655
- [`42057c84e2`] - doc,module: add missing doc for syncHooks.deregister() (Joyee Cheung) #61959
- [`a035bd5235`] - doc,test: clarify --eval syntax for leading '-' scripts (kovan) #62244
- [`deb0b78460`] - esm: fix typo in worker loader hook comment (jakecastelli) #62475
- [`b93bf7dbfc`] - esm: fix source phase identity bug in loadCache eviction (Guy Bedford) #62415
- [`679d18b57f`] - esm: fix path normalization in
finalizeResolution(Antoine du Hamel) #62080 - [`171e9fc268`] - esm: update outdated FIXME comment in translators.js (Karan Mangtani) #61715
- [`cc19728228`] - events: avoid cloning listeners array on every emit (Gürgün Dayıoğlu) #62261
- [`458c92be52`] - events: don't call resume after close (Сковорода Никита Андреевич) #60548
- [`4691f3e7fb`] - fs: fix cpSync to handle non-ASCII characters (Stefan Stojanovic) #61950
- [`f4a3edc47a`] - (SEMVER-MINOR)fs: add
throwIfNoEntryoption for fs.stat and fs.promises.stat (Juan José) #61178 - [`58e4d50cd0`] - http: fix use-after-free when freeParser is called during llhttp_execute (Gerhard Stöbich) #62095
- [`0a4ad85ab0`] - http: validate ClientRequest path on set (Matteo Collina) #62030
- [`f8178ac3e6`] - http: validate headers in writeEarlyHints (Richard Clarke) #61897
- [`899884d0ed`] - http: remove redundant keepAliveTimeoutBuffer assignment (Efe) #61743
- [`08d2e40694`] - http: attach error handler to socket synchronously in onSocket (RajeshKumar11) #61770
- [`1c2064c1f8`] - http: fix keep-alive socket reuse race in requestOnFinish (Martin Slota) #61710
- [`38e9c66e0f`] - http2: add strictSingleValueFields option to relax header validation (Tim Perry) #59917
- [`5cdcba17cc`] - (SEMVER-MINOR)http2: add http1Options for HTTP/1 fallback configuration (Amol Yadav) #61713
- [`687c0acd00`] - http2: fix FileHandle leak in respondWithFile (sangwook) #61707
- [`0c8f802ec2`] - inspector: add Target.getTargets and extract TargetManager (Kohei) #62487
- [`7de8a303c1`] - inspector: unwrap internal/debugger/inspect imports (René) #61974
- [`59ac10a4fd`] - lib: make SubtleCrypto.supports enumerable (Filip Skokan) #62307
- [`9dc102ba90`] - lib: prefer primordials in SubtleCrypto (Filip Skokan) #62226
- [`78a9aa8f32`] - lib: fix source map url parse in dynamic imports (Chengzhong Wu) #61990
- [`16b8cc6643`] - lib: improve argument handling in Blob constructor (Ms2ger) #61980
- [`a03b5d39b8`] - lib: reduce cycles in esm loader and load it in snapshot (Joyee Cheung) #61769
- [`1017bf5f86`] - lib: remove top-level getOptionValue() calls in lib/internal/modules (Joyee Cheung) #61769
- [`d79984b41b`] - lib: optimize styleText when validateStream is false (Rafael Gonzaga) #61792
- [`6462b89d10`] - meta: bump actions/download-artifact from 7.0.0 to 8.0.0 (dependabot[bot]) #62063
- [`5bb89916ea`] - meta: bump actions/upload-artifact from 6.0.0 to 7.0.0 (dependabot[bot]) #62062
- [`b067d74d94`] - meta: bump step-security/harden-runner from 2.14.2 to 2.15.0 (dependabot[bot]) #62064
- [`830e5cd125`] - meta: bump github/codeql-action from 4.32.0 to 4.32.4 (dependabot[bot]) #61911
- [`16c839a3dd`] - meta: bump step-security/harden-runner from 2.14.1 to 2.14.2 (dependabot[bot]) #61909
- [`498abf661e`] - meta: bump actions/stale from 10.1.1 to 10.2.0 (dependabot[bot]) #61908
- [`78ac17f426`] - module: fix coverage of mocked CJS modules imported from ESM (Marco) #62133
- [`46cfad4138`] - module: run require.resolve through module.registerHooks() (Joyee Cheung) #62028
- [`8b6be3fe14`] - module: mark require(esm) as stable (Joyee Cheung) #60959
- [`68fbc0c6cc`] - module: mark module compile cache as stable (Joyee Cheung) #60971
- [`c851e76f8c`] - (SEMVER-MINOR)net: add
setTOSandgetTOStoSocket(Amol Yadav) #61503 - [`4c206ecb31`] - quic: remove CryptoKey support from session keys option (Filip Skokan) #62335
- [`2f9c085cf5`] - sqlite: handle stmt invalidation (Guilherme Araújo) #61877
- [`6ac4304c87`] - (SEMVER-MINOR)sqlite: add limits property to DatabaseSync (Mert Can Altin) #61298
- [`aaf9af1672`] - sqlite: mark as release candidate (Matteo Collina) #61262
- [`7d67e5d693`] - src: convert context_frame field in AsyncWrap to internal field (Anna Henningsen) #62103
- [`d8ea1aaa8a`] - src: make AsyncWrap subclass internal field counts explicit (Anna Henningsen) #62103
- [`1dbf3bedbe`] - src: improve EC JWK import performance (Filip Skokan) #62396
- [`cd84af747b`] - src: handle null backing store in ArrayBufferViewContents::Read (Mert Can Altin) #62343
- [`4f553cdc01`] - src: enable compilation/linking with OpenSSL 4.0 (Filip Skokan) #62410
- [`70f8057258`] - src: use stack allocation in indexOf latin1 path (Mert Can Altin) #62268
- [`d788467b6a`] - src: expose async context frame debugging helper to JS (Anna Henningsen) #62103
- [`4213f893ec`] - src: release context frame in AsyncWrap::EmitDestroy (Gerhard Stöbich) #61995
- [`79fb8cbcf5`] - src: use validate_ascii_with_errors instead of validate_ascii (Сковорода Никита Андреевич) #61122
- [`2df328d59e`] - src: fix flags argument offset in JSUdpWrap (Weixie Cui) #61948
- [`eb77a7a297`] - (SEMVER-MINOR)src: add C++ support for diagnostics channels (RafaelGSS) #61869
- [`6cda3d30c0`] - src: remove unnecessary
c_str()conversions in diagnostic messages (Anna Henningsen) #61786 - [`26c6045363`] - src: use bool literals in TraceEnvVarOptions (Tobias Nießen) #61425
- [`3c8f700fd7`] - src: track allocations made by zstd streams (Anna Henningsen) #61717
- [`94dbb36d4d`] - src: do not store compression methods on Brotli classes (Anna Henningsen) #61717
- [`bef661f182`] - src: extract zlib allocation tracking into its own class (Anna Henningsen) #61717
- [`e8079a8297`] - src: release memory for zstd contexts in
Close()(Anna Henningsen) #61717 - [`6e1197a3cc`] - src: add more checks and clarify docs for external references (Joyee Cheung) #61719
- [`c28a22c4be`] - src: fix cjs_lexer external reference registration (Joyee Cheung) #61718
- [`9e2c5fd7c9`] - src: simply uint32 to string as it must not fail (Chengzhong Wu) #60846
- [`df435d32b8`] - src: build v8 tick processor as built-in source text modules (Joyee Cheung) #60518
- [`2cb3573735`] - src,sqlite: fix filterFunc dangling reference (Edy Silva) #62281
- [`c44f53b544`] - stream: preserve error over AbortError in pipeline (Marco) #62113
- [`dc541370b4`] - stream: replace bind with arrow function for onwrite callback (Ali Hassan) #62087
- [`f6cdfbfaa7`] - stream: optimize webstreams pipeTo (Mattias Buelens) #62079
- [`fcf2a9f788`] - stream: fix brotli error handling in web compression streams (Filip Skokan) #62107
- [`cdec579c6b`] - stream: improve Web Compression spec compliance (Filip Skokan) #62107
- [`dbe5898379`] - stream: fix UTF-8 character corruption in fast-utf8-stream (Matteo Collina) #61745
- [`531e62cd74`] - stream: fix TransformStream race on cancel with pending write (Marco) #62040
- [`a3751f2249`] - stream: accept ArrayBuffer in CompressionStream and DecompressionStream (조수민) #61913
- [`65aa8f68d0`] - stream: fix pipeTo to defer writes per WHATWG spec (Matteo Collina) #61800
- [`15f32b4935`] - stream: fix decoded fromList chunk boundary check (Thomas Watson) #61884
- [`569767e52e`] - stream: add fast paths for webstreams read and pipeTo (Matteo Collina) #61807
- [`6834ca13bb`] - (SEMVER-MINOR)stream: rename
Duplex.toWeb()type option toreadableType(René) #61632 - [`5ed5474437`] - test: update WPT for WebCryptoAPI to 2cb332d710 (Node.js GitHub Bot) #62483
- [`3c9c0f8577`] - test: fix test-buffer-zero-fill-cli to be effective (Сковорода Никита Андреевич) #60623
- [`19a52a1abe`] - test: update WPT for url to fc3e651593 (Node.js GitHub Bot) #62379
- [`111ba9bd5b`] - test: wait for reattach before initial break on restart (Yuya Inoue) #62471
- [`0897c6cc08`] - test: disable flaky WPT Blob test on AIX (James M Snell) #62470
- [`1c3d93bfab`] - test: avoid flaky run wait in debugger restart test (Yuya Inoue) #62112
- [`83416a640a`] - test: skip test-cluster-dgram-reuse on AIX 7.3 (Stewart X Addison) #62238
- [`af8d0922dd`] - test: add WebCrypto Promise.prototype.then pollution regression tests (Filip Skokan) #62226
- [`fc9a60ec74`] - test: update WPT for WebCryptoAPI to 6a1c545d77 (Node.js GitHub Bot) #62187
- [`12ba2d74fe`] - test: update WPT for url to c928b19ab0 (Node.js GitHub Bot) #62148
- [`4e15e5b647`] - test: update WPT for WebCryptoAPI to c9e955840a (Node.js GitHub Bot) #62147
- [`dc66a05558`] - test: improve WPT report runner (Filip Skokan) #62107
- [`9536e5621b`] - test: update WPT compression to ae05f5cb53 (Filip Skokan) #62107
- [`fb1c0bda0a`] - test: update WPT for WebCryptoAPI to 42e47329fd (Node.js GitHub Bot) #62048
- [`d886f27485`] - test: fix skipping behavior for
test-runner-run-files-undefined(Antoine du Hamel) #62026 - [`f79df03e0b`] - test: remove unnecessary
process.exitcalls from test files (Antoine du Hamel) #62020 - [`1319295467`] - test: skip
test-urlon--shared-adabuilds (Antoine du Hamel) #62019 - [`2ea06727c6`] - test: skip strace test with shared openssl (Richard Lau) #61987
- [`c0680d5df7`] - test: avoid flaky debugger restart waits (Yuya Inoue) #61773
- [`22b748ef72`] - test: fix typos in test files (Daijiro Wachi) #61408
- [`a20bf9a84d`] - test: allow filtering async internal frames in assertSnapshot (Joyee Cheung) #61769
- [`ec2913f036`] - test: unify assertSnapshot stacktrace transform (Chengzhong Wu) #61665
- [`460f41233d`] - test: check stability block position in API markdown (René) #58590
- [`9ad02065d5`] - test: adapt buffer test for v8 sandbox (Shelley Vohr) #61772
- [`5cf001736e`] - test: update FileAPI tests from WPT (Ms2ger) #61750
- [`84c7a23223`] - test: update WPT for WebCryptoAPI to 7cbe7e8ed9 (Node.js GitHub Bot) #61729
- [`276a32fd10`] - test: update WPT for url to efb889eb4c (Node.js GitHub Bot) #61728
- [`f5f21d36a6`] - test_runner: add exports option for module mocks (sangwook) #61727
- [`bfc8a12977`] - test_runner: make it compatible with fake timers (Matteo Collina) #59272
- [`e0cde40e1d`] - test_runner: set non-zero exit code when suite errors occur (Edy Silva) #62282
- [`d74efd6834`] - test_runner: run afterEach on runtime skip (Igor Shevelenkov) #61525
- [`8287ca749e`] - test_runner: expose expectFailure message (sangwook) #61563
- [`1f2025fd1e`] - (SEMVER-MINOR)test_runner: expose worker ID for concurrent test execution (Ali Hassan) #61394
- [`b1199c7bb4`] - test_runner: replace native methods with primordials (Ayoub Mabrouk) #61219
- [`1ca20fc33d`] - (SEMVER-MINOR)test_runner: show interrupted test on SIGINT (Matteo Collina) #61676
- [`207ba4f89f`] - test_runner: fix suite rerun (Moshe Atlow) #61775
- [`9927335c11`] - tls: forward keepAlive, keepAliveInitialDelay, noDelay to socket (Sergey Zelenov) #62004
- [`a1c3c901c0`] - tools: bump picomatch from 4.0.3 to 4.0.4 in /tools/eslint (dependabot[bot]) #62439
- [`1c6f5ed7c2`] - tools: adopt the
--check-for-duplicatesNCU flag (Antoine du Hamel) #62478 - [`b53377e8fe`] - tools: bump flatted from 3.4.1 to 3.4.2 in /tools/eslint (dependabot[bot]) #62375
- [`f102e79b80`] - tools: bump eslint deps (Huáng Jùnliàng) #62356
- [`f5d74f8216`] - tools: add eslint-plugin-regexp (Huáng Jùnliàng) #62093
- [`bc5b9a04ad`] - tools: bump flatted from 3.3.3 to 3.4.1 in /tools/eslint (dependabot[bot]) #62255
- [`bad48b9700`] - tools: validate all commits that are pushed to
main(Antoine du Hamel) #62246 - [`795d663ff4`] - tools: keep GN files when updating Merve (Antoine du Hamel) #62167
- [`0b6fa913f1`] - tools: revert timezone update GHA workflow to ubuntu-latest (Richard Lau) #62140
- [`840e098e99`] - tools: improve error handling in test426 update script (Rich Trott) #62121
- [`bd34e53a8e`] - tools: bump the eslint group across 1 directory with 2 updates (dependabot[bot]) #62092
- [`54dc797644`] - tools: fix daily wpt workflow nighly release version lookup (Filip Skokan) #62076
- [`30476ddff7`] - tools: fix example in release proposal linter (Richard Lau) #62074
- [`5245900c05`] - tools: bump minimatch from 3.1.3 to 3.1.5 in /tools/clang-format (dependabot[bot]) #62013
- [`59ad1e4503`] - tools: bump eslint to v10, babel to v8.0.0-rc.2 (Huáng Jùnliàng) #61905
- [`6f93c4b287`] - tools: fix parsing of commit trailers in
lint-release-proposalGHA (Antoine du Hamel) #62077 - [`de1bcfd54c`] - tools: bump minimatch from 3.1.2 to 3.1.3 in
/tools/clang-format(dependabot[bot]) #61977 - [`492868a7aa`] - tools: fix permissions for merve update script (Richard Lau) #62023
- [`774d0be1b3`] - tools: revert tools GHA workflow to ubuntu-latest (Richard Lau) #62024
- [`d91a689d6f`] - tools: bump minimatch from 3.1.2 to 3.1.3 in /tools/eslint (dependabot[bot]) #61976
- [`34b6305933`] - tools: roll back to x86 runner on
scorecard.yml(Antoine du Hamel) #61944 - [`937cd97a63`] - tools: fix auto-start-ci (Antoine du Hamel) #61900
- [`0958f9a9c7`] - tools: do not checkout repo in
auto-start-ci.yml(Antoine du Hamel) #61874 - [`c7607b9208`] - tools: automate updates for test/fixtures/test426 (Rich Trott) #60978
- [`00df3c1273`] - tools: bump unist-util-visit in /tools/doc in the doc group (dependabot[bot]) #61646
- [`fe15b0d65e`] - tools: bump the eslint group in /tools/eslint with 6 updates (dependabot[bot]) #61628
- [`bc38db51fc`] - tools: fix small inconsistencies in JSON doc output (Antoine du Hamel) #61757
- [`3e7010d47f`] - tools: refloat 10 Node.js patches to cpplint.py (Michaël Zasso) #60901
- [`583e6c67ea`] - tools: update cpplint to 2.0.2 (Michaël Zasso) #60901
- [`4c12ab8abc`] - typings: rationalise TypedArray types (René) #62174
- [`8357ebfe54`] - url: suppress warnings from url.format/url.resolve inside node_modules (René) #62005
- [`aad7b3cfca`] - url: enable simdutf for ada (Yagiz Nizipli) #61477
- [`7b28fb9812`] - util: allow color aliases in styleText (sangwook) #62180
- [`8bbe0138ce`] - util: add fast path to stripVTControlCharacters (Hiroki Osame) #61833
- [`f7a408d6f7`] - wasm: support js string constant esm import (Guy Bedford) #62198
- [`a0316d33b5`] - watch: get flags from execArgv (Efe) #61779
- [`eee96f7f5d`] - worker: heap profile optimizations (Ilyas Shabi) #62201
- [`deeeb22e1a`] - worker: eliminate race condition in process.cwd() (giulioAZ) #61664
- [`b15ea64ed9`] - zlib: fix use-after-free when reset() is called during write (Matteo Collina) #62325
- [`a9c5bd29c9`] - zlib: add support for brotli compression dictionary (Andy Weiss) #61763
Windows 64-bit Installer: https://nodejs.org/dist/v24.15.0/node-v24.15.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.15.0/node-v24.15.0-arm64.msi
Windows 64-bit Binary: https://nodejs.org/dist/v24.15.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.15.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v24.15.0/node-v24.15.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-aix-ppc64.tar.gz
ARMv8 64-bit Binary: https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v24.15.0/node-v24.15.0.tar.gz
Other release files: https://nodejs.org/dist/v24.15.0/
Documentation: https://nodejs.org/docs/v24.15.0/api/
[SHASUMS](http://nodejs.org/en/blog/release/v24.15.0#shasums)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
dd4bc77dcb5f4c9a2c9643739bb593500ccb09413ec42caa0f8ef0e5ef116095 node-v24.15.0-aix-ppc64.tar.gz
68fad9ef14f93bacf0a6e767269d92bec6b57289f6badae6be2796f25914f8e7 node-v24.15.0-arm64.msi
372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4 node-v24.15.0-darwin-arm64.tar.gz
af5cfaeafe603aaf7599f287fd9d100bb41f16794f49788fa59dd3f25546930f node-v24.15.0-darwin-arm64.tar.xz
ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b node-v24.15.0-darwin-x64.tar.gz
5d627245b9f53cb2512cc21b7aa6aad693106affadd91e0c8f42d600fb7ba444 node-v24.15.0-darwin-x64.tar.xz
9a9250039fef572d0bcc110ac5e78055faf5604421211d2d5f578ebc5a34e703 node-v24.15.0-headers.tar.gz
896d142ce64c8a8847d8f469e99e3b081bc31936d308bfbe3f8c32f3209b55b8 node-v24.15.0-headers.tar.xz
73afc234d558c24919875f51c2d1ea002a2ada4ea6f83601a383869fefa64eed node-v24.15.0-linux-arm64.tar.gz
f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0 node-v24.15.0-linux-arm64.tar.xz
b1f88900a4b16365eaba56269304fc11da7581dbf03552d4495f9ace1fc05f6d node-v24.15.0-linux-ppc64le.tar.gz
6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb node-v24.15.0-linux-ppc64le.tar.xz
f985455439d52fe9b8de6a8f6d07bfeccc736dea527e87eacafe5a8d7516a380 node-v24.15.0-linux-s390x.tar.gz
940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24 node-v24.15.0-linux-s390x.tar.xz
44836872d9aec49f1e6b52a9a922872db9a2b02d235a616a5681b6a85fec8d89 node-v24.15.0-linux-x64.tar.gz
472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6 node-v24.15.0-linux-x64.tar.xz
36fdb8eb5255001133b057e54eb982d385b993c0185a8d22ad1532b763511a5d node-v24.15.0-win-arm64.7z
c9eb7402eda26e2ba7e44b6727fc85a8de56c5095b1f71ebd3062892211aa116 node-v24.15.0-win-arm64.zip
38edda3e8f02841bc336c8c1a85626e8e1f8f0da9ef981110863451ed5ae3a5f node-v24.15.0-win-x64.7z
cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62 node-v24.15.0-win-x64.zip
feffb8e5cb5ac47f793666636d496ef3e975be82c84c4da5d20e6aa8fa4eb806 node-v24.15.0-x64.msi
179cdd07168002ed8395ed63d43dc12e4ac1ab8d375f608eabfb9aff2706ff53 node-v24.15.0.pkg
729de494dd2872e5a3a6c32a1cd156a5413d4aca2772b2d873ee86bb5531bcd9 node-v24.15.0.tar.gz
a4f653d79ed140aaad921e8c22a3b585ca85cfdab80d4030f6309e4663a8a1c8 node-v24.15.0.tar.xz
49a54c103f4919ce64199a043ef5cd309507de491d718085edee089cd8e87543 win-arm64/node.exe
5eefacb0514b137a1dfcf7b2d4d83418aca7eea4895d086e6ca9254d29f83ba8 win-arm64/node.lib
d7b4dbdee2929ad92b05f72fba3c4b631f1a8058265e323b997d23a014cf0b7f win-arm64/node_pdb.7z
ba80d81fb52907e60280556cc45b9b5a6d52d19a0e08da1472fe562716194754 win-arm64/node_pdb.zip
3331e1ffe19874215472217c5e94f5a0c6d8e18c4ac7111d3937aa0ad5e9b4a5 win-x64/node.exe
2dad98cd40967a4fd4a97195979e0e237e09ec292483700a51d2c20fe5a97c87 win-x64/node.lib
c93cd9d634ebcb184779bf969bf361c0d6f81b0bf8667dce328522a91a5c146d win-x64/node_pdb.7z
87a283c70e77cc3fc81ca20d3a07bd6df91f778c640d8ca1e8bbe33ff5e405e3 win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCaeCMlQAKCRAgsaOQsWjT
VrtOAQC4lCL7LUownrhmHRjwAAIGJga6ADo+flP6/k6ZPP3zfgD7BztVRifnjHcf
9ZbiuHxcvnZVh7mp1t5E7qmriVLJqw8=
=B7+X
-----END PGP SIGNATURE-----