nodejs/node
Node.js JavaScript runtime ✨🐢🚀✨
📋 Notable Changes
- \[[`b267f6bca3`](https://github.com/nodejs/node/commit/b267f6bca3)] - (SEMVER-MINOR) crypto: implement `randomUUIDv7()` (nabeel378) [#62553](https://github.com/nodejs/node/pull/62553)
- \[[`ec2451b9cd`](https://github.com/nodejs/node/commit/ec2451b9cd)] - (SEMVER-MINOR) debugger: add edit-free runtime expression probes to `node inspect` (Joyee Cheung) [#62713](https://github.com/nodejs/node/pull/62713)
- \[[`9705f628d9`](https://github.com/nodejs/node/commit/9705f628d9)] - (SEMVER-MINOR) fs: add signal option to `fs.stat()` (Mert Can Altin) [#57775](https://github.com/nodejs/node/pull/57775)
- \[[`40ccfdecf9`](https://github.com/nodejs/node/commit/40ccfdecf9)] - (SEMVER-MINOR) fs: expose `frsize` field in `statfs` (Jinho Jang) [#62277](https://github.com/nodejs/node/pull/62277)
- \[[`d7188af5c9`](https://github.com/nodejs/node/commit/d7188af5c9)] - (SEMVER-MINOR) http: harden `ClientRequest` options merge (Matteo Collina) [#63082](https://github.com/nodejs/node/pull/63082)
- \[[`aa1d8a9afc`](https://github.com/nodejs/node/commit/aa1d8a9afc)] - (SEMVER-MINOR) http: add `req.signal` to `IncomingMessage` (Akshat) [#62541](https://github.com/nodejs/node/pull/62541)
- \[[`6f37f7e240`](https://github.com/nodejs/node/commit/6f37f7e240)] - (SEMVER-MINOR) stream: propagate destruction in `duplexPair` (Ahmed Elhor) [#61098](https://github.com/nodejs/node/pull/61098)
- \[[`d14029be7f`](https://github.com/nodejs/node/commit/d14029be7f)] - (SEMVER-MINOR) test\_runner: support test order randomization (Pietro Marchini) [#61747](https://github.com/nodejs/node/pull/61747)
- + 3 more
📦 Commits
- \[[`dd72df060d`](https://github.com/nodejs/node/commit/dd72df060d)] - assert,util: fix stale nested cycle memo entries (Ruben Bridgewater) [#62509](https://github.com/nodejs/node/pull/62509)
- \[[`add94f4bc3`](https://github.com/nodejs/node/commit/add94f4bc3)] - build: track PDL files as inputs in inspector GN build (Robo) [#62888](https://github.com/nodejs/node/pull/62888)
- \[[`1b1eb9e334`](https://github.com/nodejs/node/commit/1b1eb9e334)] - build: remove redundant -fuse-linker-plugin from GCC LTO flags (Daniel Lando) [#62667](https://github.com/nodejs/node/pull/62667)
- \[[`8752b604ec`](https://github.com/nodejs/node/commit/8752b604ec)] - crypto: deduplicate and canonicalize CryptoKey usages (Filip Skokan) [#62902](https://github.com/nodejs/node/pull/62902)
- \[[`341947e7fd`](https://github.com/nodejs/node/commit/341947e7fd)] - crypto: reject unintended raw key format string input (Filip Skokan) [#62974](https://github.com/nodejs/node/pull/62974)
- \[[`28a78747fc`](https://github.com/nodejs/node/commit/28a78747fc)] - crypto: remove Argon2 KDF derivation from its job setup (Filip Skokan) [#62863](https://github.com/nodejs/node/pull/62863)
- \[[`16e8c2b54d`](https://github.com/nodejs/node/commit/16e8c2b54d)] - crypto: fix unsigned conversion of 4-byte RSA publicExponent (DeepView Autofix) [#62839](https://github.com/nodejs/node/pull/62839)
- \[[`eeae754a87`](https://github.com/nodejs/node/commit/eeae754a87)] - crypto: reject inherited key type names (Jonathan Lopes) [#62875](https://github.com/nodejs/node/pull/62875)
- + 221 more
📋 Notable Changes
- \[[`189d43a193`](https://github.com/nodejs/node/commit/189d43a193)] - doc: mark `stream.compose` stable (Matteo Collina) [#62562](https://github.com/nodejs/node/pull/62562)
- \[[`f858c6140e`](https://github.com/nodejs/node/commit/f858c6140e)] - (SEMVER-MINOR) fs: add `Temporal.Instant` support to `Stats` and `BigIntStats` (Livia Medeiros) [#60789](https://github.com/nodejs/node/pull/60789)
- \[[`0cbb3895df`](https://github.com/nodejs/node/commit/0cbb3895df)] - (SEMVER-MINOR) http: add `writeInformation` to send arbitrary 1xx status codes (Tim Perry) [#63155](https://github.com/nodejs/node/pull/63155)
📦 Commits
- \[[`9a394bab84`](https://github.com/nodejs/node/commit/9a394bab84)] - benchmark: respect stream/iter broadcast backpressure (Trivikram Kamat) [#63314](https://github.com/nodejs/node/pull/63314)
- \[[`ad98b4620b`](https://github.com/nodejs/node/commit/ad98b4620b)] - crypto: align verifyOneShot accepted types (Anshika Jain) [#63280](https://github.com/nodejs/node/pull/63280)
- \[[`ba0736a847`](https://github.com/nodejs/node/commit/ba0736a847)] - crypto: wire ML-DSA and ML-KEM for use when using BoringSSL (Filip Skokan) [#63255](https://github.com/nodejs/node/pull/63255)
- \[[`5573a6a4a8`](https://github.com/nodejs/node/commit/5573a6a4a8)] - crypto: wire ChaCha20-Poly1305 in Web Cryptography when using BoringSSL (Filip Skokan) [#63255](https://github.com/nodejs/node/pull/63255)
- \[[`7dc563b8d6`](https://github.com/nodejs/node/commit/7dc563b8d6)] - crypto: wire AES-KW in Web Cryptography when using BoringSSL (Filip Skokan) [#63255](https://github.com/nodejs/node/pull/63255)
- \[[`b55e2b1f4d`](https://github.com/nodejs/node/commit/b55e2b1f4d)] - crypto: improve system certificate enumeration logic on macOS (Robo) [#62576](https://github.com/nodejs/node/pull/62576)
- \[[`fd509a755a`](https://github.com/nodejs/node/commit/fd509a755a)] - crypto: harden CryptoKey algorithm slots (Filip Skokan) [#63111](https://github.com/nodejs/node/pull/63111)
- \[[`8657df39e7`](https://github.com/nodejs/node/commit/8657df39e7)] - crypto: harden KeyObject internal slots (Filip Skokan) [#63111](https://github.com/nodejs/node/pull/63111)
- + 106 more
📦 Commits
- \[[`4f780905c5`](https://github.com/nodejs/node/commit/4f780905c5)] - crypto: fix potential null pointer dereference when BIO\_meth\_new() fails (Nora Dossche) [#61788](https://github.com/nodejs/node/pull/61788)
- \[[`4a09efb947`](https://github.com/nodejs/node/commit/4a09efb947)] - crypto: update root certificates to NSS 3.121 (Node.js GitHub Bot) [#62485](https://github.com/nodejs/node/pull/62485)
- \[[`e4c0d99839`](https://github.com/nodejs/node/commit/e4c0d99839)] - deps: update timezone to 2026a (Node.js GitHub Bot) [#62164](https://github.com/nodejs/node/pull/62164)
- \[[`0226c8dd7a`](https://github.com/nodejs/node/commit/0226c8dd7a)] - deps: update simdjson to 4.5.0 (Node.js GitHub Bot) [#62382](https://github.com/nodejs/node/pull/62382)
- \[[`e742ab748c`](https://github.com/nodejs/node/commit/e742ab748c)] - deps: update sqlite to 3.51.3 (Node.js GitHub Bot) [#62256](https://github.com/nodejs/node/pull/62256)
- \[[`73cac0571a`](https://github.com/nodejs/node/commit/73cac0571a)] - deps: update amaro to 1.1.8 (Node.js GitHub Bot) [#62151](https://github.com/nodejs/node/pull/62151)
- \[[`ae5c162b93`](https://github.com/nodejs/node/commit/ae5c162b93)] - deps: update amaro to 1.1.7 (Node.js GitHub Bot) [#61730](https://github.com/nodejs/node/pull/61730)
- \[[`b819cb9977`](https://github.com/nodejs/node/commit/b819cb9977)] - deps: update amaro to 1.1.6 (Node.js GitHub Bot) [#61603](https://github.com/nodejs/node/pull/61603)
- + 75 more
📋 Notable Changes
- Node.js now includes an experimental `node:ffi` module for loading dynamic
- libraries and calling native symbols from JavaScript.
- The API is gated behind the `--experimental-ffi` flag and, when the Permission
- Model is enabled, requires `--allow-ffi`.
- This API is inherently unsafe. Invalid pointers, incorrect signatures, or accessing memory
- after it has been freed can crash the process or corrupt memory.
- Contributed by Paolo Insogna in [#62072](https://github.com/nodejs/node/pull/62072).
- \[[`34a6454fe3`](https://github.com/nodejs/node/commit/34a6454fe3)] - (SEMVER-MINOR) buffer: add `end` parameter (Robert Nagy) [#62390](https://github.com/nodejs/node/pull/62390)
- + 14 more
📦 Commits
- \[[`1b959d02c2`](https://github.com/nodejs/node/commit/1b959d02c2)] - assert,util: fix stale nested cycle memo entries (Ruben Bridgewater) [#62509](https://github.com/nodejs/node/pull/62509)
- \[[`bbeb38d210`](https://github.com/nodejs/node/commit/bbeb38d210)] - buffer: fix end parameter bugs in indexOf/lastIndexOf (Robert Nagy) [#62711](https://github.com/nodejs/node/pull/62711)
- \[[`34a6454fe3`](https://github.com/nodejs/node/commit/34a6454fe3)] - (SEMVER-MINOR) buffer: add end parameter (Robert Nagy) [#62390](https://github.com/nodejs/node/pull/62390)
- \[[`8b91526cd5`](https://github.com/nodejs/node/commit/8b91526cd5)] - build: track PDL files as inputs in inspector GN build (Robo) [#62888](https://github.com/nodejs/node/pull/62888)
- \[[`da40ed7842`](https://github.com/nodejs/node/commit/da40ed7842)] - build: remove armv6 from experimental platforms (René) [#63063](https://github.com/nodejs/node/pull/63063)
- \[[`b36e55a23e`](https://github.com/nodejs/node/commit/b36e55a23e)] - build: make test-addons dependency-free (Joyee Cheung) [#62388](https://github.com/nodejs/node/pull/62388)
- \[[`c27f3cf8f2`](https://github.com/nodejs/node/commit/c27f3cf8f2)] - build: add --enable-all-experimentals build flag (Paolo Insogna) [#62755](https://github.com/nodejs/node/pull/62755)
- \[[`0d73b63a76`](https://github.com/nodejs/node/commit/0d73b63a76)] - build: fix cargo check when Temporal is disabled (Antoine du Hamel) [#62730](https://github.com/nodejs/node/pull/62730)
- + 275 more
📋 Notable Changes
- The Temporal API is now enabled by default in Node.js 26. Temporal is a modern date/time API for JavaScript
- that provides a more robust and feature-rich alternative to the legacy `Date` object.
- Contributed by Richard Lau in [#61806](https://github.com/nodejs/node/pull/61806).
- The V8 engine is updated to version 14.6.202.33, which is part of Chromium 134.
- This version also includes:
- Upsert (<https://github.com/tc39/proposal-upsert>): `[Weak]Map.prototype.getOrInsert()`, `[Weak]Map.prototype.getOrInsertComputed()`
- Iterator sequencing (<https://github.com/tc39/proposal-iterator-sequencing>): `Iterator.concat()`
- Contributed by Michaël Zasso in [#61898](https://github.com/nodejs/node/pull/61898).
- + 10 more
📦 Semver-Major Commits
- \[[`d3f79aa65d`](https://github.com/nodejs/node/commit/d3f79aa65d)] - (SEMVER-MAJOR) assert: allow printf-style messages as assertion error (Ruben Bridgewater) [#58849](https://github.com/nodejs/node/pull/58849)
- \[[`f6ce381fec`](https://github.com/nodejs/node/commit/f6ce381fec)] - (SEMVER-MAJOR) build: bump GCC requirement to 13.2 (Michaël Zasso) [#62555](https://github.com/nodejs/node/pull/62555)
- \[[`bff81fca46`](https://github.com/nodejs/node/commit/bff81fca46)] - (SEMVER-MAJOR) build: enable Temporal by default (Richard Lau) [#61806](https://github.com/nodejs/node/pull/61806)
- \[[`6ddb1643e1`](https://github.com/nodejs/node/commit/6ddb1643e1)] - (SEMVER-MAJOR) build: enable V8\_VERIFY\_WRITE\_BARRIERS in debug build (Joyee Cheung) [#61898](https://github.com/nodejs/node/pull/61898)
- \[[`a8ab08b373`](https://github.com/nodejs/node/commit/a8ab08b373)] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) [#61898](https://github.com/nodejs/node/pull/61898)
- \[[`0998c37eb6`](https://github.com/nodejs/node/commit/0998c37eb6)] - (SEMVER-MAJOR) build: target Power 9 for AIX/IBM i (Richard Lau) [#62296](https://github.com/nodejs/node/pull/62296)
- \[[`d73c49e849`](https://github.com/nodejs/node/commit/d73c49e849)] - (SEMVER-MAJOR) build: drop support for Python 3.9 (Mike McCready) [#61177](https://github.com/nodejs/node/pull/61177)
- \[[`3c92ee1008`](https://github.com/nodejs/node/commit/3c92ee1008)] - (SEMVER-MAJOR) build: enable maglev for Linux on s390x (Richard Lau) [#60863](https://github.com/nodejs/node/pull/60863)
- + 79 more
📦 Semver-Minor Commits
- \[[`d4fa60cf9f`](https://github.com/nodejs/node/commit/d4fa60cf9f)] - (SEMVER-MINOR) crypto: add raw key formats support to the KeyObject APIs (Filip Skokan) [#62240](https://github.com/nodejs/node/pull/62240)
📦 Semver-Patch Commits
- \[[`4d8834fbef`](https://github.com/nodejs/node/commit/4d8834fbef)] - build: add rust target for macOS cross compiles (Richard Lau) [#63015](https://github.com/nodejs/node/pull/63015)
- \[[`a4edab8dfb`](https://github.com/nodejs/node/commit/a4edab8dfb)] - build: use `CARGO` environment variable if set (Richard Lau) [#62421](https://github.com/nodejs/node/pull/62421)
- \[[`ecf8721076`](https://github.com/nodejs/node/commit/ecf8721076)] - build: add weak symbol detection to export script (Abdirahim Musse) [#62656](https://github.com/nodejs/node/pull/62656)
- \[[`5b9f811662`](https://github.com/nodejs/node/commit/5b9f811662)] - build: filter hidden visibility symbols on AIX (Abdirahim Musse) [#62656](https://github.com/nodejs/node/pull/62656)
- \[[`2e724793e6`](https://github.com/nodejs/node/commit/2e724793e6)] - build: aix add conditonal flags for clang builds (Abdirahim Musse) [#62656](https://github.com/nodejs/node/pull/62656)
- \[[`f212aee483`](https://github.com/nodejs/node/commit/f212aee483)] - build: enable temporal on GHA macOS build (Chengzhong Wu) [#61691](https://github.com/nodejs/node/pull/61691)
- \[[`159ae48f8c`](https://github.com/nodejs/node/commit/159ae48f8c)] - build: add `cargo` and `rustc` checks for Temporal (Richard Lau) [#61467](https://github.com/nodejs/node/pull/61467)
- \[[`a004535617`](https://github.com/nodejs/node/commit/a004535617)] - build: add temporal to linux GHA build (Chengzhong Wu) [#60942](https://github.com/nodejs/node/pull/60942)
- + 71 more
📋 Notable Changes
- \[[`3d87ecacbc`](https://github.com/nodejs/node/commit/3d87ecacbc)] - (SEMVER-MINOR) cli: add --max-heap-size option (tannal) [#58708](https://github.com/nodejs/node/pull/58708)
- \[[`83c38672f7`](https://github.com/nodejs/node/commit/83c38672f7)] - cli: add --require-module/--no-require-module (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
- \[[`54ef940e01`](https://github.com/nodejs/node/commit/54ef940e01)] - (SEMVER-MINOR) crypto: add raw key formats support to the KeyObject APIs (Filip Skokan) [#62240](https://github.com/nodejs/node/pull/62240)
- \[[`f4a3edc47a`](https://github.com/nodejs/node/commit/f4a3edc47a)] - (SEMVER-MINOR) fs: add `throwIfNoEntry` option for fs.stat and fs.promises.stat (Juan José) [#61178](https://github.com/nodejs/node/pull/61178)
- \[[`5cdcba17cc`](https://github.com/nodejs/node/commit/5cdcba17cc)] - (SEMVER-MINOR) http2: add http1Options for HTTP/1 fallback configuration (Amol Yadav) [#61713](https://github.com/nodejs/node/pull/61713)
- \[[`8b6be3fe14`](https://github.com/nodejs/node/commit/8b6be3fe14)] - module: mark require(esm) as stable (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
- \[[`68fbc0c6cc`](https://github.com/nodejs/node/commit/68fbc0c6cc)] - module: mark module compile cache as stable (Joyee Cheung) [#60971](https://github.com/nodejs/node/pull/60971)
- \[[`c851e76f8c`](https://github.com/nodejs/node/commit/c851e76f8c)] - (SEMVER-MINOR) net: add `setTOS` and `getTOS` to `Socket` (Amol Yadav) [#61503](https://github.com/nodejs/node/pull/61503)
- + 7 more
📦 Commits
- \[[`148373cea1`](https://github.com/nodejs/node/commit/148373cea1)] - assert,util: improve comparison performance (Ruben Bridgewater) [#61176](https://github.com/nodejs/node/pull/61176)
- \[[`e5558b0859`](https://github.com/nodejs/node/commit/e5558b0859)] - assert,util: fix deep comparing invalid dates skipping properties (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`83cffd92b5`](https://github.com/nodejs/node/commit/83cffd92b5)] - async\_hooks: enabledHooksExist shall return if hooks are enabled (Gerhard Stöbich) [#61054](https://github.com/nodejs/node/pull/61054)
- \[[`2c9436b43d`](https://github.com/nodejs/node/commit/2c9436b43d)] - benchmark: fix destructuring in dgram/single-buffer (Ali Hassan) [#62084](https://github.com/nodejs/node/pull/62084)
- \[[`837acd7382`](https://github.com/nodejs/node/commit/837acd7382)] - benchmark: add startup benchmark for ESM entrypoint (Joyee Cheung) [#61769](https://github.com/nodejs/node/pull/61769)
- \[[`a6ced7d272`](https://github.com/nodejs/node/commit/a6ced7d272)] - buffer: improve performance of multiple Buffer operations (Ali Hassan) [#61871](https://github.com/nodejs/node/pull/61871)
- \[[`a82003bf8b`](https://github.com/nodejs/node/commit/a82003bf8b)] - buffer: optimize buffer.concat performance (Mert Can Altin) [#61721](https://github.com/nodejs/node/pull/61721)
- \[[`83dfd0be1d`](https://github.com/nodejs/node/commit/83dfd0be1d)] - buffer: disallow ArrayBuffer transfer on pooled buffer (Chengzhong Wu) [#61372](https://github.com/nodejs/node/pull/61372)
- + 258 more
📋 Notable Changes
- `MockModuleOptions.defaultExport` and `MockModuleOptions.namedExports` have been
- consolidated into a single option `MockModuleOptions.exports` to align with user
- expectations and other test runners.
- A `default` property on `MockModuleOptions.exports` represents the default
- export, and own enumerable properties are treated as named exports.
- An automated migration is available to update user code:
- <https://github.com/nodejs/userland-migrations/tree/main/recipes/mock-module-exports>
- ```bash
- + 10 more
📦 Commits
- \[[`312476cb84`](https://github.com/nodejs/node/commit/312476cb84)] - (SEMVER-MINOR) async\_hooks: add using scopes to AsyncLocalStorage (Stephen Belanger) [#61674](https://github.com/nodejs/node/pull/61674)
- \[[`bfff8cb2ab`](https://github.com/nodejs/node/commit/bfff8cb2ab)] - (SEMVER-MINOR) benchmark: add benchmarks for experimental stream/iter (James M Snell) [#62066](https://github.com/nodejs/node/pull/62066)
- \[[`c721d68502`](https://github.com/nodejs/node/commit/c721d68502)] - benchmark: fix destructuring in dgram/single-buffer (Ali Hassan) [#62084](https://github.com/nodejs/node/pull/62084)
- \[[`e2f03c8e92`](https://github.com/nodejs/node/commit/e2f03c8e92)] - buffer: improve performance of multiple Buffer operations (Ali Hassan) [#61871](https://github.com/nodejs/node/pull/61871)
- \[[`2fcd07f1ba`](https://github.com/nodejs/node/commit/2fcd07f1ba)] - build: support empty libname flags in `configure.py` (Antoine du Hamel) [#62477](https://github.com/nodejs/node/pull/62477)
- \[[`b800c57fce`](https://github.com/nodejs/node/commit/b800c57fce)] - build: fix timezone-update path references (Chengzhong Wu) [#62280](https://github.com/nodejs/node/pull/62280)
- \[[`7dc5a1e9b4`](https://github.com/nodejs/node/commit/7dc5a1e9b4)] - build: skip dockit on IBMi (SRAVANI GUNDEPALLI) [#62189](https://github.com/nodejs/node/pull/62189)
- \[[`f0eea0f905`](https://github.com/nodejs/node/commit/f0eea0f905)] - build: fix --node-builtin-modules-path (Filip Skokan) [#62115](https://github.com/nodejs/node/pull/62115)
- + 97 more
📋 Notable Changes
- (CVE-2026-21637) wrap `SNICallback` invocation in `try`/`catch` (Matteo Collina) - High
- (CVE-2026-21710) use null prototype for `headersDistinct`/`trailersDistinct` (Matteo Collina) - High
- (CVE-2026-21711) include permission check to `pipe_wrap.cc` (RafaelGSS) - Medium
- (CVE-2026-21712) handle url crash on different url formats (RafaelGSS) - Medium
- (CVE-2026-21713) use timing-safe comparison in Web Cryptography HMAC and KMAC (Filip Skokan) - Medium
- (CVE-2026-21714) handle `NGHTTP2_ERR_FLOW_CONTROL` error code (RafaelGSS) - Medium
- (CVE-2026-21717) test array index hash collision (Joyee Cheung) - Medium
- (CVE-2026-21715) add permission check to `realpath.native` (RafaelGSS) - Low
- + 1 more
📦 Commits
- \[[`2086b7477b`](https://github.com/nodejs/node/commit/2086b7477b)] - (CVE-2026-21717) build,test: test array index hash collision (Joyee Cheung) [nodejs-private/node-private#834](https://github.com/nodejs-private/node-private/pull/834)
- \[[`0f9332a40a`](https://github.com/nodejs/node/commit/0f9332a40a)] - (CVE-2026-21713) crypto: use timing-safe comparison in Web Cryptography HMAC and KMAC (Filip Skokan) [nodejs-private/node-private#822](https://github.com/nodejs-private/node-private/pull/822)
- \[[`2b6937ddb2`](https://github.com/nodejs/node/commit/2b6937ddb2)] - deps: update undici to 7.24.4 (Node.js GitHub Bot) [#62271](https://github.com/nodejs/node/pull/62271)
- \[[`bfb8ad5787`](https://github.com/nodejs/node/commit/bfb8ad5787)] - deps: update undici to 7.24.3 (Node.js GitHub Bot) [#62233](https://github.com/nodejs/node/pull/62233)
- \[[`be6384727f`](https://github.com/nodejs/node/commit/be6384727f)] - deps: upgrade npm to 11.11.1 (npm team) [#62216](https://github.com/nodejs/node/pull/62216)
- \[[`2feea5bb97`](https://github.com/nodejs/node/commit/2feea5bb97)] - deps: V8: override `depot_tools` version (Richard Lau) [#62344](https://github.com/nodejs/node/pull/62344)
- \[[`86c04784dd`](https://github.com/nodejs/node/commit/86c04784dd)] - (CVE-2026-21710) http: use null prototype for headersDistinct/trailersDistinct (Matteo Collina) [nodejs-private/node-private#821](https://github.com/nodejs-private/node-private/pull/821)
- \[[`5197a56a34`](https://github.com/nodejs/node/commit/5197a56a34)] - (CVE-2026-21711) permission: include permission check to pipe\_wrap.cc (RafaelGSS) [nodejs-private/node-private#820](https://github.com/nodejs-private/node-private/pull/820)
- + 5 more
📋 Notable Changes
- (CVE-2026-21710) use null prototype for headersDistinct/trailersDistinct (Matteo Collina) - High
- (CVE-2026-21637) wrap SNICallback invocation in try/catch (Matteo Collina) - High
- (CVE-2026-21717) test array index hash collision (Joyee Cheung) - Medium
- (CVE-2026-21713) use timing-safe comparison in Web Cryptography HMAC and KMAC (Filip Skokan) - Medium
- (CVE-2026-21714) handle NGHTTP2\_ERR\_FLOW\_CONTROL error code (RafaelGSS) - Medium
- (CVE-2026-21712) handle url crash on different url formats (RafaelGSS) - Medium
- (CVE-2026-21716) include permission check on lib/fs/promises (RafaelGSS) - Low
- (CVE-2026-21715) add permission check to realpath.native (RafaelGSS) - Low
📦 Commits
- \[[`6fae244080`](https://github.com/nodejs/node/commit/6fae244080)] - (CVE-2026-21717) build,test: test array index hash collision (Joyee Cheung) [nodejs-private/node-private#828](https://github.com/nodejs-private/node-private/pull/828)
- \[[`cc0910c62e`](https://github.com/nodejs/node/commit/cc0910c62e)] - (CVE-2026-21713) crypto: use timing-safe comparison in Web Cryptography HMAC and KMAC (Filip Skokan) [nodejs-private/node-private#822](https://github.com/nodejs-private/node-private/pull/822)
- \[[`80cb042cf3`](https://github.com/nodejs/node/commit/80cb042cf3)] - deps: update undici to 7.24.4 (Node.js GitHub Bot) [#62271](https://github.com/nodejs/node/pull/62271)
- \[[`f5b8667dc2`](https://github.com/nodejs/node/commit/f5b8667dc2)] - deps: update undici to 7.24.3 (Node.js GitHub Bot) [#62233](https://github.com/nodejs/node/pull/62233)
- \[[`08852637d9`](https://github.com/nodejs/node/commit/08852637d9)] - deps: update undici to 7.22.0 (Node.js GitHub Bot) [#62035](https://github.com/nodejs/node/pull/62035)
- \[[`61097db9fb`](https://github.com/nodejs/node/commit/61097db9fb)] - deps: upgrade npm to 11.11.0 (npm team) [#61994](https://github.com/nodejs/node/pull/61994)
- \[[`9ac0f9f81e`](https://github.com/nodejs/node/commit/9ac0f9f81e)] - deps: upgrade npm to 11.10.1 (npm team) [#61892](https://github.com/nodejs/node/pull/61892)
- \[[`3dab3c4698`](https://github.com/nodejs/node/commit/3dab3c4698)] - deps: V8: override `depot_tools` version (Richard Lau) [#62344](https://github.com/nodejs/node/pull/62344)
- + 9 more
📋 Notable Changes
- (CVE-2026-21637) wrap `SNICallback` invocation in `try`/`catch` (Matteo Collina) - High
- (CVE-2026-21710) use null prototype for `headersDistinct`/`trailersDistinct` (Matteo Collina) - High
- (CVE-2026-21713) use timing-safe comparison in Web Cryptography HMAC (Filip Skokan) - Medium
- (CVE-2026-21714) handle `NGHTTP2_ERR_FLOW_CONTROL` error code (RafaelGSS) - Medium
- (CVE-2026-21717) test array index hash collision (Joyee Cheung) - Medium
- (CVE-2026-21715) add permission check to `realpath.native` (RafaelGSS) - Low
- (CVE-2026-21716) include permission check on `lib/fs/promises` (RafaelGSS) - Low
📦 Commits
- \[[`6f14ee5101`](https://github.com/nodejs/node/commit/6f14ee5101)] - (CVE-2026-21717) build,test: test array index hash collision (Joyee Cheung) [nodejs-private/node-private#809](https://github.com/nodejs-private/node-private/pull/809)
- \[[`52a52ef619`](https://github.com/nodejs/node/commit/52a52ef619)] - (CVE-2026-21713) crypto: use timing-safe comparison in Web Cryptography HMAC (Filip Skokan) [nodejs-private/node-private#822](https://github.com/nodejs-private/node-private/pull/822)
- \[[`30a3ab11e2`](https://github.com/nodejs/node/commit/30a3ab11e2)] - (CVE-2026-21717) deps: V8: cherry-pick aac14dd95e5b (Joyee Cheung) [nodejs-private/node-private#809](https://github.com/nodejs-private/node-private/pull/809)
- \[[`e3f4d6a42e`](https://github.com/nodejs/node/commit/e3f4d6a42e)] - (CVE-2026-21717) deps: V8: backport 1361b2a49d02 (Joyee Cheung) [nodejs-private/node-private#809](https://github.com/nodejs-private/node-private/pull/809)
- \[[`7dc00fa5f4`](https://github.com/nodejs/node/commit/7dc00fa5f4)] - (CVE-2026-21717) deps: V8: backport 185f0fe09b72 (Joyee Cheung) [nodejs-private/node-private#809](https://github.com/nodejs-private/node-private/pull/809)
- \[[`076acd052d`](https://github.com/nodejs/node/commit/076acd052d)] - (CVE-2026-21717) deps: V8: backport 0a8b1cdcc8b2 (snek) [nodejs-private/node-private#809](https://github.com/nodejs-private/node-private/pull/809)
- \[[`963c60a951`](https://github.com/nodejs/node/commit/963c60a951)] - deps: V8: override `depot_tools` version (Richard Lau) [#62344](https://github.com/nodejs/node/pull/62344)
- \[[`a688117d5d`](https://github.com/nodejs/node/commit/a688117d5d)] - deps: upgrade npm to 10.9.7 (npm team) [#62330](https://github.com/nodejs/node/pull/62330)
- + 8 more
📋 Notable Changes
- (CVE-2026-21717) fix array index hash collision (Joyee Cheung)
- (CVE-2026-21713) use timing-safe comparison in Web Cryptography HMAC and KMAC (Filip Skokan)
- (CVE-2026-21710) use null prototype for headersDistinct/trailersDistinct (Matteo Collina)
- (CVE-2026-21716) include permission check on lib/fs/promises (RafaelGSS)pull/795>
- (CVE-2026-21715) add permission check to realpath.native (RafaelGSS)
- (CVE-2026-21714) handle NGHTTP2\_ERR\_FLOW\_CONTROL error code (RafaelGSS)
- (CVE-2026-21637) wrap SNICallback invocation in try/catch (Matteo Collina)
📦 Commits
- \[[`cfb51fa9ce`](https://github.com/nodejs/node/commit/cfb51fa9ce)] - (CVE-2026-21713) crypto: use timing-safe comparison in Web Cryptography HMAC (Filip Skokan) [nodejs-private/node-private#831](https://github.com/nodejs-private/node-private/pull/831)
- \[[`f333d0be5f`](https://github.com/nodejs/node/commit/f333d0be5f)] - deps: V8: override `depot_tools` version (Richard Lau) [#62344](https://github.com/nodejs/node/pull/62344)
- \[[`2acd5d1226`](https://github.com/nodejs/node/commit/2acd5d1226)] - deps: update undici to v6.24.1 (Matteo Collina) [#62285](https://github.com/nodejs/node/pull/62285)
- \[[`af5c144ebc`](https://github.com/nodejs/node/commit/af5c144ebc)] - (CVE-2026-21717) deps,build,test: fix array index hash collision (Joyee Cheung) [nodejs-private/node-private#834](https://github.com/nodejs-private/node-private/pull/834)
- \[[`00ad47a28e`](https://github.com/nodejs/node/commit/00ad47a28e)] - (CVE-2026-21710) http: use null prototype for headersDistinct/trailersDistinct (Matteo Collina) [nodejs-private/node-private#821](https://github.com/nodejs-private/node-private/pull/821)
- \[[`0123309566`](https://github.com/nodejs/node/commit/0123309566)] - (CVE-2026-21716) permission: include permission check on lib/fs/promises (RafaelGSS) [nodejs-private/node-private#840](https://github.com/nodejs-private/node-private/pull/840)
- \[[`00830712bc`](https://github.com/nodejs/node/commit/00830712bc)] - (CVE-2026-21715) permission: add permission check to realpath.native (RafaelGSS) [nodejs-private/node-private#838](https://github.com/nodejs-private/node-private/pull/838)
- \[[`a0c73425da`](https://github.com/nodejs/node/commit/a0c73425da)] - (CVE-2026-21714) src: handle NGHTTP2\_ERR\_FLOW\_CONTROL error code (RafaelGSS) [nodejs-private/node-private#832](https://github.com/nodejs-private/node-private/pull/832)
- + 1 more
📋 Notable Changes
- \[[`ea87eea71a`](https://github.com/nodejs/node/commit/ea87eea71a)] - module: fix extensionless CJS files in `"type": "module"` packages (Matteo Collina) [#62083](https://github.com/nodejs/node/pull/62083)
📦 Commits
- \[[`bab750d1b3`](https://github.com/nodejs/node/commit/bab750d1b3)] - build: do not depend on V8 deps on `--without-bundled-v8` builds (Antoine du Hamel) [#62033](https://github.com/nodejs/node/pull/62033)
- \[[`b26d1c7fcb`](https://github.com/nodejs/node/commit/b26d1c7fcb)] - crypto: make --use-system-ca per-env rather than per-process (Aditi) [#60678](https://github.com/nodejs/node/pull/60678)
- \[[`e362635abf`](https://github.com/nodejs/node/commit/e362635abf)] - crypto: add missing AES dictionaries (Filip Skokan) [#62099](https://github.com/nodejs/node/pull/62099)
- \[[`6f975db8af`](https://github.com/nodejs/node/commit/6f975db8af)] - crypto: fix importKey required argument count check (Filip Skokan) [#62099](https://github.com/nodejs/node/pull/62099)
- \[[`3beaf9c5fc`](https://github.com/nodejs/node/commit/3beaf9c5fc)] - deps: update amaro to 1.1.8 (Node.js GitHub Bot) [#62151](https://github.com/nodejs/node/pull/62151)
- \[[`53afb0edd8`](https://github.com/nodejs/node/commit/53afb0edd8)] - deps: update sqlite to 3.52.0 (Node.js GitHub Bot) [#62150](https://github.com/nodejs/node/pull/62150)
- \[[`a13ed052a1`](https://github.com/nodejs/node/commit/a13ed052a1)] - deps: update merve to 1.2.0 (Node.js GitHub Bot) [#62149](https://github.com/nodejs/node/pull/62149)
- \[[`2c850577b7`](https://github.com/nodejs/node/commit/2c850577b7)] - deps: patch resb crate (Richard Lau) [#62138](https://github.com/nodejs/node/pull/62138)
- + 41 more
📋 Notable Changes
- \[[`7b93a65f27`](https://github.com/nodejs/node/commit/7b93a65f27)] - build: test on Python 3.14 (Christian Clauss) [#59983](https://github.com/nodejs/node/pull/59983)
- \[[`6063d888fe`](https://github.com/nodejs/node/commit/6063d888fe)] - cli: mark `--heapsnapshot-near-heap-limit` as stable (Joyee Cheung) [#60956](https://github.com/nodejs/node/pull/60956)
- \[[`d950b151a2`](https://github.com/nodejs/node/commit/d950b151a2)] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#61419](https://github.com/nodejs/node/pull/61419)
- \[[`4f42f8c428`](https://github.com/nodejs/node/commit/4f42f8c428)] - crypto: update root certificates to NSS 3.117 (Node.js GitHub Bot) [#60741](https://github.com/nodejs/node/pull/60741)
- \[[`b6ebf2cd53`](https://github.com/nodejs/node/commit/b6ebf2cd53)] - doc: add avivkeller to collaborators (Aviv Keller) [#61115](https://github.com/nodejs/node/pull/61115)
- \[[`35854f424d`](https://github.com/nodejs/node/commit/35854f424d)] - doc: add gurgunday to collaborators (Gürgün Dayıoğlu) [#61094](https://github.com/nodejs/node/pull/61094)
- \[[`5c6a076e5d`](https://github.com/nodejs/node/commit/5c6a076e5d)] - meta: add Renegade334 to collaborators (Renegade334) [#60714](https://github.com/nodejs/node/pull/60714)
📦 Commits
- \[[`5f773488c2`](https://github.com/nodejs/node/commit/5f773488c2)] - assert: use a set instead of an array for faster lookup (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`feecbb0eab`](https://github.com/nodejs/node/commit/feecbb0eab)] - assert,util: fix deep comparison for sets and maps with mixed types (Ruben Bridgewater) [#61388](https://github.com/nodejs/node/pull/61388)
- \[[`096095b127`](https://github.com/nodejs/node/commit/096095b127)] - benchmark: add SQLite benchmarks (Guilherme Araújo) [#61401](https://github.com/nodejs/node/pull/61401)
- \[[`b5fe481415`](https://github.com/nodejs/node/commit/b5fe481415)] - benchmark: use boolean options in benchmark tests (SeokhunEom) [#60129](https://github.com/nodejs/node/pull/60129)
- \[[`fa9faacacb`](https://github.com/nodejs/node/commit/fa9faacacb)] - benchmark: allow boolean option values (SeokhunEom) [#60129](https://github.com/nodejs/node/pull/60129)
- \[[`ba8714ac21`](https://github.com/nodejs/node/commit/ba8714ac21)] - benchmark: fix incorrect base64 input in byteLength benchmark (semimikoh) [#60841](https://github.com/nodejs/node/pull/60841)
- \[[`53596de876`](https://github.com/nodejs/node/commit/53596de876)] - benchmark: use typescript for import cjs benchmark (Joyee Cheung) [#60663](https://github.com/nodejs/node/pull/60663)
- \[[`e8930e9d7c`](https://github.com/nodejs/node/commit/e8930e9d7c)] - benchmark: focus on import.meta intialization in import-meta benchmark (Joyee Cheung) [#60603](https://github.com/nodejs/node/pull/60603)
- + 339 more
📋 Notable Changes
- \[[`91a66e671c`](https://github.com/nodejs/node/commit/91a66e671c)] - build: test on Python 3.14 (Christian Clauss) [#59983](https://github.com/nodejs/node/pull/59983)
- \[[`f66056054b`](https://github.com/nodejs/node/commit/f66056054b)] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#61419](https://github.com/nodejs/node/pull/61419)
- \[[`80feacaddb`](https://github.com/nodejs/node/commit/80feacaddb)] - crypto: update root certificates to NSS 3.117 (Node.js GitHub Bot) [#60741](https://github.com/nodejs/node/pull/60741)
📦 Commits
- \[[`6f580d5399`](https://github.com/nodejs/node/commit/6f580d5399)] - assert: fix deepEqual always return true on URL (Xuguang Mei) [#50853](https://github.com/nodejs/node/pull/50853)
- \[[`91a66e671c`](https://github.com/nodejs/node/commit/91a66e671c)] - build: test on Python 3.14 (Christian Clauss) [#59983](https://github.com/nodejs/node/pull/59983)
- \[[`cc4f7af6f3`](https://github.com/nodejs/node/commit/cc4f7af6f3)] - build: skip sscache action on non-main branches (Joyee Cheung) [#61790](https://github.com/nodejs/node/pull/61790)
- \[[`f66056054b`](https://github.com/nodejs/node/commit/f66056054b)] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#61419](https://github.com/nodejs/node/pull/61419)
- \[[`80feacaddb`](https://github.com/nodejs/node/commit/80feacaddb)] - crypto: update root certificates to NSS 3.117 (Node.js GitHub Bot) [#60741](https://github.com/nodejs/node/pull/60741)
- \[[`fa88cc07e2`](https://github.com/nodejs/node/commit/fa88cc07e2)] - crypto: ensure documented RSA-PSS saltLength default is used (Filip Skokan) [#60662](https://github.com/nodejs/node/pull/60662)
- \[[`88b2eec88a`](https://github.com/nodejs/node/commit/88b2eec88a)] - deps: update minimatch to 10.2.2 (Node.js GitHub Bot) [#61830](https://github.com/nodejs/node/pull/61830)
- \[[`5c053264f1`](https://github.com/nodejs/node/commit/5c053264f1)] - deps: V8: backport 6a0a25abaed3 (Vivian Wang) [#61687](https://github.com/nodejs/node/pull/61687)
- + 64 more
📋 Notable Changes
- \[[`e55eddea2a`](https://github.com/nodejs/node/commit/e55eddea2a)] - build, doc: use new api doc tooling (flakey5) [#57343](https://github.com/nodejs/node/pull/57343)
- \[[`4c181e2277`](https://github.com/nodejs/node/commit/4c181e2277)] - (SEMVER-MINOR) sqlite: add limits property to DatabaseSync (Mert Can Altin) [#61298](https://github.com/nodejs/node/pull/61298)
- \[[`46ee1eddd7`](https://github.com/nodejs/node/commit/46ee1eddd7)] - (SEMVER-MINOR) src: add C++ support for diagnostics channels (RafaelGSS) [#61869](https://github.com/nodejs/node/pull/61869)
- \[[`9ddd1a9c27`](https://github.com/nodejs/node/commit/9ddd1a9c27)] - (SEMVER-MINOR) src,permission: add --permission-audit (RafaelGSS) [#61869](https://github.com/nodejs/node/pull/61869)
- \[[`0d97ec4044`](https://github.com/nodejs/node/commit/0d97ec4044)] - (SEMVER-MINOR) test\_runner: expose worker ID for concurrent test execution (Ali Hassan) [#61394](https://github.com/nodejs/node/pull/61394)
📦 Commits
- \[[`940b58c8c1`](https://github.com/nodejs/node/commit/940b58c8c1)] - buffer: optimize buffer.concat performance (Mert Can Altin) [#61721](https://github.com/nodejs/node/pull/61721)
- \[[`0589b0e5a1`](https://github.com/nodejs/node/commit/0589b0e5a1)] - build: fix GN for new merve dep (Shelley Vohr) [#61984](https://github.com/nodejs/node/pull/61984)
- \[[`f3d3968dcd`](https://github.com/nodejs/node/commit/f3d3968dcd)] - _Revert_ "build: add temporal test on GHA windows" (Antoine du Hamel) [#61810](https://github.com/nodejs/node/pull/61810)
- \[[`e55eddea2a`](https://github.com/nodejs/node/commit/e55eddea2a)] - build, doc: use new api doc tooling (flakey5) [#57343](https://github.com/nodejs/node/pull/57343)
- \[[`b7715292f8`](https://github.com/nodejs/node/commit/b7715292f8)] - child\_process: add tracing channel for spawn (Marco) [#61836](https://github.com/nodejs/node/pull/61836)
- \[[`a32a598748`](https://github.com/nodejs/node/commit/a32a598748)] - crypto: fix missing nullptr check on RSA\_new() (ndossche) [#61888](https://github.com/nodejs/node/pull/61888)
- \[[`dc384f95b3`](https://github.com/nodejs/node/commit/dc384f95b3)] - crypto: fix handling of null BUF\_MEM\* in ToV8Value() (Nora Dossche) [#61885](https://github.com/nodejs/node/pull/61885)
- \[[`3337b095db`](https://github.com/nodejs/node/commit/3337b095db)] - crypto: fix potential null pointer dereference when BIO\_meth\_new() fails (Nora Dossche) [#61788](https://github.com/nodejs/node/pull/61788)
- + 42 more
📋 Notable Changes
- \[[`b0a79b10f0`](https://github.com/nodejs/node/commit/b0a79b10f0)] - (SEMVER-MINOR) http2: add http1Options for HTTP/1 fallback configuration (Amol Yadav) [#61713](https://github.com/nodejs/node/pull/61713)
- \[[`2d874dfb8e`](https://github.com/nodejs/node/commit/2d874dfb8e)] - (SEMVER-MINOR) sea: support ESM entry point in SEA (Joyee Cheung) [#61813](https://github.com/nodejs/node/pull/61813)
- \[[`ee59127664`](https://github.com/nodejs/node/commit/ee59127664)] - sqlite: mark as release candidate (Matteo Collina) [#61262](https://github.com/nodejs/node/pull/61262)
- \[[`608736e19e`](https://github.com/nodejs/node/commit/608736e19e)] - (SEMVER-MINOR) stream: rename `Duplex.toWeb()` type option to `readableType` (René) [#61632](https://github.com/nodejs/node/pull/61632)
- \[[`a43375999f`](https://github.com/nodejs/node/commit/a43375999f)] - (SEMVER-MINOR) test\_runner: show interrupted test on SIGINT (Matteo Collina) [#61676](https://github.com/nodejs/node/pull/61676)
📦 Commits
- \[[`ab4375e141`](https://github.com/nodejs/node/commit/ab4375e141)] - benchmark: add startup benchmark for ESM entrypoint (Joyee Cheung) [#61769](https://github.com/nodejs/node/pull/61769)
- \[[`8d83d8026b`](https://github.com/nodejs/node/commit/8d83d8026b)] - build: add temporal test on GHA windows (Chengzhong Wu) [#61810](https://github.com/nodejs/node/pull/61810)
- \[[`aab153eec3`](https://github.com/nodejs/node/commit/aab153eec3)] - build: skip sscache action on non-main branches (Joyee Cheung) [#61790](https://github.com/nodejs/node/pull/61790)
- \[[`9e40fb93bc`](https://github.com/nodejs/node/commit/9e40fb93bc)] - build: use path-ignore in GHA coverage-windows.yml (Chengzhong Wu) [#61811](https://github.com/nodejs/node/pull/61811)
- \[[`4896653361`](https://github.com/nodejs/node/commit/4896653361)] - build: generate\_config\_gypi.py generates valid JSON (Shelley Vohr) [#61791](https://github.com/nodejs/node/pull/61791)
- \[[`bb82b44de0`](https://github.com/nodejs/node/commit/bb82b44de0)] - build: build with v8 gdbjit support on supported platform (Joyee Cheung) [#61010](https://github.com/nodejs/node/pull/61010)
- \[[`e7173a093a`](https://github.com/nodejs/node/commit/e7173a093a)] - build: show cc outputs when version detection failed (Chengzhong Wu) [#61700](https://github.com/nodejs/node/pull/61700)
- \[[`848050d38f`](https://github.com/nodejs/node/commit/848050d38f)] - build,win: add WinGet Visual Studio 2022 Build Tools Edition config (Mike McCready) [#61652](https://github.com/nodejs/node/pull/61652)
- + 82 more
📋 Notable Changes
- \[[`8b6d31d379`](https://github.com/nodejs/node/commit/8b6d31d379)] - (SEMVER-MINOR) async\_hooks: add `trackPromises` option to `createHook()` (Joyee Cheung) [#61415](https://github.com/nodejs/node/pull/61415)
- \[[`68da144b4e`](https://github.com/nodejs/node/commit/68da144b4e)] - build,deps: replace cjs-module-lexer with merve (Yagiz Nizipli) [#61456](https://github.com/nodejs/node/pull/61456)
- \[[`f3a24c76e4`](https://github.com/nodejs/node/commit/f3a24c76e4)] - (SEMVER-MINOR) deps: add LIEF as a dependency (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167)
- \[[`1948861d23`](https://github.com/nodejs/node/commit/1948861d23)] - (SEMVER-MINOR) events: repurpose `events.listenerCount()` to accept EventTargets (René) [#60214](https://github.com/nodejs/node/pull/60214)
- \[[`d6f7c8d06f`](https://github.com/nodejs/node/commit/d6f7c8d06f)] - (SEMVER-MINOR) fs: add `ignore` option to `fs.watch` (Matteo Collina) [#61433](https://github.com/nodejs/node/pull/61433)
- \[[`cb54b3ca6e`](https://github.com/nodejs/node/commit/cb54b3ca6e)] - (SEMVER-MINOR) http: add `http.setGlobalProxyFromEnv()` (Joyee Cheung) [#60953](https://github.com/nodejs/node/pull/60953)
- \[[`35b1759d06`](https://github.com/nodejs/node/commit/35b1759d06)] - (SEMVER-MINOR) module: allow subpath imports that start with `#/` (Jan Martin) [#60864](https://github.com/nodejs/node/pull/60864)
- \[[`2d72ea66f2`](https://github.com/nodejs/node/commit/2d72ea66f2)] - (SEMVER-MINOR) process: preserve `AsyncLocalStorage` in `queueMicrotask` only when needed (Gürgün Dayıoğlu) [#60913](https://github.com/nodejs/node/pull/60913)
- + 10 more
📦 Commits
- \[[`180778fb9a`](https://github.com/nodejs/node/commit/180778fb9a)] - assert: fix loose deepEqual arrays with undefined and null failing (Ruben Bridgewater) [#61587](https://github.com/nodejs/node/pull/61587)
- \[[`8b6d31d379`](https://github.com/nodejs/node/commit/8b6d31d379)] - (SEMVER-MINOR) async\_hooks: add trackPromises option to createHook() (Joyee Cheung) [#61415](https://github.com/nodejs/node/pull/61415)
- \[[`83bcd38d35`](https://github.com/nodejs/node/commit/83bcd38d35)] - benchmark: add streaming TextDecoder benchmark (Сковорода Никита Андреевич) [#61549](https://github.com/nodejs/node/pull/61549)
- \[[`4c105844c5`](https://github.com/nodejs/node/commit/4c105844c5)] - build: add support for Visual Studio 2026 (Michaël Zasso) [#60727](https://github.com/nodejs/node/pull/60727)
- \[[`1f84fd91d9`](https://github.com/nodejs/node/commit/1f84fd91d9)] - build: skip sscache action on non-main branches (Joyee Cheung) [#61790](https://github.com/nodejs/node/pull/61790)
- \[[`30601b680f`](https://github.com/nodejs/node/commit/30601b680f)] - build: add `--shared-nbytes` configure flag (Antoine du Hamel) [#61341](https://github.com/nodejs/node/pull/61341)
- \[[`c6253eda49`](https://github.com/nodejs/node/commit/c6253eda49)] - build: add `--shared-hdr-histogram` configure flag (Antoine du Hamel) [#61280](https://github.com/nodejs/node/pull/61280)
- \[[`584c189037`](https://github.com/nodejs/node/commit/584c189037)] - build: add `--shared-gtest` configure flag (Antoine du Hamel) [#61279](https://github.com/nodejs/node/pull/61279)
- + 109 more
📋 Notable Changes
- \[[`47df4328d7`](https://github.com/nodejs/node/commit/47df4328d7)] - build,deps: replace `cjs-module-lexer` with `merve` (Yagiz Nizipli) [#61456](https://github.com/nodejs/node/pull/61456)
📦 Commits
- \[[`47df4328d7`](https://github.com/nodejs/node/commit/47df4328d7)] - build,deps: replace cjs-module-lexer with merve (Yagiz Nizipli) [#61456](https://github.com/nodejs/node/pull/61456)
- \[[`a727054503`](https://github.com/nodejs/node/commit/a727054503)] - deps: upgrade npm to 11.9.0 (npm team) [#61685](https://github.com/nodejs/node/pull/61685)
- \[[`c78c49ed6b`](https://github.com/nodejs/node/commit/c78c49ed6b)] - deps: update amaro to 1.1.7 (Node.js GitHub Bot) [#61730](https://github.com/nodejs/node/pull/61730)
- \[[`4790816d9b`](https://github.com/nodejs/node/commit/4790816d9b)] - deps: update minimatch to 10.1.2 (Node.js GitHub Bot) [#61732](https://github.com/nodejs/node/pull/61732)
- \[[`8c71740e8a`](https://github.com/nodejs/node/commit/8c71740e8a)] - deps: update undici to 7.21.0 (Node.js GitHub Bot) [#61683](https://github.com/nodejs/node/pull/61683)
- \[[`e559ef6ab1`](https://github.com/nodejs/node/commit/e559ef6ab1)] - deps: update googletest to 56efe3983185e3f37e43415d1afa97e3860f187f (Node.js GitHub Bot) [#61605](https://github.com/nodejs/node/pull/61605)
- \[[`300de2bb5a`](https://github.com/nodejs/node/commit/300de2bb5a)] - deps: update amaro to 1.1.6 (Node.js GitHub Bot) [#61603](https://github.com/nodejs/node/pull/61603)
- \[[`e71e9505ef`](https://github.com/nodejs/node/commit/e71e9505ef)] - dns: fix Windows SRV ECONNREFUSED by adjusting c-ares fallback detection (notvivek12) [#61453](https://github.com/nodejs/node/pull/61453)
- + 43 more
📋 Notable Changes
- \[[`1f64d6841e`](https://github.com/nodejs/node/commit/1f64d6841e)] - build: add support for Python 3.14 (Christian Clauss) [#59983](https://github.com/nodejs/node/pull/59983)
- \[[`30e500fc09`](https://github.com/nodejs/node/commit/30e500fc09)] - cli: mark `--heapsnapshot-near-heap-limit` as stable (Joyee Cheung) [#60956](https://github.com/nodejs/node/pull/60956)
- \[[`bc0a55f086`](https://github.com/nodejs/node/commit/bc0a55f086)] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#61419](https://github.com/nodejs/node/pull/61419)
- \[[`8a67c00bf5`](https://github.com/nodejs/node/commit/8a67c00bf5)] - doc: mark `--build-snapshot` and `--build-snapshot-config` as stable (Joyee Cheung) [#60954](https://github.com/nodejs/node/pull/60954)
- \[[`3999c2a910`](https://github.com/nodejs/node/commit/3999c2a910)] - meta: add avivkeller to collaborators (Aviv Keller) [#61115](https://github.com/nodejs/node/pull/61115)
- \[[`fa542fbae6`](https://github.com/nodejs/node/commit/fa542fbae6)] - meta: add gurgunday to collaborators (Gürgün Dayıoğlu) [#61094](https://github.com/nodejs/node/pull/61094)
- \[[`ff11eda2f2`](https://github.com/nodejs/node/commit/ff11eda2f2)] - meta: add Renegade334 to collaborators (Renegade334) [#60714](https://github.com/nodejs/node/pull/60714)
- \[[`2e387fb969`](https://github.com/nodejs/node/commit/2e387fb969)] - url: update ada to v3.4.2 and support unicode 17 (Yagiz Nizipli) [#61593](https://github.com/nodejs/node/pull/61593)
- + 1 more
📦 Commits
- \[[`a73279c60d`](https://github.com/nodejs/node/commit/a73279c60d)] - assert: use a set instead of an array for faster lookup (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`6a61bcd73c`](https://github.com/nodejs/node/commit/6a61bcd73c)] - assert,util: fix deep comparison for sets and maps with mixed types (Ruben Bridgewater) [#61388](https://github.com/nodejs/node/pull/61388)
- \[[`cf0eabcd42`](https://github.com/nodejs/node/commit/cf0eabcd42)] - assert,util: improve deep comparison performance (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`ff3b9ac183`](https://github.com/nodejs/node/commit/ff3b9ac183)] - benchmark: add SQLite benchmarks (Guilherme Araújo) [#61401](https://github.com/nodejs/node/pull/61401)
- \[[`e1f7d68c94`](https://github.com/nodejs/node/commit/e1f7d68c94)] - benchmark: use boolean options in benchmark tests (SeokhunEom) [#60129](https://github.com/nodejs/node/pull/60129)
- \[[`91127c91cd`](https://github.com/nodejs/node/commit/91127c91cd)] - benchmark: allow boolean option values (SeokhunEom) [#60129](https://github.com/nodejs/node/pull/60129)
- \[[`170fda55f6`](https://github.com/nodejs/node/commit/170fda55f6)] - benchmark: add microbench on isInsideNodeModules (Chengzhong Wu) [#60991](https://github.com/nodejs/node/pull/60991)
- \[[`3976381b41`](https://github.com/nodejs/node/commit/3976381b41)] - benchmark: fix incorrect base64 input in byteLength benchmark (semimikoh) [#60841](https://github.com/nodejs/node/pull/60841)
- + 310 more
📋 Notable Changes
- \[[`796ff46ae6`](https://github.com/nodejs/node/commit/796ff46ae6)] - (SEMVER-MINOR) async\_hooks: add `trackPromises` option to `createHook()` (Joyee Cheung) [#61415](https://github.com/nodejs/node/pull/61415)
- \[[`4cf94fae17`](https://github.com/nodejs/node/commit/4cf94fae17)] - (SEMVER-MINOR) net: add `setTOS` and `getTOS` to `Socket` (Amol Yadav) [#61503](https://github.com/nodejs/node/pull/61503)
- \[[`dce657071e`](https://github.com/nodejs/node/commit/dce657071e)] - (SEMVER-MINOR) src: add initial support for ESM in embedder API (Joyee Cheung) [#61548](https://github.com/nodejs/node/pull/61548)
- \[[`e62608bbcf`](https://github.com/nodejs/node/commit/e62608bbcf)] - src: improve `TextEncoder` encode performance with `simdutf` (Mert Can Altin) [#61496](https://github.com/nodejs/node/pull/61496)
- \[[`93938a4738`](https://github.com/nodejs/node/commit/93938a4738)] - (SEMVER-MINOR) stream: add `bytes()` method to `node:stream/consumers` (wantaek) [#60426](https://github.com/nodejs/node/pull/60426)
- \[[`5fe2582329`](https://github.com/nodejs/node/commit/5fe2582329)] - (SEMVER-MINOR) test\_runner: add `env` option to `run` function (Ethan Arrowood) [#61367](https://github.com/nodejs/node/pull/61367)
- \[[`a181d0c43d`](https://github.com/nodejs/node/commit/a181d0c43d)] - url: update Ada to v3.4.2 and support Unicode 17 (Yagiz Nizipli) [#61593](https://github.com/nodejs/node/pull/61593)
📦 Commits
- \[[`9c8d1b0278`](https://github.com/nodejs/node/commit/9c8d1b0278)] - assert: fix loose deepEqual arrays with undefined and null failing (Ruben Bridgewater) [#61587](https://github.com/nodejs/node/pull/61587)
- \[[`796ff46ae6`](https://github.com/nodejs/node/commit/796ff46ae6)] - (SEMVER-MINOR) async\_hooks: add trackPromises option to createHook() (Joyee Cheung) [#61415](https://github.com/nodejs/node/pull/61415)
- \[[`d23ee89693`](https://github.com/nodejs/node/commit/d23ee89693)] - benchmark: add streaming TextDecoder benchmark (Сковорода Никита Андреевич) [#61549](https://github.com/nodejs/node/pull/61549)
- \[[`8759db9d21`](https://github.com/nodejs/node/commit/8759db9d21)] - buffer: disallow ArrayBuffer transfer on pooled buffer (Chengzhong Wu) [#61372](https://github.com/nodejs/node/pull/61372)
- \[[`b2fb82946b`](https://github.com/nodejs/node/commit/b2fb82946b)] - build: add `--shared-lief` configure flag (Antoine du Hamel) [#61536](https://github.com/nodejs/node/pull/61536)
- \[[`0ef99de9da`](https://github.com/nodejs/node/commit/0ef99de9da)] - build: aix: deoptimize implementation-visitor.cc with --shared (Stewart X Addison) [#61550](https://github.com/nodejs/node/pull/61550)
- \[[`8f2083e73a`](https://github.com/nodejs/node/commit/8f2083e73a)] - build: enable -DV8\_ENABLE\_CHECKS flag (Ryuhei Shima) [#61327](https://github.com/nodejs/node/pull/61327)
- \[[`150910da70`](https://github.com/nodejs/node/commit/150910da70)] - build,test: add tests for binary linked with shared libnode (Joyee Cheung) [#61463](https://github.com/nodejs/node/pull/61463)
- + 47 more
📋 Notable Changes
- \[[`99a4e51f93`](https://github.com/nodejs/node/commit/99a4e51f93)] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#61419](https://github.com/nodejs/node/pull/61419)
- \[[`fbe4da5725`](https://github.com/nodejs/node/commit/fbe4da5725)] - (SEMVER-MINOR) deps: add LIEF as a dependency (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167)
- \[[`0feab0f083`](https://github.com/nodejs/node/commit/0feab0f083)] - (SEMVER-MINOR) deps: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167)
- \[[`e91b296001`](https://github.com/nodejs/node/commit/e91b296001)] - (SEMVER-MINOR) fs: add ignore option to fs.watch (Matteo Collina) [#61433](https://github.com/nodejs/node/pull/61433)
- \[[`b351910af1`](https://github.com/nodejs/node/commit/b351910af1)] - (SEMVER-MINOR) sea: add `--build-sea` to generate SEA directly with Node.js binary (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167)
- \[[`957292e233`](https://github.com/nodejs/node/commit/957292e233)] - (SEMVER-MINOR) sea: split sea binary manipulation code (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167)
- \[[`f289817ff8`](https://github.com/nodejs/node/commit/f289817ff8)] - (SEMVER-MINOR) sqlite: enable defensive mode by default (Bart Louwers) [#61266](https://github.com/nodejs/node/pull/61266)
- \[[`069f3603e2`](https://github.com/nodejs/node/commit/069f3603e2)] - (SEMVER-MINOR) sqlite: add sqlite prepare options args (Guilherme Araújo) [#61311](https://github.com/nodejs/node/pull/61311)
- + 4 more
📦 Commits
- \[[`778a56f3c9`](https://github.com/nodejs/node/commit/778a56f3c9)] - assert,util: fix deep comparison for sets and maps with mixed types (Ruben Bridgewater) [#61388](https://github.com/nodejs/node/pull/61388)
- \[[`32cd18e37f`](https://github.com/nodejs/node/commit/32cd18e37f)] - async\_hooks: enabledHooksExist shall return if hooks are enabled (Gerhard Stöbich) [#61054](https://github.com/nodejs/node/pull/61054)
- \[[`482b2568bc`](https://github.com/nodejs/node/commit/482b2568bc)] - benchmark: add SQLite benchmarks (Guilherme Araújo) [#61401](https://github.com/nodejs/node/pull/61401)
- \[[`e9a34263bb`](https://github.com/nodejs/node/commit/e9a34263bb)] - buffer: make methods work on Uint8Array instances (Neal Beeken) [#56578](https://github.com/nodejs/node/pull/56578)
- \[[`8255cdefcf`](https://github.com/nodejs/node/commit/8255cdefcf)] - build: add `--shared-nbytes` configure flag (Antoine du Hamel) [#61341](https://github.com/nodejs/node/pull/61341)
- \[[`8dd379d110`](https://github.com/nodejs/node/commit/8dd379d110)] - build: update android-patches/trap-handler.h.patch (Mo Luo) [#60369](https://github.com/nodejs/node/pull/60369)
- \[[`1b4b5eb0e4`](https://github.com/nodejs/node/commit/1b4b5eb0e4)] - build: update devcontainer.json to use paired nix env (Joyee Cheung) [#61414](https://github.com/nodejs/node/pull/61414)
- \[[`86e2a763ad`](https://github.com/nodejs/node/commit/86e2a763ad)] - build: infer cargo mode with gyp var build\_type directly (Chengzhong Wu) [#61354](https://github.com/nodejs/node/pull/61354)
- + 108 more
📋 Notable Changes
- \[[`8f6fada8f1`](https://github.com/nodejs/node/commit/8f6fada8f1)] - cli: add --require-module/--no-require-module (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
- \[[`bf8e738df4`](https://github.com/nodejs/node/commit/bf8e738df4)] - cli: mark --heapsnapshot-near-heap-limit as stable (Joyee Cheung) [#60956](https://github.com/nodejs/node/pull/60956)
- \[[`7930d7a19b`](https://github.com/nodejs/node/commit/7930d7a19b)] - crypto: update root certificates to NSS 3.117 (Node.js GitHub Bot) [#60741](https://github.com/nodejs/node/pull/60741)
- \[[`44f61dfb92`](https://github.com/nodejs/node/commit/44f61dfb92)] - doc: add @avivkeller to collaborators (Aviv Keller) [#61115](https://github.com/nodejs/node/pull/61115)
- \[[`45903ee884`](https://github.com/nodejs/node/commit/45903ee884)] - doc: add gurgunday to collaborators (Gürgün Dayıoğlu) [#61094](https://github.com/nodejs/node/pull/61094)
- \[[`77faa14d99`](https://github.com/nodejs/node/commit/77faa14d99)] - doc: mark --build-snapshot and --build-snapshot-config as stable (Joyee Cheung) [#60954](https://github.com/nodejs/node/pull/60954)
- \[[`aefbe4ba47`](https://github.com/nodejs/node/commit/aefbe4ba47)] - (SEMVER-MINOR) events: repurpose `events.listenerCount()` to accept EventTargets (René) [#60214](https://github.com/nodejs/node/pull/60214)
- \[[`8470e2993b`](https://github.com/nodejs/node/commit/8470e2993b)] - (SEMVER-MINOR) http: add http.setGlobalProxyFromEnv() (Joyee Cheung) [#60953](https://github.com/nodejs/node/pull/60953)
- + 8 more
📦 Commits
- \[[`e61cfdbf50`](https://github.com/nodejs/node/commit/e61cfdbf50)] - assert: use a set instead of an array for faster lookup (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`11861084fd`](https://github.com/nodejs/node/commit/11861084fd)] - assert,util: improve comparison performance (Ruben Bridgewater) [#61176](https://github.com/nodejs/node/pull/61176)
- \[[`4ef4f759cb`](https://github.com/nodejs/node/commit/4ef4f759cb)] - assert,util: fix deep comparing invalid dates skipping properties (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`c8fccd585f`](https://github.com/nodejs/node/commit/c8fccd585f)] - assert,util: improve deep comparison performance (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
- \[[`13661a0123`](https://github.com/nodejs/node/commit/13661a0123)] - benchmark: use boolean options in benchmark tests (SeokhunEom) [#60129](https://github.com/nodejs/node/pull/60129)
- \[[`36dead3433`](https://github.com/nodejs/node/commit/36dead3433)] - benchmark: allow boolean option values (SeokhunEom) [#60129](https://github.com/nodejs/node/pull/60129)
- \[[`376056eaef`](https://github.com/nodejs/node/commit/376056eaef)] - benchmark: add microbench on isInsideNodeModules (Chengzhong Wu) [#60991](https://github.com/nodejs/node/pull/60991)
- \[[`22d3e85b7a`](https://github.com/nodejs/node/commit/22d3e85b7a)] - benchmark: fix incorrect base64 input in byteLength benchmark (semimikoh) [#60841](https://github.com/nodejs/node/pull/60841)
- + 277 more
📋 Notable Changes
- lib:
- (CVE-2025-59465) add TLSSocket default error handler (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/750>
- permission:
- (CVE-2026-21636) add network check on pipe\_wrap connect (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/784>
- (CVE-2025-55130) require full read and write to symlink APIs (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/760>
- (CVE-2025-55132) disable futimes when permission model is enabled (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/748>
- src:
- (CVE-2025-59466) rethrow stack overflow exceptions in async\_hooks (Matteo Collina) <https://github.com/nodejs-private/node-private/pull/773>
- + 4 more
📦 Commits
- \[[`a6a74b89a7`](https://github.com/nodejs/node/commit/a6a74b89a7)] - deps: update c-ares to v1.34.6 (Node.js GitHub Bot) [#60997](https://github.com/nodejs/node/pull/60997)
- \[[`5100614e26`](https://github.com/nodejs/node/commit/5100614e26)] - deps: update undici to 7.18.2 (Node.js GitHub Bot) [#61283](https://github.com/nodejs/node/pull/61283)
- \[[`f0a8916887`](https://github.com/nodejs/node/commit/f0a8916887)] - (CVE-2025-59465) lib: add TLSSocket default error handler (RafaelGSS) [nodejs-private/node-private#750](https://github.com/nodejs-private/node-private/pull/750)
- \[[`b4b887c5f7`](https://github.com/nodejs/node/commit/b4b887c5f7)] - (CVE-2025-55132) lib: disable futimes when permission model is enabled (RafaelGSS) [nodejs-private/node-private#748](https://github.com/nodejs-private/node-private/pull/748)
- \[[`26be208039`](https://github.com/nodejs/node/commit/26be208039)] - (CVE-2025-55130) lib,permission: require full read and write to symlink APIs (RafaelGSS) [nodejs-private/node-private#760](https://github.com/nodejs-private/node-private/pull/760)
- \[[`bdf5873d44`](https://github.com/nodejs/node/commit/bdf5873d44)] - (CVE-2026-21636) permission: add network check on pipe\_wrap connect (RafaelGSS) [nodejs-private/node-private#784](https://github.com/nodejs-private/node-private/pull/784)
- \[[`0578e3e921`](https://github.com/nodejs/node/commit/0578e3e921)] - (CVE-2025-59466) src: rethrow stack overflow exceptions in async\_hooks (Matteo Collina) [nodejs-private/node-private#773](https://github.com/nodejs-private/node-private/pull/773)
- \[[`4d6b55a6d1`](https://github.com/nodejs/node/commit/4d6b55a6d1)] - (CVE-2025-55131) src,lib: refactor unsafe buffer creation to remove zero-fill toggle (Сковорода Никита Андреевич) [nodejs-private/node-private#759](https://github.com/nodejs-private/node-private/pull/759)
- + 1 more
📋 Notable Changes
- lib:
- (CVE-2025-59465) add TLSSocket default error handler (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/797>
- (CVE-2025-55132) disable futimes when permission model is enabled (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/748>
- lib,permission:
- (CVE-2025-55130) require full read and write to symlink APIs (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/760>
- src:
- (CVE-2025-59466) rethrow stack overflow exceptions in async\_hooks (Matteo Collina) <https://github.com/nodejs-private/node-private/pull/773>
- src,lib:
- + 3 more
📦 Commits
- \[[`2092785d01`](https://github.com/nodejs/node/commit/2092785d01)] - deps: update c-ares to v1.34.6 (Node.js GitHub Bot) [#60997](https://github.com/nodejs/node/pull/60997)
- \[[`3e58b7f2af`](https://github.com/nodejs/node/commit/3e58b7f2af)] - deps: update undici to 7.18.2 (Node.js GitHub Bot) [#61283](https://github.com/nodejs/node/pull/61283)
- \[[`4ba536a5a6`](https://github.com/nodejs/node/commit/4ba536a5a6)] - (CVE-2025-59465) lib: add TLSSocket default error handler (RafaelGSS) [nodejs-private/node-private#797](https://github.com/nodejs-private/node-private/pull/797)
- \[[`89adaa21fd`](https://github.com/nodejs/node/commit/89adaa21fd)] - (CVE-2025-55132) lib: disable futimes when permission model is enabled (RafaelGSS) [nodejs-private/node-private#748](https://github.com/nodejs-private/node-private/pull/748)
- \[[`7302b4dae1`](https://github.com/nodejs/node/commit/7302b4dae1)] - (CVE-2025-55130) lib,permission: require full read and write to symlink APIs (RafaelGSS) [nodejs-private/node-private#760](https://github.com/nodejs-private/node-private/pull/760)
- \[[`ac030753c4`](https://github.com/nodejs/node/commit/ac030753c4)] - (CVE-2025-59466) src: rethrow stack overflow exceptions in async\_hooks (Matteo Collina) [nodejs-private/node-private#773](https://github.com/nodejs-private/node-private/pull/773)
- \[[`20075692fe`](https://github.com/nodejs/node/commit/20075692fe)] - (CVE-2025-55131) src,lib: refactor unsafe buffer creation to remove zero-fill toggle (Сковорода Никита Андреевич) [nodejs-private/node-private#759](https://github.com/nodejs-private/node-private/pull/759)
- \[[`20591b0618`](https://github.com/nodejs/node/commit/20591b0618)] - (CVE-2026-21637) tls: route callback exceptions through error handlers (Matteo Collina) [nodejs-private/node-private#796](https://github.com/nodejs-private/node-private/pull/796)
📋 Notable Changes
- lib:
- (CVE-2025-59465) add TLSSocket default error handler
- (CVE-2025-55132) disable futimes when permission model is enabled
- lib,permission:
- (CVE-2025-55130) require full read and write to symlink APIs
- src:
- (CVE-2025-59466) rethrow stack overflow exceptions in async\_hooks
- src,lib:
- + 3 more
📦 Commits
- \[[`6badf4e6f4`](https://github.com/nodejs/node/commit/6badf4e6f4)] - deps: update c-ares to v1.34.6 (Node.js GitHub Bot) [#60997](https://github.com/nodejs/node/pull/60997)
- \[[`37509c3ff0`](https://github.com/nodejs/node/commit/37509c3ff0)] - deps: update undici to 6.23.0 (Matteo Collina) [nodejs-private/node-private#791](https://github.com/nodejs-private/node-private/pull/791)
- \[[`eb8e41f8db`](https://github.com/nodejs/node/commit/eb8e41f8db)] - (CVE-2025-59465) lib: add TLSSocket default error handler (RafaelGSS) [nodejs-private/node-private#797](https://github.com/nodejs-private/node-private/pull/797)
- \[[`ebbf942a83`](https://github.com/nodejs/node/commit/ebbf942a83)] - (CVE-2025-55132) lib: disable futimes when permission model is enabled (RafaelGSS) [nodejs-private/node-private#748](https://github.com/nodejs-private/node-private/pull/748)
- \[[`6b4849583a`](https://github.com/nodejs/node/commit/6b4849583a)] - (CVE-2025-55130) lib,permission: require full read and write to symlink APIs (RafaelGSS) [nodejs-private/node-private#760](https://github.com/nodejs-private/node-private/pull/760)
- \[[`ddadc31f09`](https://github.com/nodejs/node/commit/ddadc31f09)] - (CVE-2025-59466) src: rethrow stack overflow exceptions in async\_hooks (Matteo Collina) [nodejs-private/node-private#773](https://github.com/nodejs-private/node-private/pull/773)
- \[[`d4d9f3915f`](https://github.com/nodejs/node/commit/d4d9f3915f)] - (CVE-2025-55131) src,lib: refactor unsafe buffer creation to remove zero-fill toggle (Сковорода Никита Андреевич) [nodejs-private/node-private#759](https://github.com/nodejs-private/node-private/pull/759)
- \[[`25d6799df6`](https://github.com/nodejs/node/commit/25d6799df6)] - (CVE-2026-21637) tls: route callback exceptions through error handlers (Matteo Collina) [nodejs-private/node-private#796](https://github.com/nodejs-private/node-private/pull/796)
📋 Notable Changes
- lib:
- (CVE-2025-55132) disable futimes when permission model is enabled (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/802>
- (CVE-2025-59465) add TLSSocket default error handler (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/797>
- lib,permission:
- (CVE-2025-55130) require full read and write to symlink APIs (RafaelGSS) <https://github.com/nodejs-private/node-private/pull/760>
- src:
- (CVE-2025-59466) rethrow stack overflow exceptions in async\_hooks (Matteo Collina) <https://github.com/nodejs-private/node-private/pull/773>
- src,lib:
- + 3 more
📦 Commits
- \[[`8f9ba3f623`](https://github.com/nodejs/node/commit/8f9ba3f623)] - deps: update c-ares to v1.34.6 (Node.js GitHub Bot) [#60997](https://github.com/nodejs/node/pull/60997)
- \[[`97fc9b0eb7`](https://github.com/nodejs/node/commit/97fc9b0eb7)] - deps: update undici to 6.23.0 (Matteo Collina) [nodejs-private/node-private#792](https://github.com/nodejs-private/node-private/pull/792)
- \[[`14fbbb510c`](https://github.com/nodejs/node/commit/14fbbb510c)] - (CVE-2025-55132) lib: disable futimes when permission model is enabled (RafaelGSS) [nodejs-private/node-private#802](https://github.com/nodejs-private/node-private/pull/802)
- \[[`1febc48d5b`](https://github.com/nodejs/node/commit/1febc48d5b)] - (CVE-2025-59465) lib: add TLSSocket default error handler (RafaelGSS) [nodejs-private/node-private#797](https://github.com/nodejs-private/node-private/pull/797)
- \[[`494f62dc23`](https://github.com/nodejs/node/commit/494f62dc23)] - (CVE-2025-55130) lib,permission: require full read and write to symlink APIs (RafaelGSS) [nodejs-private/node-private#760](https://github.com/nodejs-private/node-private/pull/760)
- \[[`d7a5c587c0`](https://github.com/nodejs/node/commit/d7a5c587c0)] - (CVE-2025-59466) src: rethrow stack overflow exceptions in async\_hooks (Matteo Collina) [nodejs-private/node-private#773](https://github.com/nodejs-private/node-private/pull/773)
- \[[`51f4de4b4a`](https://github.com/nodejs/node/commit/51f4de4b4a)] - (CVE-2025-55131) src,lib: refactor unsafe buffer creation to remove zero-fill toggle (Сковорода Никита Андреевич) [nodejs-private/node-private#759](https://github.com/nodejs-private/node-private/pull/759)
- \[[`85f73e7057`](https://github.com/nodejs/node/commit/85f73e7057)] - (CVE-2026-21637) tls: route callback exceptions through error handlers (Matteo Collina) [nodejs-private/node-private#796](https://github.com/nodejs-private/node-private/pull/796)
📋 Notable Changes
- \[[`1a00b5f68a`](https://github.com/nodejs/node/commit/1a00b5f68a)] - (SEMVER-MINOR) http: add optimizeEmptyRequests server option (Rafael Gonzaga) [#59778](https://github.com/nodejs/node/pull/59778)
- \[[`ff5754077d`](https://github.com/nodejs/node/commit/ff5754077d)] - (SEMVER-MINOR) lib: add options to util.deprecate (Rafael Gonzaga) [#59982](https://github.com/nodejs/node/pull/59982)
- \[[`8987159234`](https://github.com/nodejs/node/commit/8987159234)] - (SEMVER-MINOR) module: mark type stripping as stable (Marco Ippolito) [#60600](https://github.com/nodejs/node/pull/60600)
- \[[`92c484ebf4`](https://github.com/nodejs/node/commit/92c484ebf4)] - (SEMVER-MINOR) node-api: add napi\_create\_object\_with\_properties (Miguel Marcondes Filho) [#59953](https://github.com/nodejs/node/pull/59953)
- \[[`b11bc5984e`](https://github.com/nodejs/node/commit/b11bc5984e)] - (SEMVER-MINOR) sqlite: allow setting defensive flag (Bart Louwers) [#60217](https://github.com/nodejs/node/pull/60217)
- \[[`e7da5b4b7d`](https://github.com/nodejs/node/commit/e7da5b4b7d)] - (SEMVER-MINOR) src: add watch config namespace (Marco Ippolito) [#60178](https://github.com/nodejs/node/pull/60178)
- \[[`a7f7d10c06`](https://github.com/nodejs/node/commit/a7f7d10c06)] - (SEMVER-MINOR) src: add an option to make compile cache portable (Aditi) [#58797](https://github.com/nodejs/node/pull/58797)
- \[[`92ea669240`](https://github.com/nodejs/node/commit/92ea669240)] - (SEMVER-MINOR) src,permission: add --allow-inspector ability (Rafael Gonzaga) [#59711](https://github.com/nodejs/node/pull/59711)
- + 1 more
📦 Commits
- \[[`e4a23a35ac`](https://github.com/nodejs/node/commit/e4a23a35ac)] - benchmark: focus on import.meta intialization in import-meta benchmark (Joyee Cheung) [#60603](https://github.com/nodejs/node/pull/60603)
- \[[`b6114ae5c9`](https://github.com/nodejs/node/commit/b6114ae5c9)] - benchmark: add per-suite setup option (Joyee Cheung) [#60574](https://github.com/nodejs/node/pull/60574)
- \[[`ac8e90af7c`](https://github.com/nodejs/node/commit/ac8e90af7c)] - buffer: speed up concat via TypedArray#set (Gürgün Dayıoğlu) [#60399](https://github.com/nodejs/node/pull/60399)
- \[[`acbc8ca13e`](https://github.com/nodejs/node/commit/acbc8ca13e)] - build: upgrade Python linter ruff, add rules ASYNC,PERF (Christian Clauss) [#59984](https://github.com/nodejs/node/pull/59984)
- \[[`f97a609a07`](https://github.com/nodejs/node/commit/f97a609a07)] - console: optimize single-string logging (Gürgün Dayıoğlu) [#60422](https://github.com/nodejs/node/pull/60422)
- \[[`6cd9bdc580`](https://github.com/nodejs/node/commit/6cd9bdc580)] - crypto: ensure documented RSA-PSS saltLength default is used (Filip Skokan) [#60662](https://github.com/nodejs/node/pull/60662)
- \[[`0fafe24d9b`](https://github.com/nodejs/node/commit/0fafe24d9b)] - crypto: fix argument validation in crypto.timingSafeEqual fast path (Joyee Cheung) [#60538](https://github.com/nodejs/node/pull/60538)
- \[[`54421e0419`](https://github.com/nodejs/node/commit/54421e0419)] - debugger: fix event listener leak in the run command (Joyee Cheung) [#60464](https://github.com/nodejs/node/pull/60464)
- + 120 more
📋 Notable Changes
- \[[`6277910a15`](https://github.com/nodejs/node/commit/6277910a15)] - crypto: update root certificates to NSS 3.114 (Node.js GitHub Bot) [#59571](https://github.com/nodejs/node/pull/59571)
- \[[`082e50d4a2`](https://github.com/nodejs/node/commit/082e50d4a2)] - doc: update the instruction on how to verify releases (Antoine du Hamel) [#59113](https://github.com/nodejs/node/pull/59113)
- \[[`db68cec4cb`](https://github.com/nodejs/node/commit/db68cec4cb)] - doc: deprecate HTTP/2 priority signaling (Matteo Collina) [#58313](https://github.com/nodejs/node/pull/58313)
📦 Commits
- \[[`0f644df42e`](https://github.com/nodejs/node/commit/0f644df42e)] - build: fix 'implicit-function-declaration' on OpenHarmony platform (hqzing) [#59547](https://github.com/nodejs/node/pull/59547)
- \[[`fba0025b9c`](https://github.com/nodejs/node/commit/fba0025b9c)] - build: use `windows-2025` runner (Michaël Zasso) [#59673](https://github.com/nodejs/node/pull/59673)
- \[[`3456ec946d`](https://github.com/nodejs/node/commit/3456ec946d)] - crypto: update root certificates to NSS 3.116 (Node.js GitHub Bot) [#59956](https://github.com/nodejs/node/pull/59956)
- \[[`6277910a15`](https://github.com/nodejs/node/commit/6277910a15)] - crypto: update root certificates to NSS 3.114 (Node.js GitHub Bot) [#59571](https://github.com/nodejs/node/pull/59571)
- \[[`1788fb5f3d`](https://github.com/nodejs/node/commit/1788fb5f3d)] - deps: update undici to 6.22.0 (Matteo Collina) [#60112](https://github.com/nodejs/node/pull/60112)
- \[[`5d61b55f24`](https://github.com/nodejs/node/commit/5d61b55f24)] - deps: update uvwasi to 0.0.23 (Node.js GitHub Bot) [#59791](https://github.com/nodejs/node/pull/59791)
- \[[`9f1e5e4637`](https://github.com/nodejs/node/commit/9f1e5e4637)] - deps: update histogram to 0.11.9 (Node.js GitHub Bot) [#59689](https://github.com/nodejs/node/pull/59689)
- \[[`d0edb01d25`](https://github.com/nodejs/node/commit/d0edb01d25)] - deps: update googletest to eb2d85e (Node.js GitHub Bot) [#59335](https://github.com/nodejs/node/pull/59335)
- + 54 more
📦 Commits
- \[[`ff89b7b6c7`](https://github.com/nodejs/node/commit/ff89b7b6c7)] - crypto: ensure documented RSA-PSS saltLength default is used (Filip Skokan) [#60662](https://github.com/nodejs/node/pull/60662)
- \[[`5316b580eb`](https://github.com/nodejs/node/commit/5316b580eb)] - deps: V8: backport 2e4c5cf9b112 (Michaël Zasso) [#60654](https://github.com/nodejs/node/pull/60654)
- \[[`ca878bc90e`](https://github.com/nodejs/node/commit/ca878bc90e)] - doc,src,lib: clarify experimental status of Web Storage support (Antoine du Hamel) [#60708](https://github.com/nodejs/node/pull/60708)
- \[[`a4dee613fd`](https://github.com/nodejs/node/commit/a4dee613fd)] - _Revert_ "lib: throw from localStorage getter on missing storage path" (Antoine du Hamel) [#60750](https://github.com/nodejs/node/pull/60750)
📋 Notable Changes
- \[[`a37c01e6a1`](https://github.com/nodejs/node/commit/a37c01e6a1)] - (SEMVER-MINOR) lib: add options to util.deprecate (Rafael Gonzaga) [#59982](https://github.com/nodejs/node/pull/59982)
- \[[`4fbb1ab101`](https://github.com/nodejs/node/commit/4fbb1ab101)] - lib: throw from localStorage getter on missing storage path (René) [#60351](https://github.com/nodejs/node/pull/60351)
- \[[`727560a96d`](https://github.com/nodejs/node/commit/727560a96d)] - (SEMVER-MINOR) module: mark type stripping as stable (Marco Ippolito) [#60600](https://github.com/nodejs/node/pull/60600)
- \[[`506b79e888`](https://github.com/nodejs/node/commit/506b79e888)] - (SEMVER-MINOR) net: increase network family autoselection timeout to 500ms (Rod Vagg) [#60334](https://github.com/nodejs/node/pull/60334)
- \[[`166c72ec02`](https://github.com/nodejs/node/commit/166c72ec02)] - (SEMVER-MINOR) node-api: add napi\_create\_object\_with\_properties (Miguel Marcondes Filho) [#59953](https://github.com/nodejs/node/pull/59953)
- \[[`399b340022`](https://github.com/nodejs/node/commit/399b340022)] - (SEMVER-MINOR) v8: adding total\_allocated\_bytes to HeapStatistics (Caio Lima) [#60573](https://github.com/nodejs/node/pull/60573)
📦 Commits
- \[[`d5158a0a2d`](https://github.com/nodejs/node/commit/d5158a0a2d)] - benchmark: focus on import.meta intialization in import-meta benchmark (Joyee Cheung) [#60603](https://github.com/nodejs/node/pull/60603)
- \[[`26a5305fa9`](https://github.com/nodejs/node/commit/26a5305fa9)] - benchmark: add per-suite setup option (Joyee Cheung) [#60574](https://github.com/nodejs/node/pull/60574)
- \[[`4810e4b82d`](https://github.com/nodejs/node/commit/4810e4b82d)] - buffer: speed up concat via TypedArray#set (Gürgün Dayıoğlu) [#60399](https://github.com/nodejs/node/pull/60399)
- \[[`94a94a6b3a`](https://github.com/nodejs/node/commit/94a94a6b3a)] - console: optimize single-string logging (Gürgün Dayıoğlu) [#60422](https://github.com/nodejs/node/pull/60422)
- \[[`ad376c31db`](https://github.com/nodejs/node/commit/ad376c31db)] - crypto: fix argument validation in crypto.timingSafeEqual fast path (Joyee Cheung) [#60538](https://github.com/nodejs/node/pull/60538)
- \[[`dc38a45a55`](https://github.com/nodejs/node/commit/dc38a45a55)] - debugger: fix event listener leak in the run command (Joyee Cheung) [#60464](https://github.com/nodejs/node/pull/60464)
- \[[`a61e5d8e05`](https://github.com/nodejs/node/commit/a61e5d8e05)] - deps: call OPENSSL\_free after ANS1\_STRING\_to\_UTF8 (Rafael Gonzaga) [#60609](https://github.com/nodejs/node/pull/60609)
- \[[`51e5030afa`](https://github.com/nodejs/node/commit/51e5030afa)] - deps: nghttp2: revert 7784fa979d0b (Antoine du Hamel) [#59790](https://github.com/nodejs/node/pull/59790)
- + 105 more