24.20.0
2026-08-26, Version 24.20.0 'Krypton' (LTS), @aduh95
Notable Changes
- [
b12bcc9ae1] - (SEMVER-MINOR) async_hooks: addusingscopes toAsyncLocalStorage(Stephen Belanger) #61674 - [
e2eb88b36b] - (SEMVER-MINOR) buffer: addendparameter (Robert Nagy) #62390 - [
1fefdda18e] - crypto: update root certificates to NSS 3.125 (Node.js GitHub Bot) #64746 - [
4a158cf1ab] - doc: add MikeMcC399 as collaborator (Mike McCready) #64656 - [
d4cafce076] - (SEMVER-MINOR) lib,permission: addpermission.drop(Rafael Gonzaga) #62672 - [
b3cfb55267] - (SEMVER-MINOR) loader: implement package maps (Maël Nison) #62239 - [
cd1eb3e60b] - (SEMVER-MINOR) src,permission: add--permission-audit(RafaelGSS) #61869 - [
28dc85d8d2] - (SEMVER-MINOR) stream: addnode:stream/iterimplementation (James M Snell) #62066 - [
d31c168740] - (SEMVER-MINOR) test_runner: addcontext.log()and test:log event (Moshe Atlow) #64389 - [
add1edbc42] - (SEMVER-MINOR) test_runner: reportentryFileinTestStreamevents (Moshe Atlow) #64309 - [
d937c8c6cd] - (SEMVER-MINOR) wasm: enable JSPI (Guy Bedford) #59941
Commits
- [
1822c0f335] - assert,util: fix TypeError on Maps with null keys (Paul Bouchon) #64441 - [
b12bcc9ae1] - (SEMVER-MINOR) async_hooks: add using scopes to AsyncLocalStorage (Stephen Belanger) #61674 - [
984260bf44] - async_hooks: use validateBoolean for trackPromises (Soul Lee) #64731 - [
ba2612cca2] - benchmark: fix calibrate-n option handling (Luan Muniz) #64146 - [
236dc4d2d7] - benchmark: add bytes variant to webstreams async-iterator (Matteo Collina) #64291 - [
b022a1419c] - benchmark: respect stream/iter broadcast backpressure (Trivikram Kamat) #63314 - [
a290f51f15] - (SEMVER-MINOR) benchmark: add benchmarks for experimental stream/iter (James M Snell) #62066 - [
465f2bfb74] - buffer: use Clamp conversion in Blob slice (Donghoon Kang) #64739 - [
74a22cd0c5] - buffer: validate copyArrayBuffer offsets against buffer length (Ilia Alshanetsky) #63904 - [
21e24208dc] - buffer: normalize lone "\r" in Blob native line endings (Daijiro Wachi) #64115 - [
ddacb3ff10] - buffer: fix Blob.stream() leaking source buffer (semimikoh) #63577 - [
49198d2313] - buffer: fix end parameter bugs in indexOf/lastIndexOf (Robert Nagy) #62711 - [
e2eb88b36b] - (SEMVER-MINOR) buffer: add end parameter (Robert Nagy) #62390 - [
e2e5c4fe88] - build: update binary-upload to use correct tarball name (Stewart X Addison) #65282 - [
b78a212553] - build: pin envinfo versions in github actions (Joyee Cheung) #64117 - [
094fb840aa] - build: add QUIC CI job for PRs matching QUIC related paths (Tim Perry) #63875 - [
91f5003cad] - build: fix flags for ngtcp2 on IBM i (SRAVANI GUNDEPALLI) #60073 - [
e83648effd] - build,test: add tests for binary linked with shared libnode (Joyee Cheung) #61463 - [
4a425b41d9] - build,tools: fix shared library cross-compile (Kirill Saied) #63963 - [
fe8fa45ff2] - cli: style node --help output with util.styleText (Adrián Estrada) #64484 - [
3cd1576cb2] - crypto: preserve OpenSSL errors from KDF failures (Filip Skokan) #64776 - [
74b3023565] - crypto: handle XOF output allocation failure (Filip Skokan) #64851 - [
fea0666a1b] - crypto: clarify missing cipher error (Filip Skokan) #64852 - [
33fec91b54] - crypto: reuse X509 issuer result (Filip Skokan) #64852 - [
44c1473348] - crypto: validate key generation options (Filip Skokan) #64852 - [
c2c53a18e5] - crypto: fix Argon2 validation errors (Filip Skokan) #64852 - [
edc1f2126d] - crypto: initialize KeyObjectData mutex eagerly (Filip Skokan) #64851 - [
be8237240c] - crypto: handle DH operation failures (Filip Skokan) #64851 - [
b65a8f3875] - crypto: preserve RSA-PSS legacy pubkey DER (Filip Skokan) #64547 - [
49f2ae204b] - crypto: cleanse provider private key copies (Filip Skokan) #64547 - [
a5d4ac8208] - crypto: handle incomplete RSA private keys (Filip Skokan) #64547 - [
b72c0b9616] - crypto: retain legacy DH validation (Filip Skokan) #64547 - [
24a1be5886] - crypto: limit KangarooTwelveParams customization to 512 bytes (Filip Skokan) #64557 - [
0290e0a61e] - crypto: split OpenSSL 3, BoringSSL, and legacy backends (Filip Skokan) #64211 - [
ba27e72ff8] - crypto: fix Argon2 bypassing FIPS mode (Filip Skokan) #64776 - [
1fefdda18e] - crypto: update root certificates to NSS 3.125 (Node.js GitHub Bot) #64746 - [
c0dd022081] - crypto: use user-facing error for output encoding changes (Archkon) #64692 - [
ff485a9410] - crypto: make --use-system-ca per-env rather than per-process (Aditi) #60678 - [
1329d9b9f1] - debugger: preserve overlapping CDP request state (Trivikram Kamat) #64467 - [
82a02336aa] - deps: V8: backport d259a9e2ead7 (Leszek Swirski) #63865 - [
f0fc82d404] - deps: update ngtcp2 to 1.25.0 (Node.js GitHub Bot) #64944 - [
c4e02f0fbc] - deps: upgrade npm to 11.19.0 (npm team) #64883 - [
d5a57ed4dd] - deps: update nghttp3 to 1.18.0 (Node.js GitHub Bot) #64943 - [
51d413150a] - deps: update minimatch to 10.2.6 (Node.js GitHub Bot) #64945 - [
21f79ce140] - deps: update simdjson to 4.6.6 (Node.js GitHub Bot) #64942 - [
7a4960d6a9] - deps: update acorn to 8.18.0 (Node.js GitHub Bot) #64941 - [
5c423aa113] - deps: update googletest to 1b6f64d659944658a4c685b7bd9f04c1c3b8a39b (Node.js GitHub Bot) #64940 - [
40561e61b0] - deps: update nghttp2 to 1.70.0 (Node.js GitHub Bot) #64939 - [
51090925b0] - deps: update zlib to 1.3.2.1-motley-42c2f19 (Node.js GitHub Bot) #64744 - [
7c534bf8e5] - deps: V8: backport 5177b10891e6 (avivkeller) #64631 - [
7b1898a341] - deps: update ada to 4.0.0 (Node.js GitHub Bot) #64790 - [
9209cc4095] - deps: update sqlite to 3.53.4 (Node.js GitHub Bot) #64745 - [
3833fceff6] - deps: update googletest to fa005b296f90faec4f352d7ab382287bf6548c8d (Node.js GitHub Bot) #64587 - [
bc7ce488d1] - deps: histogram: cherry-pick 62ea52b07ee9b195 (StefanStojanovic) #64296 - [
e3fa05841d] - deps: update histogram to 0.11.10 (Node.js GitHub Bot) #64296 - [
e75bdb9bbe] - deps: update amaro to 1.1.11 (Node.js GitHub Bot) #64586 - [
1e034e6e40] - deps: update timezone to 2026c (Node.js GitHub Bot) #64588 - [
2b8f1f27bd] - deps: update googletest to 8240fa7d62f73e01c7af27d61ed965d6d66698fa (Node.js GitHub Bot) #64439 - [
241ece0417] - deps: enable OpenSSL asm support for riscv64 (Jamie Magee) #62606 - [
215105eb90] - deps: update c-ares to 1.34.8 (Node.js GitHub Bot) #64330 - [
7ac97fc84e] - deps: upgrade npm to 11.18.0 (npm team) #64199 - [
8d4cb9ae46] - deps: update zlib to 1.3.2.1-motley-8b3aa8a (Node.js GitHub Bot) #64295 - [
564c0f4592] - deps: update ngtcp2 to 1.24.0 (Node.js GitHub Bot) #64297 - [
e3304cd31a] - deps: update nghttp3 to 1.17.0 (Node.js GitHub Bot) #64182 - [
345d6ad4eb] - deps: update ngtcp2 to 1.23.0 (Node.js GitHub Bot) #63777 - [
a53db015e6] - deps: update nghttp3 to 1.16.0 (Node.js GitHub Bot) #63776 - [
1f4a5c1c76] - deps: update ngtcp2 to 1.22.1 (Node.js GitHub Bot) #62812 - [
080c4d7cda] - deps: update ngtcp2 to 1.22.0 (Node.js GitHub Bot) #62595 - [
4309e7c82f] - deps: update ngtcp2 to 1.21.0 (Node.js GitHub Bot) #62051 - [
90cf11cfb5] - deps: update nghttp3 to 1.15.0 (Node.js GitHub Bot) #61512 - [
e1f315a554] - deps: update ngtcp2 to 1.20.0 (Node.js GitHub Bot) #61511 - [
9a3f690c9d] - deps: update ngtcp2 to 1.19.0 (Node.js GitHub Bot) #61156 - [
fe88f31764] - deps: add ngtcp2 test binaries (James M Snell) #59946 - [
6d60fce138] - diagnostics_channel: grow native channel storage (Stephen Belanger) #64497 - [
30ae8ab091] - doc: document --permission-audit audit mode behavior (Adrián Estrada) #64791 - [
8cefc6efa8] - doc: fix guaranteed typo (lilianakatrina684-a11y) #62374 - [
2e78e4b120] - doc: add throwIfNoEntry version history to fs.stat (kovan) #62204 - [
c7a04401cb] - doc: fix grammar and punctuation in dgram documentation (Kamal Rawal) #64957 - [
331e5e8f62] - doc: fix grammar and editorial issues in addons documentation (Kamal Rawal) #64952 - [
232287fcc6] - doc: formalize fn/name as part of TestOptions API (Christopher Hiller) #64946 - [
7f9efeb445] - doc: remove references toca/crlas per-context QuicSession options (René) #64769 - [
b54aa83cc6] - doc: fix typo in maintaining-dependencies.md (greenhead) #64896 - [
f4e427803c] - doc: add RafaelGSS as last security release stewards (Rafael Gonzaga) #64843 - [
f2cd6df3f3] - doc: fix typos in documentation (greenhead) #64900 - [
d5627162bd] - doc: improve TestContext hook descriptions (Kamal Rawal) #64899 - [
72ee03bd2e] - doc: document stream.isDestroyed() (YspritanHyzygy) #64789 - [
995141eb81] - doc: add contributing detail for git Signed-off-by trailer (Mike McCready) #64862 - [
dc30379310] - doc: fix duplicated word in test snapshot docs (Kamal Rawal) #64837 - [
205d4d0472] - doc: remove obsolete cctest node.gyp instructions (Soul Lee) #64814 - [
108b883d0b] - doc: report proper return type on url.format (Brian Muenzenmeyer) #64806 - [
b03bd3a8ed] - doc: clarify tlsSocket.authorized on resumption (soreavis) #64584 - [
093098ad7f] - doc: stabilize --disable-warning (Jean Michelet) #64742 - [
2de1d76d80] - doc: add MDN links for explicit resource management in fs (lluisemper) #59557 - [
2e0f36a891] - doc: mention constructor check in deepStrictEqual (Sumit Kumar Das) #62010 - [
1c9d354d09] - doc: update technical priorities (Jacob Smith) #64505 - [
30c99bf08f] - doc: deprecation add more codemod (Augustin Mauroy) #63175 - [
8a971a09eb] - doc: run license-builder (Node.js GitHub Bot) #63918 - [
707f6eacfc] - doc: clarify rules for adding new built-in modules (Antoine du Hamel) #64648 - [
928208cffc] - doc: mention DEPENDENCY custom field for H1 reports (Rafael Gonzaga) #64634 - [
ee593cadf5] - doc: fix dnsPromises.lookup verbatim default (Shivam S) #64658 - [
9c228b32d1] - doc: fix typo in releases guide (Jihwan) #64621 - [
4a158cf1ab] - doc: add MikeMcC399 as collaborator (Mike McCready) #64656 - [
8125809853] - doc: use promote wording in release guide (Md Muhtasim Munif Fahim) #64371 - [
2a2effadf6] - doc: fix import.meta example for vm.SourceTextModule (Muhammad Zeeshan) #64112 - [
c879f912bf] - doc: mention crypto.hash() for better perf (Steven) #63420 - [
634afda904] - doc: update sea example by fixing wrong code example (Maxence Robinet) #64025 - [
bced1433a3] - doc: fix socket.readyState state descriptions (YuSheng Chen) #64468 - [
4b2c18938f] - doc: replace large tables in crypto.md and webcrypto.md with lists (Filip Skokan) #64582 - [
5207231996] - doc: note --env-file is not applied to --run (Paul Bouchon) #64442 - [
329a2884fd] - doc: fix typo in embedding.md (greenhead) #64425 - [
fab3f56aa1] - doc: fix typos in contributing docs (Donghoon Kang) #64520 - [
cbc2bed4e8] - doc: document TLS alpnProtocol and servername fields (Tim Perry) #64362 - [
dada3ae60e] - doc: fix spelling in devcontainer guide (한만욱) #64459 - [
71343b28aa] - doc: clarify PEM format for signing keys (Harjoth Khara) #64404 - [
0544ec1c78] - doc: fix typo in tls.md (Daijiro Wachi) #64458 - [
8fe58078e7] - doc: document net Socket server property (Efe Karasakal) #64364 - [
d54fd03fa4] - doc: update a Dispatcher undici doc link (Filip Skokan) #64358 - [
1bdebecd41] - doc: fix typos in documentation (Jungwon Sohn) #64466 - [
86bca58641] - doc: clarify fixes and refs trailer guidance (Trivikram Kamat) #64421 - [
b5b84c9394] - doc: add scope overview tables for TestsStream events (Moshe Atlow) #64386 - [
004238d77c] - doc: clarify proxy threat model (Matteo Collina) #64366 - [
6851b8d55f] - doc: add note about restricted CI to pull-requests.md (Stewart X Addison) #64321 - [
662e33714a] - doc: various updates to releases.md (Stewart X Addison) #64198 - [
949bc3cfd3] - doc: remove obsolete --napi-modules doc entry (Chengzhong Wu) #64220 - [
830d16067f] - doc: clarify QUIC stream state wording (EduardF1) #63660 - [
79b6704630] - doc: fix typo in node-config-schema.json (Hamid Reza Ghavami) #64188 - [
9f5bf554db] - doc: fix broken link (Antoine du Hamel) #65078 - [
42b27ed428] - doc: remove unsupported syntax fromstream_iter.md(Antoine du Hamel) #64649 - [
f1a9df7f22] - doc: clarify fromReadable() duck-typed contract (Trivikram Kamat) #63682 - [
c7a3d450ac] - doc: improve quic documentation (James M Snell) #63157 - [
cc425bc659] - doc: fix promise nomenclature instream_iter.md(Antoine du Hamel) #63406 - [
859a02da96] - doc: minor structural stream/iter edits (René) #63089 - [
630b15eb20] - doc: fix doubled word typo in stream_iter.md (Daijiro Wachi) #62916 - [
50791fa8fa] - doc,test: widen fsPromises.appendFile()'s data type, add missing tests (Jimmy Leung) #64279 - [
9e39360a09] - esm: improve ERR_REQUIRE_ASYNC_MODULE (Joyee Cheung) #64260 - [
d2b02e443a] - esm: print required top-level await locations without evaluating (Joyee Cheung) #64154 - [
e8c153f3f4] - events: avoid retaining removed event names (Matteo Collina) #64475 - [
73e1701bad] - events: optimize once() and removeListener() (Matteo Collina) #64373 - [
12f7fc0558] - fs: key glob matcher cache by platform (Archkon) #64571 - [
e5af022302] - fs: add pattern cache for matchGlobPattern() (bq) #63915 - [
63321eeb11] - fs: fix cp symlink and EEXIST handling on Windows (Kirill Saied) #64353 - [
0ad55e5618] - http: fix writableFinished and 'finish' after write errors (Tim Perry) #64847 - [
ee54d9d4d2] - http: avoid aborting IncomingMessage signal on normal close (Archkon) #64392 - [
14cb8b0a06] - http: guard invalid timeout values in checkConnections (Efe Karasakal) #64506 - [
f24177ccc6] - http: propagate highWaterMark to ClientRequest OutgoingMessage (trivenay) #64653 - [
55e2c2da8c] - http: fix perf_hooks detail.req.url port and proxied path (Stefano Baghino) #64311 - [
b57350fe27] - http: remove unused n arg from IncomingMessage._read (Efe Karasakal) #64370 - [
af3a17e0b3] - http2: avoid copying the options in respond() (Matteo Collina) #64265 - [
f11ac0da37] - http2: avoid per-write closures in kWriteGeneric (Matteo Collina) #64265 - [
157bd07b6e] - http2: reduce per-request allocations (Matteo Collina) #64265 - [
b075b33429] - http2: don't throw when destroying socket proxy (Matteo Collina) #64427 - [
445bcce079] - inspector: add --cond to node inspect probe mode (Joyee Cheung) #64328 - [
06b54fe7d3] - lib: fix AbortSignal.any() observed-composite leak (Paul Bouchon) #64481 - [
These notes run past the length kept in the archive. The rest is on the publisher’s page.