GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com (truncated) — src: detach cppgc wrappers from their Realm before it is freed by codebytere · Pull Request #65778 · nodejs/node Conversation
|
|
Review requested:
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
`Realm::RunCleanup()` finalizes the cppgc-managed wrappers it tracks so that none of them touches the Realm once it is gone, but it reaches them through weak persistents, and the GC clears those as soon as it finds a wrapper dead. With lazy and concurrent sweeping the destructor can run much later, so a wrapper collected shortly before `FreeEnvironment()` and swept after it was skipped by the cleanup and kept its `realm_`: `~CppgcMixin()` then wrote `should_purge_empty_cppgc_wrappers_` into the freed Realm, and a subclass destructor calling `Finalize()` as documented would have called `Clean()` with a dangling Realm. A Worker that compiles a few `vm.Script`s, gets a full GC from external memory pressure and calls `process.exit()` is enough to hit the first case. Move the Realm pointer into the list node, which the wrapper now owns and deletes in its destructor. `CppgcWrapperList::Cleanup()` unlinks every node, finalizing the wrappers that are still alive and clearing the Realm pointer for the collected ones, which only their own destructor may still touch. `Realm::PendingCleanup()` accounts for the list so it is always drained. The purge flag, its GC epilogue callback and `PurgeEmpty()` are no longer needed, and removing them also stops the list nodes of wrappers that are alive at `FreeEnvironment()` from leaking. Refs: nodejs#56534 Signed-off-by: Shelley Vohr <[email protected]>
bbc133a to
6bb6296
Compare
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@ ## main #65778 +/- ## ========================================== + Coverage 89.99% 90.05% +0.05% ========================================== Files 757 769 +12 Lines 257739 261377 +3638 Branches 48881 49629 +748 ========================================== + Hits 231961 235377 +3416 - Misses 16861 17033 +172 - Partials 8917 8967 +50
🚀 New features to boost your workflow:
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
RSLGTM
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
`Realm::RunCleanup()` finalizes the cppgc-managed wrappers it tracks so that none of them touches the Realm once it is gone, but it reaches them through weak persistents, and the GC clears those as soon as it finds a wrapper dead. With lazy and concurrent sweeping the destructor can run much later, so a wrapper collected shortly before `FreeEnvironment()` and swept after it was skipped by the cleanup and kept its `realm_`: `~CppgcMixin()` then wrote `should_purge_empty_cppgc_wrappers_` into the freed Realm, and a subclass destructor calling `Finalize()` as documented would have called `Clean()` with a dangling Realm. A Worker that compiles a few `vm.Script`s, gets a full GC from external memory pressure and calls `process.exit()` is enough to hit the first case. Move the Realm pointer into the list node, which the wrapper now owns and deletes in its destructor. `CppgcWrapperList::Cleanup()` unlinks every node, finalizing the wrappers that are still alive and clearing the Realm pointer for the collected ones, which only their own destructor may still touch. `Realm::PendingCleanup()` accounts for the list so it is always drained. The purge flag, its GC epilogue callback and `PurgeEmpty()` are no longer needed, and removing them also stops the list nodes of wrappers that are alive at `FreeEnvironment()` from leaking. Refs: #56534 Signed-off-by: Shelley Vohr <[email protected]> PR-URL: #65778 Reviewed-By: Matteo Collina <[email protected]>
|
Landed in c909c63 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
As reported in #65756 (comment), v26.8.1 produced a Windows child-process crash whose dump matched the Realm lifetime issue fixed by this PR. Testing on v24.20.0 also indicates that this fix addresses the crash. Could this fix be considered for backporting to v26.x and v24.x? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
`Realm::RunCleanup()` finalizes the cppgc-managed wrappers it tracks so that none of them touches the Realm once it is gone, but it reaches them through weak persistents, and the GC clears those as soon as it finds a wrapper dead. With lazy and concurrent sweeping the destructor can run much later, so a wrapper collected shortly before `FreeEnvironment()` and swept after it was skipped by the cleanup and kept its `realm_`: `~CppgcMixin()` then wrote `should_purge_empty_cppgc_wrappers_` into the freed Realm, and a subclass destructor calling `Finalize()` as documented would have called `Clean()` with a dangling Realm. A Worker that compiles a few `vm.Script`s, gets a full GC from external memory pressure and calls `process.exit()` is enough to hit the first case. Move the Realm pointer into the list node, which the wrapper now owns and deletes in its destructor. `CppgcWrapperList::Cleanup()` unlinks every node, finalizing the wrappers that are still alive and clearing the Realm pointer for the collected ones, which only their own destructor may still touch. `Realm::PendingCleanup()` accounts for the list so it is always drained. The purge flag, its GC epilogue callback and `PurgeEmpty()` are no longer needed, and removing them also stops the list nodes of wrappers that are alive at `FreeEnvironment()` from leaking. Refs: #56534 Signed-off-by: Shelley Vohr <[email protected]> PR-URL: #65778 Reviewed-By: Matteo Collina <[email protected]>
It is a Node.js bug in a thread's teardown (nodejs/node#65778), which the job reached by starting its threads with tsx's loader; it is not close() ending a checkpoint thread inside a statement. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…led server's do (#831) * Worker-exit test: Iris's threads start with no --import, as an installed server's do The fixture ran as `node --import tsx`, and a worker thread inherits its process's --import, so the "dist" cells started every thread with tsx's loader. On Node 24 such a thread can crash the process as it ends, in Node's own teardown of the thread (nodejs/node#65778, fixed in 26.10.0, backport to 24.x pending). An installed server's threads have no loader. The harness now starts the fixture with no --import (Node strips its types itself) and the fixture registers tsx on its main thread only, for the "src" cells. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Changelog: the 0.20.0 note on the worker-exit crash names its cause It is a Node.js bug in a thread's teardown (nodejs/node#65778), which the job reached by starting its threads with tsx's loader; it is not close() ending a checkpoint thread inside a statement. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
`Realm::RunCleanup()` finalizes the cppgc-managed wrappers it tracks so that none of them touches the Realm once it is gone, but it reaches them through weak persistents, and the GC clears those as soon as it finds a wrapper dead. With lazy and concurrent sweeping the destructor can run much later, so a wrapper collected shortly before `FreeEnvironment()` and swept after it was skipped by the cleanup and kept its `realm_`: `~CppgcMixin()` then wrote `should_purge_empty_cppgc_wrappers_` into the freed Realm, and a subclass destructor calling `Finalize()` as documented would have called `Clean()` with a dangling Realm. A Worker that compiles a few `vm.Script`s, gets a full GC from external memory pressure and calls `process.exit()` is enough to hit the first case. Move the Realm pointer into the list node, which the wrapper now owns and deletes in its destructor. `CppgcWrapperList::Cleanup()` unlinks every node, finalizing the wrappers that are still alive and clearing the Realm pointer for the collected ones, which only their own destructor may still touch. `Realm::PendingCleanup()` accounts for the list so it is always drained. The purge flag, its GC epilogue callback and `PurgeEmpty()` are no longer needed, and removing them also stops the list nodes of wrappers that are alive at `FreeEnvironment()` from leaking. Refs: #56534 Signed-off-by: Shelley Vohr <[email protected]> PR-URL: #65778 Backport-PR-URL: #66168 Reviewed-By: Antoine du Hamel <[email protected]>
Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778
Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778
Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778
Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778
Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778
* chore: bump node in DEPS to v24.22.0 * fix(patch): enable the V8 sandbox in shared-cage builds Upstream now enables the V8 sandbox only for shared-cage builds. Keep Electron's behaviour of enabling it whenever pointer compression is on, matching Chromium's V8. The unofficial.gni x86 hunk landed upstream. Ref: nodejs/node#62237 Ref: nodejs/node#65491 * fix(patch): use names for asymmetric key algorithms Upstream dropped the BoringSSL guard in DhKeyGenTraits::Setup(), removed ReadASN1Element() from ncrypto, and no longer includes <openssl/evp.h> from env.h, so those hunks are no longer needed. Ref: nodejs/node#65966 Ref: nodejs/node#66108 Ref: nodejs/node#65484 * fix(patch): skip RSA-PSS keygen deprecation tests with BoringSSL The skip is now upstream. Ref: nodejs/node#65808 * fix(patch): detach cppgc wrappers from their Realm before it is freed Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778 * fix(patch): gate jspi flag on V8_ENABLE_WEBASSEMBLY Ref: nodejs/node#66082 * chore: remove upstreamed patches - nodejs/node#63985 - nodejs/node#65630 - nodejs/node#64453 - nodejs/node#65778 * chore: update patches (trivial only) * chore: update filenames.auto.gni * fix(patch): discover hashes from OpenSSL providers ncrypto's DigestCache::aliases() now has a function-local static, so ncrypto needs the no_exit_time_destructors config too. Ref: nodejs/node#65484 * fix(patch): read the peer certificate chain without consuming it sk_X509_num() returns size_t in BoringSSL. Ref: nodejs/node#65602 * fix(patch): fix shared buffer growability validation Ref: nodejs/node#65845 * chore: update patches (trivial only) * node#65820: src: fix null pointer call when running without a startup snapshot SnapshotData::AsEmbedderWrapper() was removed. Both call sites wrap the embedded snapshot, so use EmbedderSnapshotData::BuiltinSnapshotData(). Ref: nodejs/node#65820 * node#65407: src: apply IsolateSettings when using a snapshot node::CreateEnvironment() no longer installs the per-isolate message listener when it builds the environment from a snapshot, so stop compensating for that and let SetIsolateUpForNode() add it. Ref: nodejs/node#65407 * test: drop removed wasm rab integration flag from webidl buffer source test Chromium's V8 removed --experimental-wasm-rab-integration after shipping it; the new test-internal-webidl-buffer-source.js passes it. Ref: nodejs/node#65845 Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7708297 * chore: remove obsolete TLS external-memory accounting patch Upstream moved the SecureContext external-memory Increase() into Init() and guards the Decrease() on ctx_, so the leak this patch fixed is gone. The patch's removal of that guard now double-decrements when v24.22.0's TLSSocket closes a single-use context before the wrapper is destroyed, tripping V8's ExternalMemoryAccounter DCHECK in every TLS test. Already dropped on main in #53524. * test: skip new rmSync permission error test when the Node suite runs as root test-fs-rmSync-special-char-additional-error.js is new in v24.22.0 and relies on a read-only directory blocking removal, which root bypasses; the Linux Node.js test job runs as root. Ref: nodejs/node#64453 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Sam Attard <[email protected]>
* chore: bump node in DEPS to v24.22.0 * fix(patch): enable the V8 sandbox in shared-cage builds Upstream now enables the V8 sandbox only for shared-cage builds. Keep Electron's behaviour of enabling it whenever pointer compression is on, matching Chromium's V8. The unofficial.gni x86 hunk landed upstream. Ref: nodejs/node#62237 Ref: nodejs/node#65491 * fix(patch): use names for asymmetric key algorithms Upstream dropped the BoringSSL guard in DhKeyGenTraits::Setup(), removed ReadASN1Element() from ncrypto, and no longer includes <openssl/evp.h> from env.h, so those hunks are no longer needed. Ref: nodejs/node#65966 Ref: nodejs/node#66108 Ref: nodejs/node#65484 * fix(patch): skip RSA-PSS keygen deprecation tests with BoringSSL The skip is now upstream. Ref: nodejs/node#65808 * fix(patch): detach cppgc wrappers from their Realm before it is freed Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778 * fix(patch): gate jspi flag on V8_ENABLE_WEBASSEMBLY Ref: nodejs/node#66082 * chore: remove upstreamed patches - nodejs/node#63985 - nodejs/node#65630 - nodejs/node#64453 - nodejs/node#65778 * chore: update patches (trivial only) * chore: update filenames.auto.gni * fix(patch): discover hashes from OpenSSL providers ncrypto's DigestCache::aliases() now has a function-local static, so ncrypto needs the no_exit_time_destructors config too. Ref: nodejs/node#65484 * fix(patch): read the peer certificate chain without consuming it sk_X509_num() returns size_t in BoringSSL. Ref: nodejs/node#65602 * fix(patch): fix shared buffer growability validation Ref: nodejs/node#65845 * chore: update patches (trivial only) * node#65820: src: fix null pointer call when running without a startup snapshot SnapshotData::AsEmbedderWrapper() was removed. Both call sites wrap the embedded snapshot, so use EmbedderSnapshotData::BuiltinSnapshotData(). Ref: nodejs/node#65820 * node#65407: src: apply IsolateSettings when using a snapshot node::CreateEnvironment() no longer installs the per-isolate message listener when it builds the environment from a snapshot, so stop compensating for that and let SetIsolateUpForNode() add it. Ref: nodejs/node#65407 * test: drop removed wasm rab integration flag from webidl buffer source test Chromium's V8 removed --experimental-wasm-rab-integration after shipping it; the new test-internal-webidl-buffer-source.js passes it. Ref: nodejs/node#65845 Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7708297 * test: skip new rmSync permission error test when the Node suite runs as root test-fs-rmSync-special-char-additional-error.js is new in v24.22.0 and relies on a read-only directory blocking removal, which root bypasses; the Linux Node.js test job runs as root. Ref: nodejs/node#64453 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Sam Attard <[email protected]>
* chore: bump node in DEPS to v24.22.0 * fix(patch): enable the V8 sandbox in shared-cage builds Upstream now enables the V8 sandbox only for shared-cage builds. Keep Electron's behaviour of enabling it whenever pointer compression is on, matching Chromium's V8. The unofficial.gni x86 hunk landed upstream. Ref: nodejs/node#62237 Ref: nodejs/node#65491 * fix(patch): use names for asymmetric key algorithms Upstream dropped the BoringSSL guard in DhKeyGenTraits::Setup(), removed ReadASN1Element() from ncrypto, and no longer includes <openssl/evp.h> from env.h, so those hunks are no longer needed. Ref: nodejs/node#65966 Ref: nodejs/node#66108 Ref: nodejs/node#65484 * fix(patch): skip RSA-PSS keygen deprecation tests with BoringSSL The skip is now upstream. Ref: nodejs/node#65808 * fix(patch): detach cppgc wrappers from their Realm before it is freed Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778 * fix(patch): gate jspi flag on V8_ENABLE_WEBASSEMBLY Ref: nodejs/node#66082 * chore: remove upstreamed patches - nodejs/node#63985 - nodejs/node#65630 - nodejs/node#64453 - nodejs/node#65778 * chore: update patches (trivial only) * chore: update filenames.auto.gni * fix(patch): discover hashes from OpenSSL providers ncrypto's DigestCache::aliases() now has a function-local static, so ncrypto needs the no_exit_time_destructors config too. Ref: nodejs/node#65484 * fix(patch): read the peer certificate chain without consuming it sk_X509_num() returns size_t in BoringSSL. Ref: nodejs/node#65602 * chore: update patches (trivial only) * node#65820: src: fix null pointer call when running without a startup snapshot SnapshotData::AsEmbedderWrapper() was removed. Both call sites wrap the embedded snapshot, so use EmbedderSnapshotData::BuiltinSnapshotData(). Ref: nodejs/node#65820 * node#65407: src: apply IsolateSettings when using a snapshot node::CreateEnvironment() no longer installs the per-isolate message listener when it builds the environment from a snapshot, so stop compensating for that and let SetIsolateUpForNode() add it. Ref: nodejs/node#65407 * test: drop removed wasm rab integration flag from webidl buffer source test Chromium's V8 removed --experimental-wasm-rab-integration after shipping it; the new test-internal-webidl-buffer-source.js passes it. Ref: nodejs/node#65845 Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7708297 * chore: remove obsolete TLS external-memory accounting patch Upstream moved the SecureContext external-memory Increase() into Init() and guards the Decrease() on ctx_, so the leak this patch fixed is gone. The patch's removal of that guard now double-decrements when v24.22.0's TLSSocket closes a single-use context before the wrapper is destroyed, tripping V8's ExternalMemoryAccounter DCHECK in every TLS test. Already dropped on main in #53524. * test: skip new rmSync permission error test when the Node suite runs as root test-fs-rmSync-special-char-additional-error.js is new in v24.22.0 and relies on a read-only directory blocking removal, which root bypasses; the Linux Node.js test job runs as root. Ref: nodejs/node#64453 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Sam Attard <[email protected]>
* chore: bump node in DEPS to v24.22.0 * fix(patch): enable the V8 sandbox in shared-cage builds Upstream now enables the V8 sandbox only for shared-cage builds. Keep Electron's behaviour of enabling it whenever pointer compression is on, matching Chromium's V8. The unofficial.gni x86 hunk landed upstream. Ref: nodejs/node#62237 Ref: nodejs/node#65491 * fix(patch): use names for asymmetric key algorithms Upstream dropped the BoringSSL guard in DhKeyGenTraits::Setup(), removed ReadASN1Element() from ncrypto, and no longer includes <openssl/evp.h> from env.h, so those hunks are no longer needed. Ref: nodejs/node#65966 Ref: nodejs/node#66108 Ref: nodejs/node#65484 * fix(patch): skip RSA-PSS keygen deprecation tests with BoringSSL The skip is now upstream. Ref: nodejs/node#65808 * fix(patch): detach cppgc wrappers from their Realm before it is freed Upstream's CppgcWrapperList::Cleanup() now pops nodes itself and the wrapper owns and frees its list node, so the local PopFront/delete hunk is dropped. Ref: nodejs/node#65778 * fix(patch): gate jspi flag on V8_ENABLE_WEBASSEMBLY Ref: nodejs/node#66082 * chore: remove upstreamed patches - nodejs/node#63985 - nodejs/node#65630 - nodejs/node#64453 - nodejs/node#65778 * chore: update patches (trivial only) * chore: update filenames.auto.gni * fix(patch): discover hashes from OpenSSL providers ncrypto's DigestCache::aliases() now has a function-local static, so ncrypto needs the no_exit_time_destructors config too. Ref: nodejs/node#65484 * fix(patch): read the peer certificate chain without consuming it sk_X509_num() returns size_t in BoringSSL. Ref: nodejs/node#65602 * fix(patch): fix shared buffer growability validation Ref: nodejs/node#65845 * chore: update patches (trivial only) * node#65820: src: fix null pointer call when running without a startup snapshot SnapshotData::AsEmbedderWrapper() was removed. Both call sites wrap the embedded snapshot, so use EmbedderSnapshotData::BuiltinSnapshotData(). Ref: nodejs/node#65820 * node#65407: src: apply IsolateSettings when using a snapshot node::CreateEnvironment() no longer installs the per-isolate message listener when it builds the environment from a snapshot, so stop compensating for that and let SetIsolateUpForNode() add it. Ref: nodejs/node#65407 * test: drop removed wasm rab integration flag from webidl buffer source test Chromium's V8 removed --experimental-wasm-rab-integration after shipping it; the new test-internal-webidl-buffer-source.js passes it. Ref: nodejs/node#65845 Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7708297 * test: skip new rmSync permission error test when the Node suite runs as root test-fs-rmSync-special-char-additional-error.js is new in v24.22.0 and relies on a read-only directory blocking removal, which root bypasses; the Linux Node.js test job runs as root. Ref: nodejs/node#64453 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Sam Attard <[email protected]>
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `24.18.0` → `24.22.0` | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/99) for more information. --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v24.22.0`](https://github.com/nodejs/node/releases/tag/v24.22.0): 2026-10-14, Version 24.22.0 'Krypton' (LTS), @​richardlau prepared by @​aduh95 [Compare Source](https://github.com/nodejs/node/compare/v24.21.0...v24.22.0) ##### Notable Changes - \[[`ddbf974b47`](https://github.com/nodejs/node/commit/ddbf974b47)] - **(SEMVER-MINOR)** **crypto**: add `crypto.parsePKCS12()` (Brian Muenzenmeyer) [#​65627](https://github.com/nodejs/node/pull/65627) - \[[`c162c68ff0`](https://github.com/nodejs/node/commit/c162c68ff0)] - **(SEMVER-MINOR)** **crypto**: add a generic MAC API (Filip Skokan) [#​65553](https://github.com/nodejs/node/pull/65553) - \[[`a4ab3d84d7`](https://github.com/nodejs/node/commit/a4ab3d84d7)] - **(SEMVER-MINOR)** **crypto**: discover ciphers from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`c2f1e829ea`](https://github.com/nodejs/node/commit/c2f1e829ea)] - **(SEMVER-MINOR)** **crypto**: discover hashes from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`51aad5a80d`](https://github.com/nodejs/node/commit/51aad5a80d)] - **(SEMVER-MINOR)** **crypto**: enable SIV and GCM-SIV modes in Cipher/Decipher APIs (Filip Skokan) [#​63411](https://github.com/nodejs/node/pull/63411) - \[[`d11c65d2f2`](https://github.com/nodejs/node/commit/d11c65d2f2)] - **doc**: add araujogui to collaborators (Guilherme Araújo) [#​66090](https://github.com/nodejs/node/pull/66090) - \[[`acc1578179`](https://github.com/nodejs/node/commit/acc1578179)] - **doc**: deprecate `Server.prototype._listen2` in `node:net` (Antoine du Hamel) [#​65593](https://github.com/nodejs/node/pull/65593) - \[[`a7f8de6362`](https://github.com/nodejs/node/commit/a7f8de6362)] - **(SEMVER-MINOR)** **net**: support sending `net.BoundSocket` to threads and child processes (Guy Bedford) [#​64725](https://github.com/nodejs/node/pull/64725) - \[[`60c3eb61bd`](https://github.com/nodejs/node/commit/60c3eb61bd)] - **(SEMVER-MINOR)** **perf_hooks**: implement `SlidingWindowHistogram` (James M Snell) [#​65825](https://github.com/nodejs/node/pull/65825) - \[[`6b3e6f9d5c`](https://github.com/nodejs/node/commit/6b3e6f9d5c)] - **(SEMVER-MINOR)** **perf_hooks**: implement qrde analysis support in Histogram (James M Snell) [#​65806](https://github.com/nodejs/node/pull/65806) - \[[`75456a3512`](https://github.com/nodejs/node/commit/75456a3512)] - **(SEMVER-MINOR)** **perf_hooks**: implement Histogram `meanCI` API (James M Snell) [#​65606](https://github.com/nodejs/node/pull/65606) - \[[`72d1b40c56`](https://github.com/nodejs/node/commit/72d1b40c56)] - **(SEMVER-MINOR)** **perf_hooks**: add CBOR export/import for histogram exchange (James M Snell) [#​65434](https://github.com/nodejs/node/pull/65434) - \[[`41161dda87`](https://github.com/nodejs/node/commit/41161dda87)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.close()` (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`adbc757d70`](https://github.com/nodejs/node/commit/adbc757d70)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype[Symbol.dispose]()` (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`241339f072`](https://github.com/nodejs/node/commit/241339f072)] - **(SEMVER-MINOR)** **src,lib**: add `util.markPromiseAsHandled` (James M Snell) [#​65805](https://github.com/nodejs/node/pull/65805) - \[[`63b0974d9e`](https://github.com/nodejs/node/commit/63b0974d9e)] - **(SEMVER-MINOR)** **util**: implement `util.throttle` (James M Snell) [#​65899](https://github.com/nodejs/node/pull/65899) - \[[`a3bbb5a26f`](https://github.com/nodejs/node/commit/a3bbb5a26f)] - **(SEMVER-MINOR)** **util**: implement `debounce` (James M Snell) [#​65899](https://github.com/nodejs/node/pull/65899) ##### Commits - \[[`e6832b2cb1`](https://github.com/nodejs/node/commit/e6832b2cb1)] - **assert**: fix TypeError on deepStrictEqual with null Map key or Set member (Sergey Sannikov) [#​64449](https://github.com/nodejs/node/pull/64449) - \[[`a079177d9f`](https://github.com/nodejs/node/commit/a079177d9f)] - **benchmark**: add --csv option to compare.js with --analyze (James M Snell) [#​65922](https://github.com/nodejs/node/pull/65922) - \[[`10b1a0f70f`](https://github.com/nodejs/node/commit/10b1a0f70f)] - **benchmark**: fix max-regressions detection in compare.js (James M Snell) [#​65587](https://github.com/nodejs/node/pull/65587) - \[[`e0c7ba8ad5`](https://github.com/nodejs/node/commit/e0c7ba8ad5)] - **benchmark**: add --analyze option to benchmark/scatter.js (James M Snell) [#​65594](https://github.com/nodejs/node/pull/65594) - \[[`21fed10bb0`](https://github.com/nodejs/node/commit/21fed10bb0)] - **benchmark**: add crypto class benchmarks (Filip Skokan) [#​65518](https://github.com/nodejs/node/pull/65518) - \[[`fa912242b7`](https://github.com/nodejs/node/commit/fa912242b7)] - **buffer**: fix unaligned UTF-16LE decoding (Matteo Collina) [#​65905](https://github.com/nodejs/node/pull/65905) - \[[`a6bd0c1413`](https://github.com/nodejs/node/commit/a6bd0c1413)] - **build**: suppress OpenSSL asm warnings with clang (Richard Lau) [#​66023](https://github.com/nodejs/node/pull/66023) - \[[`94e12139ee`](https://github.com/nodejs/node/commit/94e12139ee)] - **build**: derive V8_LOGGING_LEVEL from dcheck_always_on (Joyee Cheung) [#​65744](https://github.com/nodejs/node/pull/65744) - \[[`7a2f322943`](https://github.com/nodejs/node/commit/7a2f322943)] - **build**: fix quiet default for make builds (Shelley Vohr) [#​65826](https://github.com/nodejs/node/pull/65826) - \[[`c280d650b0`](https://github.com/nodejs/node/commit/c280d650b0)] - **build**: allow linking shared dependencies in the GN build (Shelley Vohr) [#​65797](https://github.com/nodejs/node/pull/65797) - \[[`4b23a4472c`](https://github.com/nodejs/node/commit/4b23a4472c)] - **build**: enable the V8 sandbox in shared-cage builds (Shelley Vohr) [#​62237](https://github.com/nodejs/node/pull/62237) - \[[`676e15c003`](https://github.com/nodejs/node/commit/676e15c003)] - **build**: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage (Shelley Vohr) [#​65464](https://github.com/nodejs/node/pull/65464) - \[[`f784058482`](https://github.com/nodejs/node/commit/f784058482)] - **build**: remove obsolete configure flags (Chengzhong Wu) [#​65456](https://github.com/nodejs/node/pull/65456) - \[[`f63f37d243`](https://github.com/nodejs/node/commit/f63f37d243)] - **build**: activate correct default flags for riscv64 (Stewart X Addison) [#​65708](https://github.com/nodejs/node/pull/65708) - \[[`da46ac075d`](https://github.com/nodejs/node/commit/da46ac075d)] - **build**: derive NODE_ARCH from target_cpu in the GN build (Shelley Vohr) [#​65491](https://github.com/nodejs/node/pull/65491) - \[[`249e9a16dd`](https://github.com/nodejs/node/commit/249e9a16dd)] - **build,src**: gate jspi flag on V8_ENABLE_WEBASSEMBLY (Piotr Kubaj) [#​66082](https://github.com/nodejs/node/pull/66082) - \[[`146f00f64b`](https://github.com/nodejs/node/commit/146f00f64b)] - **child_process**: clear timeout timer on spawn-time error too (kishore280) [#​65506](https://github.com/nodejs/node/pull/65506) - \[[`13987f4418`](https://github.com/nodejs/node/commit/13987f4418)] - **crypto**: remove redundent `std::move` call (Antoine du Hamel) [#​66111](https://github.com/nodejs/node/pull/66111) - \[[`ef957ac85f`](https://github.com/nodejs/node/commit/ef957ac85f)] - **crypto**: skip private RSA parameters in key details (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`8feccc5e22`](https://github.com/nodejs/node/commit/8feccc5e22)] - **crypto**: use provider EC group names (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`764e0d1120`](https://github.com/nodejs/node/commit/764e0d1120)] - **crypto**: fetch ciphers for private-key encoding (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`50ffed1979`](https://github.com/nodejs/node/commit/50ffed1979)] - **crypto**: decode [PKCS#1](https://github.com/PKCS/node/issues/1) keys through providers (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`56c16b2fd6`](https://github.com/nodejs/node/commit/56c16b2fd6)] - **crypto**: derive keys through EVP_KDF (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`a4effe6809`](https://github.com/nodejs/node/commit/a4effe6809)] - **crypto**: use names for asymmetric key algorithms (Filip Skokan) [#​65966](https://github.com/nodejs/node/pull/65966) - \[[`ddbf974b47`](https://github.com/nodejs/node/commit/ddbf974b47)] - **(SEMVER-MINOR)** **crypto**: add crypto.parsePKCS12() (Brian Muenzenmeyer) [#​65627](https://github.com/nodejs/node/pull/65627) - \[[`8e631aa48f`](https://github.com/nodejs/node/commit/8e631aa48f)] - **crypto**: add Hybrid KEMs to Web Cryptography (Filip Skokan) [#​65759](https://github.com/nodejs/node/pull/65759) - \[[`5c51129e16`](https://github.com/nodejs/node/commit/5c51129e16)] - **crypto**: optimize private EC JWK import (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`c2ec40c2d7`](https://github.com/nodejs/node/commit/c2ec40c2d7)] - **crypto**: disable non-FIPS WebCrypto paths in FIPS mode (Filip Skokan) [#​65172](https://github.com/nodejs/node/pull/65172) - \[[`e198aa0f79`](https://github.com/nodejs/node/commit/e198aa0f79)] - **crypto**: read RSA-PSS restrictions from provider (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`253784f0e9`](https://github.com/nodejs/node/commit/253784f0e9)] - **crypto**: optimize and benchmark key preparation (Filip Skokan) [#​65892](https://github.com/nodejs/node/pull/65892) - \[[`80a6ad509b`](https://github.com/nodejs/node/commit/80a6ad509b)] - **crypto**: avoid EC reconstruction for signature sizing (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`5b592b772c`](https://github.com/nodejs/node/commit/5b592b772c)] - **crypto**: avoid EC raw export reconstruction (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`ee956ae3bf`](https://github.com/nodejs/node/commit/ee956ae3bf)] - **crypto**: export EC JWK coordinates directly (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`684008be58`](https://github.com/nodejs/node/commit/684008be58)] - **crypto**: read EC curve metadata directly (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`f4665f1c41`](https://github.com/nodejs/node/commit/f4665f1c41)] - **crypto**: validate the limit of PBKDF2 iterations (Filip Skokan) [#​65704](https://github.com/nodejs/node/pull/65704) - \[[`624abbecd7`](https://github.com/nodejs/node/commit/624abbecd7)] - **crypto**: use primordials in HKDF info validation (Filip Skokan) [#​65704](https://github.com/nodejs/node/pull/65704) - \[[`e4d916f175`](https://github.com/nodejs/node/commit/e4d916f175)] - **crypto**: add mgf1Hash for RSA-OAEP (Adam Mcgrath) [#​65073](https://github.com/nodejs/node/pull/65073) - \[[`db8a9162a8`](https://github.com/nodejs/node/commit/db8a9162a8)] - **crypto**: fix multi-prime RSA JWKs (Filip Skokan) [#​65649](https://github.com/nodejs/node/pull/65649) - \[[`022ac83504`](https://github.com/nodejs/node/commit/022ac83504)] - **crypto**: cache valid ECDH key pairs (Filip Skokan) [#​65615](https://github.com/nodejs/node/pull/65615) - \[[`c61953ebcc`](https://github.com/nodejs/node/commit/c61953ebcc)] - **crypto**: add strict mode to --force-fips (Filip Skokan) [#​65645](https://github.com/nodejs/node/pull/65645) - \[[`db6ea132a5`](https://github.com/nodejs/node/commit/db6ea132a5)] - **crypto**: add FIPS indicator diagnostics channel (Filip Skokan) [#​65645](https://github.com/nodejs/node/pull/65645) - \[[`c162c68ff0`](https://github.com/nodejs/node/commit/c162c68ff0)] - **(SEMVER-MINOR)** **crypto**: add a generic MAC API (Filip Skokan) [#​65553](https://github.com/nodejs/node/pull/65553) - \[[`2b62aafd20`](https://github.com/nodejs/node/commit/2b62aafd20)] - **crypto**: validate JWK usages before key_ops (Filip Skokan) [#​65550](https://github.com/nodejs/node/pull/65550) - \[[`ec7819db69`](https://github.com/nodejs/node/commit/ec7819db69)] - **crypto**: fix RSA-PSS oversized salt handling (Filip Skokan) [#​65550](https://github.com/nodejs/node/pull/65550) - \[[`a4ab3d84d7`](https://github.com/nodejs/node/commit/a4ab3d84d7)] - **(SEMVER-MINOR)** **crypto**: discover ciphers from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`c2f1e829ea`](https://github.com/nodejs/node/commit/c2f1e829ea)] - **(SEMVER-MINOR)** **crypto**: discover hashes from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`51aad5a80d`](https://github.com/nodejs/node/commit/51aad5a80d)] - **(SEMVER-MINOR)** **crypto**: enable SIV and GCM-SIV modes in Cipher/Decipher APIs (Filip Skokan) [#​63411](https://github.com/nodejs/node/pull/63411) - \[[`5a46a9acbb`](https://github.com/nodejs/node/commit/5a46a9acbb)] - **crypto**: improve SubtleCrypto.supports() accuracy (Filip Skokan) [#​65222](https://github.com/nodejs/node/pull/65222) - \[[`191ebfb26c`](https://github.com/nodejs/node/commit/191ebfb26c)] - **crypto**: fix public PKCS8 export error (한국) [#​65609](https://github.com/nodejs/node/pull/65609) - \[[`b6d7ed372b`](https://github.com/nodejs/node/commit/b6d7ed372b)] - **crypto**: fix private SPKI export error (Filip Skokan) [#​65550](https://github.com/nodejs/node/pull/65550) - \[[`79509c25a4`](https://github.com/nodejs/node/commit/79509c25a4)] - **crypto**: correct CCM decryption FIPS error message (kyungrae) [#​65450](https://github.com/nodejs/node/pull/65450) - \[[`9adc87bc16`](https://github.com/nodejs/node/commit/9adc87bc16)] - **crypto**: harden X509Certificate state (Filip Skokan) [#​65518](https://github.com/nodejs/node/pull/65518) - \[[`c63aa331b4`](https://github.com/nodejs/node/commit/c63aa331b4)] - **crypto**: optimize key slot caching (Filip Skokan) [#​65518](https://github.com/nodejs/node/pull/65518) - \[[`87daea43a7`](https://github.com/nodejs/node/commit/87daea43a7)] - **crypto**: add null checks for OPENSSL_INIT_new() (Nora Dossche) [#​63457](https://github.com/nodejs/node/pull/63457) - \[[`98ca5e9358`](https://github.com/nodejs/node/commit/98ca5e9358)] - **crypto**: prevent Hmac.digest() from returning uninitialized memory (Matteo Collina) [#​65112](https://github.com/nodejs/node/pull/65112) - \[[`0c090a28cd`](https://github.com/nodejs/node/commit/0c090a28cd)] - **crypto**: avoid throwing CryptoKey brand checks (Filip Skokan) [#​65503](https://github.com/nodejs/node/pull/65503) - \[[`a13cc3f723`](https://github.com/nodejs/node/commit/a13cc3f723)] - **crypto**: avoid throwing KeyObject brand checks (Filip Skokan) [#​65503](https://github.com/nodejs/node/pull/65503) - \[[`b8db0045ef`](https://github.com/nodejs/node/commit/b8db0045ef)] - **deps**: V8: cherry-pick [`ea9c016`](https://github.com/nodejs/node/commit/ea9c016f26ad) (Gundepalli Sravani) [#​66570](https://github.com/nodejs/node/pull/66570) - \[[`ba09b53487`](https://github.com/nodejs/node/commit/ba09b53487)] - **deps**: V8: backport [`c355350`](https://github.com/nodejs/node/commit/c3553509f460) (Jakob Linke) [#​66089](https://github.com/nodejs/node/pull/66089) - \[[`9ce8ef405b`](https://github.com/nodejs/node/commit/9ce8ef405b)] - **deps**: V8: backport [`8901c79`](https://github.com/nodejs/node/commit/8901c793e439) (Toon Verwaest) [#​66089](https://github.com/nodejs/node/pull/66089) - \[[`fb0d0ca289`](https://github.com/nodejs/node/commit/fb0d0ca289)] - **deps**: V8: backport [`0b94a9f`](https://github.com/nodejs/node/commit/0b94a9fd23ba) (Ruan Gustavo) [#​65753](https://github.com/nodejs/node/pull/65753) - \[[`2faca508c0`](https://github.com/nodejs/node/commit/2faca508c0)] - **deps**: update googletest to [`8eff9e3`](https://github.com/nodejs/node/commit/8eff9e336692fc95961e096564f1044c600b881d) (Node.js GitHub Bot) [#​66009](https://github.com/nodejs/node/pull/66009) - \[[`4396c9bffe`](https://github.com/nodejs/node/commit/4396c9bffe)] - **deps**: update googletest to [`283c175`](https://github.com/nodejs/node/commit/283c17563fe7a1111cd7f581aa5d541e8baeff2f) (Node.js GitHub Bot) [#​65833](https://github.com/nodejs/node/pull/65833) - \[[`8a5b12570c`](https://github.com/nodejs/node/commit/8a5b12570c)] - **deps**: update simdjson to 4.6.11 (Node.js GitHub Bot) [#​65834](https://github.com/nodejs/node/pull/65834) - \[[`c47feb09e8`](https://github.com/nodejs/node/commit/c47feb09e8)] - **deps**: update zlib to 1.3.2.1-motley-285e94b (Node.js GitHub Bot) [#​65835](https://github.com/nodejs/node/pull/65835) - \[[`9f0d905286`](https://github.com/nodejs/node/commit/9f0d905286)] - **deps**: upgrade npm to 11.19.1 (npm team) [#​65573](https://github.com/nodejs/node/pull/65573) - \[[`373cd332d8`](https://github.com/nodejs/node/commit/373cd332d8)] - **deps**: update googletest to [`36ba75f`](https://github.com/nodejs/node/commit/36ba75f0ad5383a9759f17f3f72fd4661c72cb6d) (Node.js GitHub Bot) [#​65654](https://github.com/nodejs/node/pull/65654) - \[[`aeed6132a7`](https://github.com/nodejs/node/commit/aeed6132a7)] - **deps**: update simdjson to 4.6.9 (Node.js GitHub Bot) [#​65655](https://github.com/nodejs/node/pull/65655) - \[[`2583571342`](https://github.com/nodejs/node/commit/2583571342)] - **deps**: update zlib to 1.3.2.1-motley-5eb4d7e (Node.js GitHub Bot) [#​65494](https://github.com/nodejs/node/pull/65494) - \[[`d11c65d2f2`](https://github.com/nodejs/node/commit/d11c65d2f2)] - **doc**: add araujogui to collaborators (Guilherme Araújo) [#​66090](https://github.com/nodejs/node/pull/66090) - \[[`0a4a8d602a`](https://github.com/nodejs/node/commit/0a4a8d602a)] - **doc**: fix duplicate 'the' typo in `node_platform.cc` (Muhammad Al-Muzahid) [#​66058](https://github.com/nodejs/node/pull/66058) - \[[`b6538138ef`](https://github.com/nodejs/node/commit/b6538138ef)] - **doc**: clarify sub-1000ms behavior in socket.setKeepAlive (Haram Jeong) [#​65869](https://github.com/nodejs/node/pull/65869) - \[[`d319fa7de4`](https://github.com/nodejs/node/commit/d319fa7de4)] - **doc**: remove obsolete mentioning of cl.exe on windows (Chengzhong Wu) [#​66038](https://github.com/nodejs/node/pull/66038) - \[[`67cb305b59`](https://github.com/nodejs/node/commit/67cb305b59)] - **doc**: note that default signal handling resets the signal mask (Shelley Vohr) [#​65877](https://github.com/nodejs/node/pull/65877) - \[[`160d44e025`](https://github.com/nodejs/node/commit/160d44e025)] - **doc**: clarify QUIC async write backpressure (John Finnerty) [#​65947](https://github.com/nodejs/node/pull/65947) - \[[`ffd47a7ee5`](https://github.com/nodejs/node/commit/ffd47a7ee5)] - **doc**: clarify permission model scope for output paths (Rafael Gonzaga) [#​66004](https://github.com/nodejs/node/pull/66004) - \[[`2e1772a8ab`](https://github.com/nodejs/node/commit/2e1772a8ab)] - **doc**: fill in missing zstd docs (James M Snell) [#​65867](https://github.com/nodejs/node/pull/65867) - \[[`9f88c6f8dc`](https://github.com/nodejs/node/commit/9f88c6f8dc)] - **doc**: add inoway46 as triager (Yuya Inoue) [#​65565](https://github.com/nodejs/node/pull/65565) - \[[`c2620d01f3`](https://github.com/nodejs/node/commit/c2620d01f3)] - **doc**: document windowsHide for child_process.fork (Christopher Buss) [#​65887](https://github.com/nodejs/node/pull/65887) - \[[`6076111e1a`](https://github.com/nodejs/node/commit/6076111e1a)] - **doc**: qualify directory read ordering for native fs (Trivikram Kamat) [#​65868](https://github.com/nodejs/node/pull/65868) - \[[`7bf048a336`](https://github.com/nodejs/node/commit/7bf048a336)] - **doc**: add DOMException section to errors API reference (Avocado) [#​65206](https://github.com/nodejs/node/pull/65206) - \[[`414b6bfa62`](https://github.com/nodejs/node/commit/414b6bfa62)] - **doc**: expand revert commit collaborator instructions (Mike McCready) [#​65848](https://github.com/nodejs/node/pull/65848) - \[[`c8ac91692c`](https://github.com/nodejs/node/commit/c8ac91692c)] - **doc**: note that FreeEnvironment() runs a shared event loop (Shelley Vohr) [#​65691](https://github.com/nodejs/node/pull/65691) - \[[`cc47cc0983`](https://github.com/nodejs/node/commit/cc47cc0983)] - **doc**: clarify security triage dispositions and permission boundaries (Rafael Gonzaga) [#​65436](https://github.com/nodejs/node/pull/65436) - \[[`8b79a71e78`](https://github.com/nodejs/node/commit/8b79a71e78)] - **doc**: fix default limit of maxHeadersCount (Aryn H) [#​65472](https://github.com/nodejs/node/pull/65472) - \[[`56b1252a54`](https://github.com/nodejs/node/commit/56b1252a54)] - **doc**: fix return types for sync methods (Chiang Fong Lee) [#​58575](https://github.com/nodejs/node/pull/58575) - \[[`da0d32a333`](https://github.com/nodejs/node/commit/da0d32a333)] - **doc**: document REPL DEP0185 throws and uncaught-exception behavior (Adrián Estrada) [#​64993](https://github.com/nodejs/node/pull/64993) - \[[`f8ab3619b6`](https://github.com/nodejs/node/commit/f8ab3619b6)] - **doc**: document close() error when in a sqlite callback (Trivikram Kamat) [#​65090](https://github.com/nodejs/node/pull/65090) - \[[`131f1db302`](https://github.com/nodejs/node/commit/131f1db302)] - **doc**: clarify return type of `fs.mkdtemp*` (Antoine du Hamel) [#​65743](https://github.com/nodejs/node/pull/65743) - \[[`7755e98183`](https://github.com/nodejs/node/commit/7755e98183)] - **doc**: update `changelog-maker` instructions for releasing (Juan José) [#​65707](https://github.com/nodejs/node/pull/65707) - \[[`f982a53433`](https://github.com/nodejs/node/commit/f982a53433)] - **doc**: add stability status to `crypto.setEngine` (Antoine du Hamel) [#​65746](https://github.com/nodejs/node/pull/65746) - \[[`17be003f7c`](https://github.com/nodejs/node/commit/17be003f7c)] - **doc**: remove outdated TLS authorized warning (Tim Perry) [#​65597](https://github.com/nodejs/node/pull/65597) - \[[`424002232d`](https://github.com/nodejs/node/commit/424002232d)] - **doc**: fix stale TOC in maintaining-dependencies (greenhead) [#​65523](https://github.com/nodejs/node/pull/65523) - \[[`dddb9b57a5`](https://github.com/nodejs/node/commit/dddb9b57a5)] - **doc**: refactor the AI guidelines (Joyee Cheung) [#​65269](https://github.com/nodejs/node/pull/65269) - \[[`397b58e113`](https://github.com/nodejs/node/commit/397b58e113)] - **doc**: fix triggerAsyncId() comment in async_hooks example (soreavis) [#​64583](https://github.com/nodejs/node/pull/64583) - \[[`338ec94d83`](https://github.com/nodejs/node/commit/338ec94d83)] - **doc**: fix fsPromises.watch overflow value (Matt Radbourne) [#​64605](https://github.com/nodejs/node/pull/64605) - \[[`f18be21b14`](https://github.com/nodejs/node/commit/f18be21b14)] - **doc**: clarify stream direction in options.stdio note (Avocado) [#​65236](https://github.com/nodejs/node/pull/65236) - \[[`f07c6acd8b`](https://github.com/nodejs/node/commit/f07c6acd8b)] - **doc**: clarify signal listener behavior (Som Samantray) [#​65243](https://github.com/nodejs/node/pull/65243) - \[[`8bc17b0c7a`](https://github.com/nodejs/node/commit/8bc17b0c7a)] - **doc**: add test reporter event lifecycle diagram (sangwook) [#​63780](https://github.com/nodejs/node/pull/63780) - \[[`452e7477d4`](https://github.com/nodejs/node/commit/452e7477d4)] - **doc**: discourage AbortSignal cleanup for long-lived resources (Efe Karasakal) [#​64342](https://github.com/nodejs/node/pull/64342) - \[[`acc1578179`](https://github.com/nodejs/node/commit/acc1578179)] - **doc**: deprecate `Server.prototype._listen2` in `node:net` (Antoine du Hamel) [#​65593](https://github.com/nodejs/node/pull/65593) - \[[`e7ed4361d6`](https://github.com/nodejs/node/commit/e7ed4361d6)] - **doc,test**: account for OpenSSL 4.1 behaviours (Filip Skokan) [#​65956](https://github.com/nodejs/node/pull/65956) - \[[`c65fafeab4`](https://github.com/nodejs/node/commit/c65fafeab4)] - **errors**: validate constructor name (Christian Aurich) [#​65607](https://github.com/nodejs/node/pull/65607) - \[[`f6b47938b7`](https://github.com/nodejs/node/commit/f6b47938b7)] - **events**: fix weak listener retention overwrite (Aryan) [#​64024](https://github.com/nodejs/node/pull/64024) - \[[`a27db42c3e`](https://github.com/nodejs/node/commit/a27db42c3e)] - **fs**: coerce FileHandle.read length like fs.read (Xia Chao) [#​65521](https://github.com/nodejs/node/pull/65521) - \[[`f3019b522a`](https://github.com/nodejs/node/commit/f3019b522a)] - **fs**: throw on existing dir in cpSync with errorOnExist (Daijiro Wachi) [#​64124](https://github.com/nodejs/node/pull/64124) - \[[`cd1011458f`](https://github.com/nodejs/node/commit/cd1011458f)] - **fs**: support removing read-only files in rmSync on Windows (Sparsh :)) [#​64453](https://github.com/nodejs/node/pull/64453) - \[[`d659dd8cd8`](https://github.com/nodejs/node/commit/d659dd8cd8)] - **fs**: give directories created by cpSync the source directory's mode (Shelley Vohr) [#​65488](https://github.com/nodejs/node/pull/65488) - \[[`1dfb047293`](https://github.com/nodejs/node/commit/1dfb047293)] - **fs**: handle recursive watch setup races (Filip Skokan) [#​65699](https://github.com/nodejs/node/pull/65699) - \[[`bc431c8413`](https://github.com/nodejs/node/commit/bc431c8413)] - **fs**: apply nocase to literal glob exclude patterns (Yusuke Hayashi) [#​64817](https://github.com/nodejs/node/pull/64817) - \[[`dd5662e641`](https://github.com/nodejs/node/commit/dd5662e641)] - **fs**: do not descend into symlinks for \*\* unless following symlinks (RafaelGSS) [#​65435](https://github.com/nodejs/node/pull/65435) - \[[`ac4cf54292`](https://github.com/nodejs/node/commit/ac4cf54292)] - **fs**: watch directories, not files, in recursive fs.watch fallback (Shelley Vohr) [#​65486](https://github.com/nodejs/node/pull/65486) - \[[`7804bfbd71`](https://github.com/nodejs/node/commit/7804bfbd71)] - **fs**: preserve directory timestamps in cp (Abhinandan Kumar) [#​65540](https://github.com/nodejs/node/pull/65540) - \[[`ba5ca5a1a5`](https://github.com/nodejs/node/commit/ba5ca5a1a5)] - **fs**: fix recursive watch error handling (Filip Skokan) [#​65635](https://github.com/nodejs/node/pull/65635) - \[[`b71c4c0551`](https://github.com/nodejs/node/commit/b71c4c0551)] - **fs**: fix rmSync error messages for non-ASCII paths (Yeaseen) [#​61233](https://github.com/nodejs/node/pull/61233) - \[[`53b4700892`](https://github.com/nodejs/node/commit/53b4700892)] - **http**: don't destroy socket after request completes (Barath Raj) [#​65952](https://github.com/nodejs/node/pull/65952) - \[[`96d4c23f17`](https://github.com/nodejs/node/commit/96d4c23f17)] - **http**: fast-forward teardown of unread messages (Matteo Collina) [#​65732](https://github.com/nodejs/node/pull/65732) - \[[`742b4bf5a6`](https://github.com/nodejs/node/commit/742b4bf5a6)] - **http**: coalesce chunked writes during auto-corking (GetThatCookie) [#​64987](https://github.com/nodejs/node/pull/64987) - \[[`8921108175`](https://github.com/nodejs/node/commit/8921108175)] - **http2**: settle pending write callbacks on destroy (Matteo Collina) [#​66016](https://github.com/nodejs/node/pull/66016) - \[[`9a2f77a3fc`](https://github.com/nodejs/node/commit/9a2f77a3fc)] - **http2**: fix onread assert when destroying session from stream handler (Sankalp Thakur) [#​65116](https://github.com/nodejs/node/pull/65116) - \[[`99e41eb43a`](https://github.com/nodejs/node/commit/99e41eb43a)] - **http2**: error for incomplete reads on RST, auto-drain, deprecate aborted (Tim Perry) [#​63249](https://github.com/nodejs/node/pull/63249) - \[[`d520b9601c`](https://github.com/nodejs/node/commit/d520b9601c)] - **http2**: fix write deadlock exposed by larger window sizes (Tim Perry) [#​65440](https://github.com/nodejs/node/pull/65440) - \[[`86b2497aae`](https://github.com/nodejs/node/commit/86b2497aae)] - **http2**: fix async context loss when trailers carry END_STREAM (Orgad Shaneh) [#​63814](https://github.com/nodejs/node/pull/63814) - \[[`536ccc7daf`](https://github.com/nodejs/node/commit/536ccc7daf)] - **https**: limit proxy CONNECT response headers (Matteo Collina) [#​64545](https://github.com/nodejs/node/pull/64545) - \[[`fe6147832b`](https://github.com/nodejs/node/commit/fe6147832b)] - **inspector**: fix abort when two Environments own the inspector (Shelley Vohr) [#​65877](https://github.com/nodejs/node/pull/65877) - \[[`843a27782a`](https://github.com/nodejs/node/commit/843a27782a)] - **inspector**: fix crash when the IsolateData has no platform (Shelley Vohr) [#​65818](https://github.com/nodejs/node/pull/65818) - \[[`3f0b6d3308`](https://github.com/nodejs/node/commit/3f0b6d3308)] - **lib**: avoid repeat internal receiver checks (Filip Skokan) [#​65910](https://github.com/nodejs/node/pull/65910) - \[[`0039479b4a`](https://github.com/nodejs/node/commit/0039479b4a)] - **lib**: fix shared buffer growability validation (Filip Skokan) [#​65845](https://github.com/nodejs/node/pull/65845) - \[[`e7907130ae`](https://github.com/nodejs/node/commit/e7907130ae)] - **lib**: use Web IDL interface brand checks (Filip Skokan) [#​65846](https://github.com/nodejs/node/pull/65846) - \[[`7ae085552b`](https://github.com/nodejs/node/commit/7ae085552b)] - **lib**: fix AbortSignal.any() abort propagation (Yuya Inoue) [#​66014](https://github.com/nodejs/node/pull/66014) - \[[`01032f4fdc`](https://github.com/nodejs/node/commit/01032f4fdc)] - **lib**: fix for FileHandle.readableWebStream (Patrick Dähne) [#​58842](https://github.com/nodejs/node/pull/58842) - \[[`60a9a28206`](https://github.com/nodejs/node/commit/60a9a28206)] - **lib**: avoid unsafe array iteration in cli table (Donghoon Kang) [#​65838](https://github.com/nodejs/node/pull/65838) - \[[`230a7fcef0`](https://github.com/nodejs/node/commit/230a7fcef0)] - **lib**: optimize internal Web IDL dictionaries (Filip Skokan) [#​65857](https://github.com/nodejs/node/pull/65857) - \[[`7cc02b14ec`](https://github.com/nodejs/node/commit/7cc02b14ec)] - **lib**: validate sequence iterator objects (Filip Skokan) [#​65844](https://github.com/nodejs/node/pull/65844) - \[[`c2bb3aeccc`](https://github.com/nodejs/node/commit/c2bb3aeccc)] - **lib**: defer source map payload decoding until first use (Shelley Vohr) [#​65490](https://github.com/nodejs/node/pull/65490) - \[[`c4b390cf17`](https://github.com/nodejs/node/commit/c4b390cf17)] - **lib**: optimize async context frame activation (Tim Perry) [#​65519](https://github.com/nodejs/node/pull/65519) - \[[`3e4fc50a4f`](https://github.com/nodejs/node/commit/3e4fc50a4f)] - **lib**: use validateArray for array arguments (JunHwan Choi) [#​65344](https://github.com/nodejs/node/pull/65344) - \[[`b351ac9cd4`](https://github.com/nodejs/node/commit/b351ac9cd4)] - **meta**: bump step-security/harden-runner from 2.21.0 to 2.21.1 (dependabot\[bot]) [#​66044](https://github.com/nodejs/node/pull/66044) - \[[`693e890fec`](https://github.com/nodejs/node/commit/693e890fec)] - **meta**: bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66046](https://github.com/nodejs/node/pull/66046) - \[[`9c2abc13c2`](https://github.com/nodejs/node/commit/9c2abc13c2)] - **meta**: bump github/codeql-action/init from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66048](https://github.com/nodejs/node/pull/66048) - \[[`b3c5c2b91d`](https://github.com/nodejs/node/commit/b3c5c2b91d)] - **meta**: bump github/codeql-action/analyze from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66049](https://github.com/nodejs/node/pull/66049) - \[[`2428b13b02`](https://github.com/nodejs/node/commit/2428b13b02)] - **meta**: bump github/codeql-action/autobuild from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66050](https://github.com/nodejs/node/pull/66050) - \[[`eff5d15041`](https://github.com/nodejs/node/commit/eff5d15041)] - **meta**: add joyeecheung as v8 currency strategic initiative champion (Joyee Cheung) [#​65965](https://github.com/nodejs/node/pull/65965) - \[[`aa549fed0d`](https://github.com/nodejs/node/commit/aa549fed0d)] - **meta**: expand on collaborator restoration process (Chengzhong Wu) [#​65962](https://github.com/nodejs/node/pull/65962) - \[[`593b40eb2b`](https://github.com/nodejs/node/commit/593b40eb2b)] - **meta**: add web-standards as webidl owners (Filip Skokan) [#​65856](https://github.com/nodejs/node/pull/65856) - \[[`e711d3fef3`](https://github.com/nodejs/node/commit/e711d3fef3)] - **meta**: bump actions/checkout from 7.0.0 to 7.0.1 (dependabot\[bot]) [#​65718](https://github.com/nodejs/node/pull/65718) - \[[`0fc8a38f5b`](https://github.com/nodejs/node/commit/0fc8a38f5b)] - **meta**: cleanup targos emeritus changes (Antoine du Hamel) [#​65738](https://github.com/nodejs/node/pull/65738) - \[[`2ca2fd566d`](https://github.com/nodejs/node/commit/2ca2fd566d)] - **meta**: bump github/codeql-action/init from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65714](https://github.com/nodejs/node/pull/65714) - \[[`325709818e`](https://github.com/nodejs/node/commit/325709818e)] - **meta**: bump github/codeql-action/autobuild from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65717](https://github.com/nodejs/node/pull/65717) - \[[`8481d22f72`](https://github.com/nodejs/node/commit/8481d22f72)] - **meta**: bump actions/setup-node from 6.4.0 to 7.0.0 (dependabot\[bot]) [#​65720](https://github.com/nodejs/node/pull/65720) - \[[`cd2bd5d9fd`](https://github.com/nodejs/node/commit/cd2bd5d9fd)] - **meta**: bump step-security/harden-runner from 2.20.0 to 2.21.0 (dependabot\[bot]) [#​65721](https://github.com/nodejs/node/pull/65721) - \[[`fdec747105`](https://github.com/nodejs/node/commit/fdec747105)] - **meta**: bump github/codeql-action/upload-sarif from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65722](https://github.com/nodejs/node/pull/65722) - \[[`34c2fca088`](https://github.com/nodejs/node/commit/34c2fca088)] - **meta**: bump github/codeql-action/analyze from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65723](https://github.com/nodejs/node/pull/65723) - \[[`46d4549938`](https://github.com/nodejs/node/commit/46d4549938)] - **meta**: document collaborator automation (Filip Skokan) [#​65671](https://github.com/nodejs/node/pull/65671) - \[[`a7f8de6362`](https://github.com/nodejs/node/commit/a7f8de6362)] - **(SEMVER-MINOR)** **net**: support sending net.BoundSocket to threads and child processes (Guy Bedford) [#​64725](https://github.com/nodejs/node/pull/64725) - \[[`466f1f8e62`](https://github.com/nodejs/node/commit/466f1f8e62)] - **net**: fix BlockList.fromJSON for IPv4-mapped IPv6 rules (Daijiro Wachi) [#​64125](https://github.com/nodejs/node/pull/64125) - \[[`cd04cb10d6`](https://github.com/nodejs/node/commit/cd04cb10d6)] - **net**: recognize bare IPv6 loopback addresses in isLoopback (Daijiro Wachi) [#​63619](https://github.com/nodejs/node/pull/63619) - \[[`d983942636`](https://github.com/nodejs/node/commit/d983942636)] - **node-api**: make object property arrays const (Yilong Li) [#​65621](https://github.com/nodejs/node/pull/65621) - \[[`cc124394cc`](https://github.com/nodejs/node/commit/cc124394cc)] - **path**: remove `StringPrototypeCharCodeAt` from some methods of `posix` (Wiyeong Seo) [#​54668](https://github.com/nodejs/node/pull/54668) - \[[`60c3eb61bd`](https://github.com/nodejs/node/commit/60c3eb61bd)] - **(SEMVER-MINOR)** **perf_hooks**: implement SlidingWindowHistogram (James M Snell) [#​65825](https://github.com/nodejs/node/pull/65825) - \[[`6b3e6f9d5c`](https://github.com/nodejs/node/commit/6b3e6f9d5c)] - **(SEMVER-MINOR)** **perf_hooks**: implement qrde analysis support in Histogram (James M Snell) [#​65806](https://github.com/nodejs/node/pull/65806) - \[[`8aa870940c`](https://github.com/nodejs/node/commit/8aa870940c)] - **perf_hooks**: reuse buffer for uv metrics (Donghoon Kang) [#​65985](https://github.com/nodejs/node/pull/65985) - \[[`9cfbfae660`](https://github.com/nodejs/node/commit/9cfbfae660)] - **perf_hooks**: validate import normalization offset (Matteo Collina) [#​65950](https://github.com/nodejs/node/pull/65950) - \[[`75456a3512`](https://github.com/nodejs/node/commit/75456a3512)] - **(SEMVER-MINOR)** **perf_hooks**: implement Histogram meanCI API (James M Snell) [#​65606](https://github.com/nodejs/node/pull/65606) - \[[`127cb31864`](https://github.com/nodejs/node/commit/127cb31864)] - **perf_hooks**: add missing resource timing attributes (greenhead) [#​65017](https://github.com/nodejs/node/pull/65017) - \[[`72d1b40c56`](https://github.com/nodejs/node/commit/72d1b40c56)] - **(SEMVER-MINOR)** **perf_hooks**: add CBOR export/import for histogram exchange (James M Snell) [#​65434](https://github.com/nodejs/node/pull/65434) - \[[`847fe4d049`](https://github.com/nodejs/node/commit/847fe4d049)] - **permission**: block FileHandle fsync and fdatasync (Rafael Gonzaga) [#​65431](https://github.com/nodejs/node/pull/65431) - \[[`fa9188bd63`](https://github.com/nodejs/node/commit/fa9188bd63)] - **quic**: fix two small bugs in HTTP/3 stream internals (Tim Perry) [#​65970](https://github.com/nodejs/node/pull/65970) - \[[`ee80beaa9f`](https://github.com/nodejs/node/commit/ee80beaa9f)] - **quic**: fix crash in onStreamClose (Marten Richter) [#​65861](https://github.com/nodejs/node/pull/65861) - \[[`98486dd764`](https://github.com/nodejs/node/commit/98486dd764)] - **quic**: reject zero addressLRUSize (Christian Aurich) [#​65827](https://github.com/nodejs/node/pull/65827) - \[[`97516fc256`](https://github.com/nodejs/node/commit/97516fc256)] - **quic**: stop guarding ngtcp2_recv_stop_sending callback field (René) [#​65688](https://github.com/nodejs/node/pull/65688) - \[[`024bef25eb`](https://github.com/nodejs/node/commit/024bef25eb)] - **quic**: remove unused fin flag from blob reader wakeup (trivenay) [#​65315](https://github.com/nodejs/node/pull/65315) - \[[`5468337456`](https://github.com/nodejs/node/commit/5468337456)] - **quic**: release stream arenas before cleanup (Trivikram Kamat) [#​65410](https://github.com/nodejs/node/pull/65410) - \[[`a794e36970`](https://github.com/nodejs/node/commit/a794e36970)] - **sqlite**: throw on invalid URL path instead of abort (Guilherme Araújo) [#​66026](https://github.com/nodejs/node/pull/66026) - \[[`f58a55b8d0`](https://github.com/nodejs/node/commit/f58a55b8d0)] - **sqlite**: add diagnostic channel (Guilherme Araújo) [#​62241](https://github.com/nodejs/node/pull/62241) - \[[`be849bc6af`](https://github.com/nodejs/node/commit/be849bc6af)] - **sqlite**: reject connection access from authorizer callbacks (Trevor Burnham) [#​65156](https://github.com/nodejs/node/pull/65156) - \[[`41161dda87`](https://github.com/nodejs/node/commit/41161dda87)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype.close() (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`adbc757d70`](https://github.com/nodejs/node/commit/adbc757d70)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype\[Symbol.dispose]\() (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`b7b18fdbc9`](https://github.com/nodejs/node/commit/b7b18fdbc9)] - **sqlite**: run backup completion in callback scope (Filip Skokan) [#​65666](https://github.com/nodejs/node/pull/65666) - \[[`59827acd7f`](https://github.com/nodejs/node/commit/59827acd7f)] - **sqlite**: isolate applyChangeset filter errors (Trivikram Kamat) [#​64823](https://github.com/nodejs/node/pull/64823) - \[[`5a01df2d15`](https://github.com/nodejs/node/commit/5a01df2d15)] - **sqlite**: reject deserialize() while in a callback (Trivikram Kamat) [#​64796](https://github.com/nodejs/node/pull/64796) - \[[`c9b6e75a2e`](https://github.com/nodejs/node/commit/c9b6e75a2e)] - **sqlite**: refactor error helpers and user function pointers (Ali Hassan) [#​62794](https://github.com/nodejs/node/pull/62794) - \[[`d4eb6c62a9`](https://github.com/nodejs/node/commit/d4eb6c62a9)] - **sqlite**: prevent database close during callbacks (Matteo Collina) [#​64743](https://github.com/nodejs/node/pull/64743) - \[[`83b3431c25`](https://github.com/nodejs/node/commit/83b3431c25)] - **src**: detach cppgc wrappers from their Realm before it is freed (Shelley Vohr) [#​65778](https://github.com/nodejs/node/pull/65778) - \[[`13ed7e35e7`](https://github.com/nodejs/node/commit/13ed7e35e7)] - **src**: list scripts when `--run` has no command (James Ross) [#​64606](https://github.com/nodejs/node/pull/64606) - \[[`0f62f2b2df`](https://github.com/nodejs/node/commit/0f62f2b2df)] - **src**: print exception thrown during primordial initialization (Joyee Cheung) [#​65991](https://github.com/nodejs/node/pull/65991) - \[[`70117640f7`](https://github.com/nodejs/node/commit/70117640f7)] - **src**: don't kill own process group on failed spawn (Lazizbek Ergashev) [#​65054](https://github.com/nodejs/node/pull/65054) - \[[`64649abfd4`](https://github.com/nodejs/node/commit/64649abfd4)] - **src**: keep the first snapshot blob alive for later isolates (Shelley Vohr) [#​65779](https://github.com/nodejs/node/pull/65779) - \[[`3c814e8c3c`](https://github.com/nodejs/node/commit/3c814e8c3c)] - **src**: fix Stop() terminating the next Environment on the isolate (Shelley Vohr) [#​65819](https://github.com/nodejs/node/pull/65819) - \[[`a3ababcebb`](https://github.com/nodejs/node/commit/a3ababcebb)] - **src**: fix null pointer call when running without a startup snapshot (Shelley Vohr) [#​65820](https://github.com/nodejs/node/pull/65820) - \[[`7331f5cfcc`](https://github.com/nodejs/node/commit/7331f5cfcc)] - **src**: stop leaking a CppHeap in CommonEnvironmentSetup (Shelley Vohr) [#​65792](https://github.com/nodejs/node/pull/65792) - \[[`5570a84048`](https://github.com/nodejs/node/commit/5570a84048)] - **src**: fix use-after-free in CleanupHookThunkRun (Caleb Everett) [#​65630](https://github.com/nodejs/node/pull/65630) - \[[`abe1b673e9`](https://github.com/nodejs/node/commit/abe1b673e9)] - **src**: keep global list of addon-provided cleanup hooks (Anna Henningsen) [#​63985](https://github.com/nodejs/node/pull/63985) - \[[`2203ac9382`](https://github.com/nodejs/node/commit/2203ac9382)] - **src**: fix startup snapshot reproducibility of InternalFieldInfo (Chengzhong Wu) [#​65684](https://github.com/nodejs/node/pull/65684) - \[[`b282765d99`](https://github.com/nodejs/node/commit/b282765d99)] - **src**: fix live lock between environments with blocked requests (Ilyas Shabi) [#​65520](https://github.com/nodejs/node/pull/65520) - \[[`61ca3ba93c`](https://github.com/nodejs/node/commit/61ca3ba93c)] - **src**: apply IsolateSettings when using a snapshot (Shelley Vohr) [#​65407](https://github.com/nodejs/node/pull/65407) - \[[`33b8d6e10f`](https://github.com/nodejs/node/commit/33b8d6e10f)] - **src**: add re-entrancy guard to TriggerUncaughtException (Temuulen Undrakhbayar) [#​64327](https://github.com/nodejs/node/pull/64327) - \[[`49232db71e`](https://github.com/nodejs/node/commit/49232db71e)] - **src**: reuse cached strings in CompileSerializeMain (agape1225) [#​65453](https://github.com/nodejs/node/pull/65453) - \[[`e3f52b80a5`](https://github.com/nodejs/node/commit/e3f52b80a5)] - **src**: report libuv error when openAsBlob cannot stat (Paul Bouchon) [#​65517](https://github.com/nodejs/node/pull/65517) - \[[`42a5a19027`](https://github.com/nodejs/node/commit/42a5a19027)] - **src**: shave about 20 bytes off each TLSWrap instance (James M Snell) [#​65144](https://github.com/nodejs/node/pull/65144) - \[[`a06bb51e22`](https://github.com/nodejs/node/commit/a06bb51e22)] - **src**: use UTF-8 for task runner filesystem paths (Archkon) [#​64868](https://github.com/nodejs/node/pull/64868) - \[[`241339f072`](https://github.com/nodejs/node/commit/241339f072)] - **(SEMVER-MINOR)** **src,lib**: add util.markPromiseAsHandled (James M Snell) [#​65805](https://github.com/nodejs/node/pull/65805) - \[[`1260642ace`](https://github.com/nodejs/node/commit/1260642ace)] - **stream**: destroy Duplex.from async function on early return (Aman Chadha(IVIXMMI)) [#​65963](https://github.com/nodejs/node/pull/65963) - \[[`5f06defdbd`](https://github.com/nodejs/node/commit/5f06defdbd)] - **stream**: make share budget failures detach before throwing (James M Snell) [#​66028](https://github.com/nodejs/node/pull/66028) - \[[`d1c60d898d`](https://github.com/nodejs/node/commit/d1c60d898d)] - **stream**: update broadcast to retain buffered data with zero consumers (James M Snell) [#​66028](https://github.com/nodejs/node/pull/66028) - \[[`bbb00558c5`](https://github.com/nodejs/node/commit/bbb00558c5)] - **stream**: avoid promise allocation for parked transform writes (Matteo Collina) [#​65625](https://github.com/nodejs/node/pull/65625) - \[[`3216bc3912`](https://github.com/nodejs/node/commit/3216bc3912)] - **stream**: keep webstream stream states in fast-mode objects (Matteo Collina) [#​65625](https://github.com/nodejs/node/pull/65625) - \[[`70c1415686`](https://github.com/nodejs/node/commit/70c1415686)] - **stream**: reject closed only after sink abort settles (Lazizbek Ergashev) [#​65727](https://github.com/nodejs/node/pull/65727) - \[[`f8737b8ee5`](https://github.com/nodejs/node/commit/f8737b8ee5)] - **stream**: fix ERR_INVALID_STATE when cancelling Readable.toWeb() (Richard Scarrott) [#​62773](https://github.com/nodejs/node/pull/62773) - \[[`faa16f671c`](https://github.com/nodejs/node/commit/faa16f671c)] - **stream**: amortize writable buffer compaction (Gürgün Dayıoğlu) [#​65847](https://github.com/nodejs/node/pull/65847) - \[[`6262e0b8c6`](https://github.com/nodejs/node/commit/6262e0b8c6)] - **stream**: create write request objects lazily (Matteo Collina) [#​64455](https://github.com/nodejs/node/pull/64455) - \[[`0f0566de15`](https://github.com/nodejs/node/commit/0f0566de15)] - **stream**: allocate stream read buffers from a slab (Matteo Collina) [#​64455](https://github.com/nodejs/node/pull/64455) - \[[`02c776a7c6`](https://github.com/nodejs/node/commit/02c776a7c6)] - **stream**: ensure that stateful transforms preserve this (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`4b29051971`](https://github.com/nodejs/node/commit/4b29051971)] - **stream**: fix nested async flushing with infinite sources (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`2e54186d97`](https://github.com/nodejs/node/commit/2e54186d97)] - **stream**: ensure from() observes returned rejecting promise correctly (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`fd68d5ca6a`](https://github.com/nodejs/node/commit/fd68d5ca6a)] - **stream**: apply source normalization once at call time (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`49ee85b462`](https://github.com/nodejs/node/commit/49ee85b462)] - **stream**: make pipeTo source normalization independent of Writer (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`d7d0440f08`](https://github.com/nodejs/node/commit/d7d0440f08)] - **stream**: pre-aborted pipeTo now applies dest failure handling (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`6d8e643ef3`](https://github.com/nodejs/node/commit/6d8e643ef3)] - **stream**: ensure async dispoal after endSync awaits for drain (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`a082916c00`](https://github.com/nodejs/node/commit/a082916c00)] - **stream**: ensure factory signals remain active through closing (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`38829295a7`](https://github.com/nodejs/node/commit/38829295a7)] - **stream**: skip unobserved 'readable' emission at EOF (Matteo Collina) [#​65749](https://github.com/nodejs/node/pull/65749) - \[[`d535859c22`](https://github.com/nodejs/node/commit/d535859c22)] - **stream**: avoid per-chunk promises in webstream adapters (Matteo Collina) [#​65548](https://github.com/nodejs/node/pull/65548) - \[[`80568f6818`](https://github.com/nodejs/node/commit/80568f6818)] - **stream**: address stream/iter review feedback (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`6952928f68`](https://github.com/nodejs/node/commit/6952928f68)] - **stream**: replace object sentinel with symbol (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`9c22c4124c`](https://github.com/nodejs/node/commit/9c22c4124c)] - **stream**: cancel active stream/iter pulls (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`24d87990cf`](https://github.com/nodejs/node/commit/24d87990cf)] - **stream**: fix merge settlement tagging and falsy error tracking (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`1e215c4b51`](https://github.com/nodejs/node/commit/1e215c4b51)] - **stream**: ensure full-close semantics when closed (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`f499d6fadf`](https://github.com/nodejs/node/commit/f499d6fadf)] - **stream**: fixup writer to terminate on consumer return/throw (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`2130738033`](https://github.com/nodejs/node/commit/2130738033)] - **stream**: ensure iterator cleanup on done, reject, etc (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`748adc6275`](https://github.com/nodejs/node/commit/748adc6275)] - **stream**: fixup cancelation handling in pull() (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`47b3f6a1fa`](https://github.com/nodejs/node/commit/47b3f6a1fa)] - **stream**: fix early drain after Utf8Stream reopen (Matteo Collina) [#​65633](https://github.com/nodejs/node/pull/65633) - \[[`6dab5412cf`](https://github.com/nodejs/node/commit/6dab5412cf)] - **test**: skip RSA-PSS keygen deprecation tests with BoringSSL (Shelley Vohr) [#​65808](https://github.com/nodejs/node/pull/65808) - \[[`95d9a25b61`](https://github.com/nodejs/node/commit/95d9a25b61)] - **test**: consolidate crypto provider cache coverage (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`612db6d5b2`](https://github.com/nodejs/node/commit/612db6d5b2)] - **test**: deflake user timing WPT assertions (Filip Skokan) [#​66036](https://github.com/nodejs/node/pull/66036) - \[[`61a73d31eb`](https://github.com/nodejs/node/commit/61a73d31eb)] - **test**: fix RSA/DSA wrong-passphrase flake (Filip Skokan) [#​65983](https://github.com/nodejs/node/pull/65983) - \[[`d9f4a3ee3e`](https://github.com/nodejs/node/commit/d9f4a3ee3e)] - **test**: reuse fixed primes in DH tests (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`a0fd0a8bd6`](https://github.com/nodejs/node/commit/a0fd0a8bd6)] - **test**: use named parameters in DH stress test (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`810a6b00ee`](https://github.com/nodejs/node/commit/810a6b00ee)] - **test**: update tests to run with OpenSSL >= 3.0 FIPS mode (Filip Skokan) [#​64960](https://github.com/nodejs/node/pull/64960) - \[[`dc6b9ba5b2`](https://github.com/nodejs/node/commit/dc6b9ba5b2)] - **test**: deflake test-run-watch-cwd-isolation-none-\* (Antoine du Hamel) [#​66035](https://github.com/nodejs/node/pull/66035) - \[[`0f27bd2459`](https://github.com/nodejs/node/commit/0f27bd2459)] - **test**: unskip `test-watch-create-isolation-none` (Antoine du Hamel) [#​66041](https://github.com/nodejs/node/pull/66041) - \[[`1019f624f3`](https://github.com/nodejs/node/commit/1019f624f3)] - **test**: deflake util.throttle tests (Filip Skokan) [#​66034](https://github.com/nodejs/node/pull/66034) - \[[`b4a6719f37`](https://github.com/nodejs/node/commit/b4a6719f37)] - **(SEMVER-MINOR)** **test**: expand histogram test coverage (James M Snell) [#​65825](https://github.com/nodejs/node/pull/65825) - \[[`047d7c53d2`](https://github.com/nodejs/node/commit/047d7c53d2)] - **test**: implement low-risk test optimizations (James M Snell) [#​65926](https://github.com/nodejs/node/pull/65926) - \[[`33775d2bbb`](https://github.com/nodejs/node/commit/33775d2bbb)] - **test**: prevent parser reuse across close scenarios (Filip Skokan) [#​66017](https://github.com/nodejs/node/pull/66017) - \[[`b8c5283cbc`](https://github.com/nodejs/node/commit/b8c5283cbc)] - **test**: fix stderr Buffer assertion in exec encoding test (greenhead) [#​66008](https://github.com/nodejs/node/pull/66008) - \[[`13a2982002`](https://github.com/nodejs/node/commit/13a2982002)] - **test**: improve sequential test performance (James M Snell) [#​65928](https://github.com/nodejs/node/pull/65928) - \[[`a578933da0`](https://github.com/nodejs/node/commit/a578933da0)] - **test**: overlap SLH-DSA signature checks (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`bfdf20729d`](https://github.com/nodejs/node/commit/bfdf20729d)] - **test**: unref cancelled broadcast source timer (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`b29154d471`](https://github.com/nodejs/node/commit/b29154d471)] - **test**: collect timeout signals explicitly (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`384d4fe3ea`](https://github.com/nodejs/node/commit/384d4fe3ea)] - **test**: skip retries in DNS timeout coverage (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`c7323843f4`](https://github.com/nodejs/node/commit/c7323843f4)] - **test**: synchronize ordered runner events (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`625290573a`](https://github.com/nodejs/node/commit/625290573a)] - **test**: avoid idle HTTP/HTTPS connections (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`2bde68398f`](https://github.com/nodejs/node/commit/2bde68398f)] - **test**: close WebAssembly test HTTP servers (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`4c702e401b`](https://github.com/nodejs/node/commit/4c702e401b)] - **test**: deflake node-api test-free-called (Christian Aurich) [#​65948](https://github.com/nodejs/node/pull/65948) - \[[`0b6d945ebc`](https://github.com/nodejs/node/commit/0b6d945ebc)] - **test**: skip C++ symbols in tick-processor-arguments (Philipp Dunkel) [#​65906](https://github.com/nodejs/node/pull/65906) - \[[`e04210b383`](https://github.com/nodejs/node/commit/e04210b383)] - **test**: try fixing windows build replacing WMIC (James M Snell) [#​65949](https://github.com/nodejs/node/pull/65949) - \[[`aed73444de`](https://github.com/nodejs/node/commit/aed73444de)] - **test**: fix flaky cleanup in http2 test (Tim Perry) [#​65701](https://github.com/nodejs/node/pull/65701) - \[[`22f47ff728`](https://github.com/nodejs/node/commit/22f47ff728)] - **test**: update WPT WebCrypto, WebIDL and interfaces (Filip Skokan) [#​65679](https://github.com/nodejs/node/pull/65679) - \[[`f2af511a24`](https://github.com/nodejs/node/commit/f2af511a24)] - **test**: zero-fill buffers before the string length limit check (Christian Aurich) [#​65755](https://github.com/nodejs/node/pull/65755) - \[[`a28aad9960`](https://github.com/nodejs/node/commit/a28aad9960)] - **test**: update WPT for url to [`c23755a`](https://github.com/nodejs/node/commit/c23755a144) (Node.js GitHub Bot) [#​65651](https://github.com/nodejs/node/pull/65651) - \[[`ba65bb149a`](https://github.com/nodejs/node/commit/ba65bb149a)] - **test**: fix recursive fs.watch error fixture (Filip Skokan) [#​65683](https://github.com/nodejs/node/pull/65683) - \[[`f3b9f132b1`](https://github.com/nodejs/node/commit/f3b9f132b1)] - **test**: update streams WPT (Jeong SeokChan) [#​65638](https://github.com/nodejs/node/pull/65638) - \[[`d2e0f2d3bd`](https://github.com/nodejs/node/commit/d2e0f2d3bd)] - **test**: deflake fastutf8stream destroy and reopen tests (Christian Aurich) [#​65554](https://github.com/nodejs/node/pull/65554) - \[[`7b5896c136`](https://github.com/nodejs/node/commit/7b5896c136)] - **test**: cover Readable.from() sync iterator errors (jakecastelli) [#​65515](https://github.com/nodejs/node/pull/65515) - \[[`66eafad642`](https://github.com/nodejs/node/commit/66eafad642)] - **test**: document WPT runner workflows (Filip Skokan) [#​65510](https://github.com/nodejs/node/pull/65510) - \[[`2e2dc0f556`](https://github.com/nodejs/node/commit/2e2dc0f556)] - **test**: simplify test-worker-heap-profile.js (Donghoon Kang) [#​65372](https://github.com/nodejs/node/pull/65372) - \[[`2e57caac46`](https://github.com/nodejs/node/commit/2e57caac46)] - **test**: prefer in-memory databases in sqlite tests (Paul Bouchon) [#​64701](https://github.com/nodejs/node/pull/64701) - \[[`cef908596e`](https://github.com/nodejs/node/commit/cef908596e)] - **test**: fix typo from funciton to function (parkhojeong) [#​63403](https://github.com/nodejs/node/pull/63403) - \[[`4c7bbd4182`](https://github.com/nodejs/node/commit/4c7bbd4182)] - **test**: widen the gap in the resolver maxTimeout comparison (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`25c81c9eff`](https://github.com/nodejs/node/commit/25c81c9eff)] - **test**: fix the thread-spawn handshake in the WASI threads fixture (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`cab5dcedbe`](https://github.com/nodejs/node/commit/cab5dcedbe)] - **test**: only count restarts after the write in watch emit-restarted test (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`db0ca93e94`](https://github.com/nodejs/node/commit/db0ca93e94)] - **test**: ignore tunnel resets in proxy invalid-char-in-url test (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`1f0087040a`](https://github.com/nodejs/node/commit/1f0087040a)] - **test**: handle EPIPE in closed channel test (Christian Aurich) [#​65770](https://github.com/nodejs/node/pull/65770) - \[[`ed4e5df638`](https://github.com/nodejs/node/commit/ed4e5df638)] - **test**: deflake test-runner-coverage (Christian Aurich) [#​65728](https://github.com/nodejs/node/pull/65728) - \[[`48ecb16909`](https://github.com/nodejs/node/commit/48ecb16909)] - **test**: set type=none on IBM i for empty source (Abdirahim Musse) [#​65545](https://github.com/nodejs/node/pull/65545) - \[[`554a3fba98`](https://github.com/nodejs/node/commit/554a3fba98)] - **test**: deflake WASI poll timing checks (Filip Skokan) [#​65672](https://github.com/nodejs/node/pull/65672) - \[[`91b5389430`](https://github.com/nodejs/node/commit/91b5389430)] - **test**: skip `fs-watch-recursive-delete-race` on AIX (Antoine du Hamel) [#​65698](https://github.com/nodejs/node/pull/65698) - \[[`4ed0c8cc6c`](https://github.com/nodejs/node/commit/4ed0c8cc6c)] - **test**: deflake test-inspect-async-hook-setup-at-inspect (Christian Aurich) [#​65584](https://github.com/nodejs/node/pull/65584) - \[[`500b98cc7d`](https://github.com/nodejs/node/commit/500b98cc7d)] - **test**: deflake test-watch-mode-restart-esm-loading-error (Christian Aurich) [#​65623](https://github.com/nodejs/node/pull/65623) - \[[`099c20fcbd`](https://github.com/nodejs/node/commit/099c20fcbd)] - **test**: avoid orphaned child on Windows abort test (Kirill Saied) [#​65451](https://github.com/nodejs/node/pull/65451) - \[[`fc9364fe55`](https://github.com/nodejs/node/commit/fc9364fe55)] - **test**: riscv64: skip node-api sea test (Stewart X Addison) [#​65569](https://github.com/nodejs/node/pull/65569) - \[[`c9d6b5f731`](https://github.com/nodejs/node/commit/c9d6b5f731)] - **test**: mark platform-specific tests as flaky (Filip Skokan) [#​65562](https://github.com/nodejs/node/pull/65562) - \[[`cb93d40549`](https://github.com/nodejs/node/commit/cb93d40549)] - **test,benchmark**: use OpenSSL feature helpers (Filip Skokan) [#​65762](https://github.com/nodejs/node/pull/65762) - \[[`b4b859319d`](https://github.com/nodejs/node/commit/b4b859319d)] - **test_runner**: avoid reusing v8 serializers (Yuya Inoue) [#​65951](https://github.com/nodejs/node/pull/65951) - \[[`b3766225e1`](https://github.com/nodejs/node/commit/b3766225e1)] - **test_runner**: fix quote escaping in JUnit (Jihwan) [#​65971](https://github.com/nodejs/node/pull/65971) - \[[`ec37f934db`](https://github.com/nodejs/node/commit/ec37f934db)] - **tls**: propagate singleUse to the secure context (Carlos Vinicius) [#​66025](https://github.com/nodejs/node/pull/66025) - \[[`21aec3f286`](https://github.com/nodejs/node/commit/21aec3f286)] - **tls**: defer re-entrant calls to SSL state machine from JS (Tim Perry) [#​65105](https://github.com/nodejs/node/pull/65105) - \[[`ffd3de2831`](https://github.com/nodejs/node/commit/ffd3de2831)] - **tls**: read the peer certificate chain without consuming it (Tony Gies) [#​65602](https://github.com/nodejs/node/pull/65602) - \[[`3481ea3c43`](https://github.com/nodejs/node/commit/3481ea3c43)] - **tls**: don't trigger SNICallback or OCSPRequest from the TLS lib stack (Tim Perry) [#​64827](https://github.com/nodejs/node/pull/64827) - \[[`d75957f0c8`](https://github.com/nodejs/node/commit/d75957f0c8)] - **tls**: drop hand-rolled TLS client hello parser (Tim Perry) [#​64827](https://github.com/nodejs/node/pull/64827) - \[[`c555ba0aeb`](https://github.com/nodejs/node/commit/c555ba0aeb)] - **tools**: update `tools/v8` for Python 3.13 (Richard Lau) [#​66109](https://github.com/nodejs/node/pull/66109) - \[[`aafff27ebe`](https://github.com/nodejs/node/commit/aafff27ebe)] - **tools**: bump eslint-plugin-jsdoc in /tools/eslint in the eslint group (dependabot\[bot]) [#​66102](https://github.com/nodejs/node/pull/66102) - \[[`7a481ebd2c`](https://github.com/nodejs/node/commit/7a481ebd2c)] - **tools**: group CodeQL GHA updates (Antoine du Hamel) [#​66057](https://github.com/nodejs/node/pull/66057) - \[[`b2252b4074`](https://github.com/nodejs/node/commit/b2252b4074)] - **tools**: summarize auto-start-ci failures (Filip Skokan) [#​65979](https://github.com/nodejs/node/pull/65979) - \[[`499fe73da7`](https://github.com/nodejs/node/commit/499fe73da7)] - **tools**: bump the eslint group in /tools/eslint with 6 updates (dependabot\[bot]) [#​66045](https://github.com/nodejs/node/pull/66045) - \[[`d004d957ae`](https://github.com/nodejs/node/commit/d004d957ae)] - **tools**: update pgo build doc for linux (Chengzhong Wu) [#​66024](https://github.com/nodejs/node/pull/66024) - \[[`bfa329dbba`](https://github.com/nodejs/node/commit/bfa329dbba)] - **tools**: correct Slack action version comments (Filip Skokan) [#​66013](https://github.com/nodejs/node/pull/66013) - \[[`d55d30313b`](https://github.com/nodejs/node/commit/d55d30313b)] - **tools**: make checkout credential use explicit (Filip Skokan) [#​66013](https://github.com/nodejs/node/pull/66013) - \[[`0a9e844866`](https://github.com/nodejs/node/commit/0a9e844866)] - **tools**: pass author to commit message validator (Filip Skokan) [#​66012](https://github.com/nodejs/node/pull/66012) - \[[`f5edf1cd7c`](https://github.com/nodejs/node/commit/f5edf1cd7c)] - **tools**: reduce test runner timing overhead (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`1cb899f727`](https://github.com/nodejs/node/commit/1cb899f727)] - **tools**: bump js-yaml from 4.3.1 to 4.3.2 in /tools/eslint (dependabot\[bot]) [#​65931](https://github.com/nodejs/node/pull/65931) - \[[`9a1d47bc53`](https://github.com/nodejs/node/commit/9a1d47bc53)] - **tools**: bump js-yaml from 4.3.1 to 4.3.2 in /tools/lint-md (dependabot\[bot]) [#​65932](https://githu…
…y blocks https://nodejs.org/en/blog/release/v24.22.1 We hope this fixes the intermittent qtwebengine crash. According to GPT 6.1 Sol + @ras0219-msft : > The strongest related upstream case is nodejs/node#65756: intermittent Windows x64 Node 24.19.0 child-process crashes with `0xC0000005`, with the affected test file varying between runs. It is a useful analogue, not the same workload. > > nodejs/node#65778 fixes a use-after-free in Node’s CppGC/Realm teardown. A wrapper can be collected before its Environment is freed but destroyed afterwards, leaving its destructor writing through a freed Realm. The documented trigger combines a Worker, `vm.Script`, memory-pressure GC, and worker exit. > > The v24 backport, nodejs/node#66168, reports reproducing the crash on 24.20.0 and passing its Windows stress reproduction with the fix. > > The backport landed October 7, 2026, as: > > `83b3431c25be9fdb739c1531313c4c12a227c00a` > > Node 24.21.0 was released September 8 and lacks that fix. Node 24.22.0, released October 14, includes it. 24.22.1, released October 21, is the current v24 release verified on October 22. Comparing tagged `src/cppgc_helpers-inl.h` independently confirms the old destructor and its replacement. This also means the reduced concurrency part of microsoft#53435 clearly did not work, so that is reverted here.
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | volta | minor | [`24.17.0` → `24.22.1`](https://renovatebot.com/diffs/npm/node/v24.17.0/v24.22.1) | | [node](https://hub.docker.com/_/node) ([source](https://github.com/nodejs/node)) | final | minor | `24.17-alpine` → `24.22-alpine` | --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v24.22.1`](https://github.com/nodejs/node/releases/tag/v24.22.1): 2026-10-21, Version 24.22.1 'Krypton' (LTS), @​aduh95 [Compare Source](https://github.com/nodejs/node/compare/v24.22.0...v24.22.1) This is a security release. ##### Notable Changes - (CVE-2026-105481) http: ensure agent data guard works without I/O (James M Snell) - (CVE-2026-105482) dns: validate resolve inputs for null bytes (James M Snell) - (CVE-2026-105483) tls: fix ip normalization regression (James M Snell) - (CVE-2026-106069) tls: reject non-canonical IP addresses (Matteo Collina) - (CVE-2026-106073) permission: check permission model in realpathSync (RafaelGSS) - (CVE-2026-106074) crypto: reset random caches across snapshots (Filip Skokan) - (CVE-2026-111497) src: expose `BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH` (Antoine du Hamel) - (CVE-2026-111497) deps: brotli: cherry-pick [`0ed4268`](https://github.com/nodejs/node/commit/0ed4268a4401abcb44720963) (Evgenii Kliuchnikov) - crypto: update root certificates to NSS 3.131.1 (Antoine du Hamel) - deps: update c-ares to 1.34.9 (Node.js GitHub Bot) - deps: update timezone to 2026e (Node.js GitHub Bot) - deps: upgrade openssl sources to openssl-3.5.9 (Node.js GitHub Bot) - deps: update undici to 7.30.1 (Node.js GitHub Bot) ##### Commits - \[[`2a73ee5a89`](https://github.com/nodejs/node/commit/2a73ee5a89)] - **crypto**: update root certificates to NSS 3.131.1 (Antoine du Hamel) [#​66877](https://github.com/nodejs/node/pull/66877) - \[[`4d6990b33c`](https://github.com/nodejs/node/commit/4d6990b33c)] - **crypto**: reset random caches across snapshots (Filip Skokan) [nodejs-private/node-private#987](https://github.com/nodejs-private/node-private/pull/987) - \[[`4b3c9bbf9f`](https://github.com/nodejs/node/commit/4b3c9bbf9f)] - **crypto**: harden X.509 conversion and formatting (Filip Skokan) [nodejs-private/node-private#1007](https://github.com/nodejs-private/node-private/pull/1007) - \[[`9243b105b6`](https://github.com/nodejs/node/commit/9243b105b6)] - **crypto**: update root certificates to NSS 3.129 (Node.js GitHub Bot) [#​66496](https://github.com/nodejs/node/pull/66496) - \[[`1e39cd53c7`](https://github.com/nodejs/node/commit/1e39cd53c7)] - **deps**: update c-ares to 1.34.9 (Node.js GitHub Bot) [#​66868](https://github.com/nodejs/node/pull/66868) - \[[`49dff6f57a`](https://github.com/nodejs/node/commit/49dff6f57a)] - **deps**: brotli: cherry-pick [`0ed4268`](https://github.com/nodejs/node/commit/0ed4268a4401abcb44720963) (Evgenii Kliuchnikov) [nodejs-private/node-private#1002](https://github.com/nodejs-private/node-private/pull/1002) - \[[`fca511adc5`](https://github.com/nodejs/node/commit/fca511adc5)] - **deps**: V8: backport [`93cd21e`](https://github.com/nodejs/node/commit/93cd21e8254b) (Joyee Cheung) [nodejs-private/node-private#1008](https://github.com/nodejs-private/node-private/pull/1008) - \[[`18711c7567`](https://github.com/nodejs/node/commit/18711c7567)] - **deps**: update timezone to 2026e (Node.js GitHub Bot) [#​66419](https://github.com/nodejs/node/pull/66419) - \[[`fa77cfb1ad`](https://github.com/nodejs/node/commit/fa77cfb1ad)] - **deps**: update timezone to 2026d (Node.js GitHub Bot) [#​66333](https://github.com/nodejs/node/pull/66333) - \[[`b84f9f186b`](https://github.com/nodejs/node/commit/b84f9f186b)] - **deps**: update archs files for openssl-3.5.9 (Node.js GitHub Bot) [#​66396](https://github.com/nodejs/node/pull/66396) - \[[`ff0664c3ba`](https://github.com/nodejs/node/commit/ff0664c3ba)] - **deps**: upgrade openssl sources to openssl-3.5.9 (Node.js GitHub Bot) [#​66396](https://github.com/nodejs/node/pull/66396) - \[[`1d4c89ef87`](https://github.com/nodejs/node/commit/1d4c89ef87)] - **deps**: update undici to 7.30.1 (Node.js GitHub Bot) [#​66764](https://github.com/nodejs/node/pull/66764) - \[[`843a1627dc`](https://github.com/nodejs/node/commit/843a1627dc)] - **dns**: validate resolve inputs for null bytes (James M Snell) [nodejs-private/node-private#984](https://github.com/nodejs-private/node-private/pull/984) - \[[`96c3ccb1fc`](https://github.com/nodejs/node/commit/96c3ccb1fc)] - **http**: ensure agent data guard works without I/O (James M Snell) [nodejs-private/node-private#983](https://github.com/nodejs-private/node-private/pull/983) - \[[`8dc18a6218`](https://github.com/nodejs/node/commit/8dc18a6218)] - **permission**: check permission model in realpathSync (RafaelGSS) [nodejs-private/node-private#973](https://github.com/nodejs-private/node-private/pull/973) - \[[`b5f41529df`](https://github.com/nodejs/node/commit/b5f41529df)] - **src**: expose `BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH` (Antoine du Hamel) [nodejs-private/node-private#1002](https://github.com/nodejs-private/node-private/pull/1002) - \[[`01acf0ee74`](https://github.com/nodejs/node/commit/01acf0ee74)] - **tls**: reject chains containing blocked public keys (Ulises Gascón) [#​66871](https://github.com/nodejs/node/pull/66871) - \[[`935918e342`](https://github.com/nodejs/node/commit/935918e342)] - **tls**: reject non-canonical IP addresses (Matteo Collina) [nodejs-private/node-private#982](https://github.com/nodejs-private/node-private/pull/982) - \[[`de49c913f2`](https://github.com/nodejs/node/commit/de49c913f2)] - **tls**: fix ip normalization regression (James M Snell) [nodejs-private/node-private#985](https://github.com/nodejs-private/node-private/pull/985) - \[[`9dc4bb57f0`](https://github.com/nodejs/node/commit/9dc4bb57f0)] - **tools**: retry Gatekeeper check and stapling after notarization (Ryan Aslett) [#​66855](https://github.com/nodejs/node/pull/66855) ### [`v24.22.0`](https://github.com/nodejs/node/releases/tag/v24.22.0): 2026-10-14, Version 24.22.0 'Krypton' (LTS), @​richardlau prepared by @​aduh95 [Compare Source](https://github.com/nodejs/node/compare/v24.21.0...v24.22.0) ##### Notable Changes - \[[`ddbf974b47`](https://github.com/nodejs/node/commit/ddbf974b47)] - **(SEMVER-MINOR)** **crypto**: add `crypto.parsePKCS12()` (Brian Muenzenmeyer) [#​65627](https://github.com/nodejs/node/pull/65627) - \[[`c162c68ff0`](https://github.com/nodejs/node/commit/c162c68ff0)] - **(SEMVER-MINOR)** **crypto**: add a generic MAC API (Filip Skokan) [#​65553](https://github.com/nodejs/node/pull/65553) - \[[`a4ab3d84d7`](https://github.com/nodejs/node/commit/a4ab3d84d7)] - **(SEMVER-MINOR)** **crypto**: discover ciphers from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`c2f1e829ea`](https://github.com/nodejs/node/commit/c2f1e829ea)] - **(SEMVER-MINOR)** **crypto**: discover hashes from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`51aad5a80d`](https://github.com/nodejs/node/commit/51aad5a80d)] - **(SEMVER-MINOR)** **crypto**: enable SIV and GCM-SIV modes in Cipher/Decipher APIs (Filip Skokan) [#​63411](https://github.com/nodejs/node/pull/63411) - \[[`d11c65d2f2`](https://github.com/nodejs/node/commit/d11c65d2f2)] - **doc**: add araujogui to collaborators (Guilherme Araújo) [#​66090](https://github.com/nodejs/node/pull/66090) - \[[`acc1578179`](https://github.com/nodejs/node/commit/acc1578179)] - **doc**: deprecate `Server.prototype._listen2` in `node:net` (Antoine du Hamel) [#​65593](https://github.com/nodejs/node/pull/65593) - \[[`a7f8de6362`](https://github.com/nodejs/node/commit/a7f8de6362)] - **(SEMVER-MINOR)** **net**: support sending `net.BoundSocket` to threads and child processes (Guy Bedford) [#​64725](https://github.com/nodejs/node/pull/64725) - \[[`60c3eb61bd`](https://github.com/nodejs/node/commit/60c3eb61bd)] - **(SEMVER-MINOR)** **perf_hooks**: implement `SlidingWindowHistogram` (James M Snell) [#​65825](https://github.com/nodejs/node/pull/65825) - \[[`6b3e6f9d5c`](https://github.com/nodejs/node/commit/6b3e6f9d5c)] - **(SEMVER-MINOR)** **perf_hooks**: implement qrde analysis support in Histogram (James M Snell) [#​65806](https://github.com/nodejs/node/pull/65806) - \[[`75456a3512`](https://github.com/nodejs/node/commit/75456a3512)] - **(SEMVER-MINOR)** **perf_hooks**: implement Histogram `meanCI` API (James M Snell) [#​65606](https://github.com/nodejs/node/pull/65606) - \[[`72d1b40c56`](https://github.com/nodejs/node/commit/72d1b40c56)] - **(SEMVER-MINOR)** **perf_hooks**: add CBOR export/import for histogram exchange (James M Snell) [#​65434](https://github.com/nodejs/node/pull/65434) - \[[`41161dda87`](https://github.com/nodejs/node/commit/41161dda87)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.close()` (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`adbc757d70`](https://github.com/nodejs/node/commit/adbc757d70)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype[Symbol.dispose]()` (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`241339f072`](https://github.com/nodejs/node/commit/241339f072)] - **(SEMVER-MINOR)** **src,lib**: add `util.markPromiseAsHandled` (James M Snell) [#​65805](https://github.com/nodejs/node/pull/65805) - \[[`63b0974d9e`](https://github.com/nodejs/node/commit/63b0974d9e)] - **(SEMVER-MINOR)** **util**: implement `util.throttle` (James M Snell) [#​65899](https://github.com/nodejs/node/pull/65899) - \[[`a3bbb5a26f`](https://github.com/nodejs/node/commit/a3bbb5a26f)] - **(SEMVER-MINOR)** **util**: implement `debounce` (James M Snell) [#​65899](https://github.com/nodejs/node/pull/65899) ##### Commits - \[[`e6832b2cb1`](https://github.com/nodejs/node/commit/e6832b2cb1)] - **assert**: fix TypeError on deepStrictEqual with null Map key or Set member (Sergey Sannikov) [#​64449](https://github.com/nodejs/node/pull/64449) - \[[`a079177d9f`](https://github.com/nodejs/node/commit/a079177d9f)] - **benchmark**: add --csv option to compare.js with --analyze (James M Snell) [#​65922](https://github.com/nodejs/node/pull/65922) - \[[`10b1a0f70f`](https://github.com/nodejs/node/commit/10b1a0f70f)] - **benchmark**: fix max-regressions detection in compare.js (James M Snell) [#​65587](https://github.com/nodejs/node/pull/65587) - \[[`e0c7ba8ad5`](https://github.com/nodejs/node/commit/e0c7ba8ad5)] - **benchmark**: add --analyze option to benchmark/scatter.js (James M Snell) [#​65594](https://github.com/nodejs/node/pull/65594) - \[[`21fed10bb0`](https://github.com/nodejs/node/commit/21fed10bb0)] - **benchmark**: add crypto class benchmarks (Filip Skokan) [#​65518](https://github.com/nodejs/node/pull/65518) - \[[`fa912242b7`](https://github.com/nodejs/node/commit/fa912242b7)] - **buffer**: fix unaligned UTF-16LE decoding (Matteo Collina) [#​65905](https://github.com/nodejs/node/pull/65905) - \[[`a6bd0c1413`](https://github.com/nodejs/node/commit/a6bd0c1413)] - **build**: suppress OpenSSL asm warnings with clang (Richard Lau) [#​66023](https://github.com/nodejs/node/pull/66023) - \[[`94e12139ee`](https://github.com/nodejs/node/commit/94e12139ee)] - **build**: derive V8_LOGGING_LEVEL from dcheck_always_on (Joyee Cheung) [#​65744](https://github.com/nodejs/node/pull/65744) - \[[`7a2f322943`](https://github.com/nodejs/node/commit/7a2f322943)] - **build**: fix quiet default for make builds (Shelley Vohr) [#​65826](https://github.com/nodejs/node/pull/65826) - \[[`c280d650b0`](https://github.com/nodejs/node/commit/c280d650b0)] - **build**: allow linking shared dependencies in the GN build (Shelley Vohr) [#​65797](https://github.com/nodejs/node/pull/65797) - \[[`4b23a4472c`](https://github.com/nodejs/node/commit/4b23a4472c)] - **build**: enable the V8 sandbox in shared-cage builds (Shelley Vohr) [#​62237](https://github.com/nodejs/node/pull/62237) - \[[`676e15c003`](https://github.com/nodejs/node/commit/676e15c003)] - **build**: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage (Shelley Vohr) [#​65464](https://github.com/nodejs/node/pull/65464) - \[[`f784058482`](https://github.com/nodejs/node/commit/f784058482)] - **build**: remove obsolete configure flags (Chengzhong Wu) [#​65456](https://github.com/nodejs/node/pull/65456) - \[[`f63f37d243`](https://github.com/nodejs/node/commit/f63f37d243)] - **build**: activate correct default flags for riscv64 (Stewart X Addison) [#​65708](https://github.com/nodejs/node/pull/65708) - \[[`da46ac075d`](https://github.com/nodejs/node/commit/da46ac075d)] - **build**: derive NODE_ARCH from target_cpu in the GN build (Shelley Vohr) [#​65491](https://github.com/nodejs/node/pull/65491) - \[[`249e9a16dd`](https://github.com/nodejs/node/commit/249e9a16dd)] - **build,src**: gate jspi flag on V8_ENABLE_WEBASSEMBLY (Piotr Kubaj) [#​66082](https://github.com/nodejs/node/pull/66082) - \[[`146f00f64b`](https://github.com/nodejs/node/commit/146f00f64b)] - **child_process**: clear timeout timer on spawn-time error too (kishore280) [#​65506](https://github.com/nodejs/node/pull/65506) - \[[`13987f4418`](https://github.com/nodejs/node/commit/13987f4418)] - **crypto**: remove redundent `std::move` call (Antoine du Hamel) [#​66111](https://github.com/nodejs/node/pull/66111) - \[[`ef957ac85f`](https://github.com/nodejs/node/commit/ef957ac85f)] - **crypto**: skip private RSA parameters in key details (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`8feccc5e22`](https://github.com/nodejs/node/commit/8feccc5e22)] - **crypto**: use provider EC group names (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`764e0d1120`](https://github.com/nodejs/node/commit/764e0d1120)] - **crypto**: fetch ciphers for private-key encoding (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`50ffed1979`](https://github.com/nodejs/node/commit/50ffed1979)] - **crypto**: decode [PKCS#1](https://github.com/PKCS/node/issues/1) keys through providers (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`56c16b2fd6`](https://github.com/nodejs/node/commit/56c16b2fd6)] - **crypto**: derive keys through EVP_KDF (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`a4effe6809`](https://github.com/nodejs/node/commit/a4effe6809)] - **crypto**: use names for asymmetric key algorithms (Filip Skokan) [#​65966](https://github.com/nodejs/node/pull/65966) - \[[`ddbf974b47`](https://github.com/nodejs/node/commit/ddbf974b47)] - **(SEMVER-MINOR)** **crypto**: add crypto.parsePKCS12() (Brian Muenzenmeyer) [#​65627](https://github.com/nodejs/node/pull/65627) - \[[`8e631aa48f`](https://github.com/nodejs/node/commit/8e631aa48f)] - **crypto**: add Hybrid KEMs to Web Cryptography (Filip Skokan) [#​65759](https://github.com/nodejs/node/pull/65759) - \[[`5c51129e16`](https://github.com/nodejs/node/commit/5c51129e16)] - **crypto**: optimize private EC JWK import (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`c2ec40c2d7`](https://github.com/nodejs/node/commit/c2ec40c2d7)] - **crypto**: disable non-FIPS WebCrypto paths in FIPS mode (Filip Skokan) [#​65172](https://github.com/nodejs/node/pull/65172) - \[[`e198aa0f79`](https://github.com/nodejs/node/commit/e198aa0f79)] - **crypto**: read RSA-PSS restrictions from provider (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`253784f0e9`](https://github.com/nodejs/node/commit/253784f0e9)] - **crypto**: optimize and benchmark key preparation (Filip Skokan) [#​65892](https://github.com/nodejs/node/pull/65892) - \[[`80a6ad509b`](https://github.com/nodejs/node/commit/80a6ad509b)] - **crypto**: avoid EC reconstruction for signature sizing (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`5b592b772c`](https://github.com/nodejs/node/commit/5b592b772c)] - **crypto**: avoid EC raw export reconstruction (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`ee956ae3bf`](https://github.com/nodejs/node/commit/ee956ae3bf)] - **crypto**: export EC JWK coordinates directly (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`684008be58`](https://github.com/nodejs/node/commit/684008be58)] - **crypto**: read EC curve metadata directly (Filip Skokan) [#​65908](https://github.com/nodejs/node/pull/65908) - \[[`f4665f1c41`](https://github.com/nodejs/node/commit/f4665f1c41)] - **crypto**: validate the limit of PBKDF2 iterations (Filip Skokan) [#​65704](https://github.com/nodejs/node/pull/65704) - \[[`624abbecd7`](https://github.com/nodejs/node/commit/624abbecd7)] - **crypto**: use primordials in HKDF info validation (Filip Skokan) [#​65704](https://github.com/nodejs/node/pull/65704) - \[[`e4d916f175`](https://github.com/nodejs/node/commit/e4d916f175)] - **crypto**: add mgf1Hash for RSA-OAEP (Adam Mcgrath) [#​65073](https://github.com/nodejs/node/pull/65073) - \[[`db8a9162a8`](https://github.com/nodejs/node/commit/db8a9162a8)] - **crypto**: fix multi-prime RSA JWKs (Filip Skokan) [#​65649](https://github.com/nodejs/node/pull/65649) - \[[`022ac83504`](https://github.com/nodejs/node/commit/022ac83504)] - **crypto**: cache valid ECDH key pairs (Filip Skokan) [#​65615](https://github.com/nodejs/node/pull/65615) - \[[`c61953ebcc`](https://github.com/nodejs/node/commit/c61953ebcc)] - **crypto**: add strict mode to --force-fips (Filip Skokan) [#​65645](https://github.com/nodejs/node/pull/65645) - \[[`db6ea132a5`](https://github.com/nodejs/node/commit/db6ea132a5)] - **crypto**: add FIPS indicator diagnostics channel (Filip Skokan) [#​65645](https://github.com/nodejs/node/pull/65645) - \[[`c162c68ff0`](https://github.com/nodejs/node/commit/c162c68ff0)] - **(SEMVER-MINOR)** **crypto**: add a generic MAC API (Filip Skokan) [#​65553](https://github.com/nodejs/node/pull/65553) - \[[`2b62aafd20`](https://github.com/nodejs/node/commit/2b62aafd20)] - **crypto**: validate JWK usages before key_ops (Filip Skokan) [#​65550](https://github.com/nodejs/node/pull/65550) - \[[`ec7819db69`](https://github.com/nodejs/node/commit/ec7819db69)] - **crypto**: fix RSA-PSS oversized salt handling (Filip Skokan) [#​65550](https://github.com/nodejs/node/pull/65550) - \[[`a4ab3d84d7`](https://github.com/nodejs/node/commit/a4ab3d84d7)] - **(SEMVER-MINOR)** **crypto**: discover ciphers from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`c2f1e829ea`](https://github.com/nodejs/node/commit/c2f1e829ea)] - **(SEMVER-MINOR)** **crypto**: discover hashes from OpenSSL providers (Filip Skokan) [#​65484](https://github.com/nodejs/node/pull/65484) - \[[`51aad5a80d`](https://github.com/nodejs/node/commit/51aad5a80d)] - **(SEMVER-MINOR)** **crypto**: enable SIV and GCM-SIV modes in Cipher/Decipher APIs (Filip Skokan) [#​63411](https://github.com/nodejs/node/pull/63411) - \[[`5a46a9acbb`](https://github.com/nodejs/node/commit/5a46a9acbb)] - **crypto**: improve SubtleCrypto.supports() accuracy (Filip Skokan) [#​65222](https://github.com/nodejs/node/pull/65222) - \[[`191ebfb26c`](https://github.com/nodejs/node/commit/191ebfb26c)] - **crypto**: fix public PKCS8 export error (한국) [#​65609](https://github.com/nodejs/node/pull/65609) - \[[`b6d7ed372b`](https://github.com/nodejs/node/commit/b6d7ed372b)] - **crypto**: fix private SPKI export error (Filip Skokan) [#​65550](https://github.com/nodejs/node/pull/65550) - \[[`79509c25a4`](https://github.com/nodejs/node/commit/79509c25a4)] - **crypto**: correct CCM decryption FIPS error message (kyungrae) [#​65450](https://github.com/nodejs/node/pull/65450) - \[[`9adc87bc16`](https://github.com/nodejs/node/commit/9adc87bc16)] - **crypto**: harden X509Certificate state (Filip Skokan) [#​65518](https://github.com/nodejs/node/pull/65518) - \[[`c63aa331b4`](https://github.com/nodejs/node/commit/c63aa331b4)] - **crypto**: optimize key slot caching (Filip Skokan) [#​65518](https://github.com/nodejs/node/pull/65518) - \[[`87daea43a7`](https://github.com/nodejs/node/commit/87daea43a7)] - **crypto**: add null checks for OPENSSL_INIT_new() (Nora Dossche) [#​63457](https://github.com/nodejs/node/pull/63457) - \[[`98ca5e9358`](https://github.com/nodejs/node/commit/98ca5e9358)] - **crypto**: prevent Hmac.digest() from returning uninitialized memory (Matteo Collina) [#​65112](https://github.com/nodejs/node/pull/65112) - \[[`0c090a28cd`](https://github.com/nodejs/node/commit/0c090a28cd)] - **crypto**: avoid throwing CryptoKey brand checks (Filip Skokan) [#​65503](https://github.com/nodejs/node/pull/65503) - \[[`a13cc3f723`](https://github.com/nodejs/node/commit/a13cc3f723)] - **crypto**: avoid throwing KeyObject brand checks (Filip Skokan) [#​65503](https://github.com/nodejs/node/pull/65503) - \[[`b8db0045ef`](https://github.com/nodejs/node/commit/b8db0045ef)] - **deps**: V8: cherry-pick [`ea9c016`](https://github.com/nodejs/node/commit/ea9c016f26ad) (Gundepalli Sravani) [#​66570](https://github.com/nodejs/node/pull/66570) - \[[`ba09b53487`](https://github.com/nodejs/node/commit/ba09b53487)] - **deps**: V8: backport [`c355350`](https://github.com/nodejs/node/commit/c3553509f460) (Jakob Linke) [#​66089](https://github.com/nodejs/node/pull/66089) - \[[`9ce8ef405b`](https://github.com/nodejs/node/commit/9ce8ef405b)] - **deps**: V8: backport [`8901c79`](https://github.com/nodejs/node/commit/8901c793e439) (Toon Verwaest) [#​66089](https://github.com/nodejs/node/pull/66089) - \[[`fb0d0ca289`](https://github.com/nodejs/node/commit/fb0d0ca289)] - **deps**: V8: backport [`0b94a9f`](https://github.com/nodejs/node/commit/0b94a9fd23ba) (Ruan Gustavo) [#​65753](https://github.com/nodejs/node/pull/65753) - \[[`2faca508c0`](https://github.com/nodejs/node/commit/2faca508c0)] - **deps**: update googletest to [`8eff9e3`](https://github.com/nodejs/node/commit/8eff9e336692fc95961e096564f1044c600b881d) (Node.js GitHub Bot) [#​66009](https://github.com/nodejs/node/pull/66009) - \[[`4396c9bffe`](https://github.com/nodejs/node/commit/4396c9bffe)] - **deps**: update googletest to [`283c175`](https://github.com/nodejs/node/commit/283c17563fe7a1111cd7f581aa5d541e8baeff2f) (Node.js GitHub Bot) [#​65833](https://github.com/nodejs/node/pull/65833) - \[[`8a5b12570c`](https://github.com/nodejs/node/commit/8a5b12570c)] - **deps**: update simdjson to 4.6.11 (Node.js GitHub Bot) [#​65834](https://github.com/nodejs/node/pull/65834) - \[[`c47feb09e8`](https://github.com/nodejs/node/commit/c47feb09e8)] - **deps**: update zlib to 1.3.2.1-motley-285e94b (Node.js GitHub Bot) [#​65835](https://github.com/nodejs/node/pull/65835) - \[[`9f0d905286`](https://github.com/nodejs/node/commit/9f0d905286)] - **deps**: upgrade npm to 11.19.1 (npm team) [#​65573](https://github.com/nodejs/node/pull/65573) - \[[`373cd332d8`](https://github.com/nodejs/node/commit/373cd332d8)] - **deps**: update googletest to [`36ba75f`](https://github.com/nodejs/node/commit/36ba75f0ad5383a9759f17f3f72fd4661c72cb6d) (Node.js GitHub Bot) [#​65654](https://github.com/nodejs/node/pull/65654) - \[[`aeed6132a7`](https://github.com/nodejs/node/commit/aeed6132a7)] - **deps**: update simdjson to 4.6.9 (Node.js GitHub Bot) [#​65655](https://github.com/nodejs/node/pull/65655) - \[[`2583571342`](https://github.com/nodejs/node/commit/2583571342)] - **deps**: update zlib to 1.3.2.1-motley-5eb4d7e (Node.js GitHub Bot) [#​65494](https://github.com/nodejs/node/pull/65494) - \[[`d11c65d2f2`](https://github.com/nodejs/node/commit/d11c65d2f2)] - **doc**: add araujogui to collaborators (Guilherme Araújo) [#​66090](https://github.com/nodejs/node/pull/66090) - \[[`0a4a8d602a`](https://github.com/nodejs/node/commit/0a4a8d602a)] - **doc**: fix duplicate 'the' typo in `node_platform.cc` (Muhammad Al-Muzahid) [#​66058](https://github.com/nodejs/node/pull/66058) - \[[`b6538138ef`](https://github.com/nodejs/node/commit/b6538138ef)] - **doc**: clarify sub-1000ms behavior in socket.setKeepAlive (Haram Jeong) [#​65869](https://github.com/nodejs/node/pull/65869) - \[[`d319fa7de4`](https://github.com/nodejs/node/commit/d319fa7de4)] - **doc**: remove obsolete mentioning of cl.exe on windows (Chengzhong Wu) [#​66038](https://github.com/nodejs/node/pull/66038) - \[[`67cb305b59`](https://github.com/nodejs/node/commit/67cb305b59)] - **doc**: note that default signal handling resets the signal mask (Shelley Vohr) [#​65877](https://github.com/nodejs/node/pull/65877) - \[[`160d44e025`](https://github.com/nodejs/node/commit/160d44e025)] - **doc**: clarify QUIC async write backpressure (John Finnerty) [#​65947](https://github.com/nodejs/node/pull/65947) - \[[`ffd47a7ee5`](https://github.com/nodejs/node/commit/ffd47a7ee5)] - **doc**: clarify permission model scope for output paths (Rafael Gonzaga) [#​66004](https://github.com/nodejs/node/pull/66004) - \[[`2e1772a8ab`](https://github.com/nodejs/node/commit/2e1772a8ab)] - **doc**: fill in missing zstd docs (James M Snell) [#​65867](https://github.com/nodejs/node/pull/65867) - \[[`9f88c6f8dc`](https://github.com/nodejs/node/commit/9f88c6f8dc)] - **doc**: add inoway46 as triager (Yuya Inoue) [#​65565](https://github.com/nodejs/node/pull/65565) - \[[`c2620d01f3`](https://github.com/nodejs/node/commit/c2620d01f3)] - **doc**: document windowsHide for child_process.fork (Christopher Buss) [#​65887](https://github.com/nodejs/node/pull/65887) - \[[`6076111e1a`](https://github.com/nodejs/node/commit/6076111e1a)] - **doc**: qualify directory read ordering for native fs (Trivikram Kamat) [#​65868](https://github.com/nodejs/node/pull/65868) - \[[`7bf048a336`](https://github.com/nodejs/node/commit/7bf048a336)] - **doc**: add DOMException section to errors API reference (Avocado) [#​65206](https://github.com/nodejs/node/pull/65206) - \[[`414b6bfa62`](https://github.com/nodejs/node/commit/414b6bfa62)] - **doc**: expand revert commit collaborator instructions (Mike McCready) [#​65848](https://github.com/nodejs/node/pull/65848) - \[[`c8ac91692c`](https://github.com/nodejs/node/commit/c8ac91692c)] - **doc**: note that FreeEnvironment() runs a shared event loop (Shelley Vohr) [#​65691](https://github.com/nodejs/node/pull/65691) - \[[`cc47cc0983`](https://github.com/nodejs/node/commit/cc47cc0983)] - **doc**: clarify security triage dispositions and permission boundaries (Rafael Gonzaga) [#​65436](https://github.com/nodejs/node/pull/65436) - \[[`8b79a71e78`](https://github.com/nodejs/node/commit/8b79a71e78)] - **doc**: fix default limit of maxHeadersCount (Aryn H) [#​65472](https://github.com/nodejs/node/pull/65472) - \[[`56b1252a54`](https://github.com/nodejs/node/commit/56b1252a54)] - **doc**: fix return types for sync methods (Chiang Fong Lee) [#​58575](https://github.com/nodejs/node/pull/58575) - \[[`da0d32a333`](https://github.com/nodejs/node/commit/da0d32a333)] - **doc**: document REPL DEP0185 throws and uncaught-exception behavior (Adrián Estrada) [#​64993](https://github.com/nodejs/node/pull/64993) - \[[`f8ab3619b6`](https://github.com/nodejs/node/commit/f8ab3619b6)] - **doc**: document close() error when in a sqlite callback (Trivikram Kamat) [#​65090](https://github.com/nodejs/node/pull/65090) - \[[`131f1db302`](https://github.com/nodejs/node/commit/131f1db302)] - **doc**: clarify return type of `fs.mkdtemp*` (Antoine du Hamel) [#​65743](https://github.com/nodejs/node/pull/65743) - \[[`7755e98183`](https://github.com/nodejs/node/commit/7755e98183)] - **doc**: update `changelog-maker` instructions for releasing (Juan José) [#​65707](https://github.com/nodejs/node/pull/65707) - \[[`f982a53433`](https://github.com/nodejs/node/commit/f982a53433)] - **doc**: add stability status to `crypto.setEngine` (Antoine du Hamel) [#​65746](https://github.com/nodejs/node/pull/65746) - \[[`17be003f7c`](https://github.com/nodejs/node/commit/17be003f7c)] - **doc**: remove outdated TLS authorized warning (Tim Perry) [#​65597](https://github.com/nodejs/node/pull/65597) - \[[`424002232d`](https://github.com/nodejs/node/commit/424002232d)] - **doc**: fix stale TOC in maintaining-dependencies (greenhead) [#​65523](https://github.com/nodejs/node/pull/65523) - \[[`dddb9b57a5`](https://github.com/nodejs/node/commit/dddb9b57a5)] - **doc**: refactor the AI guidelines (Joyee Cheung) [#​65269](https://github.com/nodejs/node/pull/65269) - \[[`397b58e113`](https://github.com/nodejs/node/commit/397b58e113)] - **doc**: fix triggerAsyncId() comment in async_hooks example (soreavis) [#​64583](https://github.com/nodejs/node/pull/64583) - \[[`338ec94d83`](https://github.com/nodejs/node/commit/338ec94d83)] - **doc**: fix fsPromises.watch overflow value (Matt Radbourne) [#​64605](https://github.com/nodejs/node/pull/64605) - \[[`f18be21b14`](https://github.com/nodejs/node/commit/f18be21b14)] - **doc**: clarify stream direction in options.stdio note (Avocado) [#​65236](https://github.com/nodejs/node/pull/65236) - \[[`f07c6acd8b`](https://github.com/nodejs/node/commit/f07c6acd8b)] - **doc**: clarify signal listener behavior (Som Samantray) [#​65243](https://github.com/nodejs/node/pull/65243) - \[[`8bc17b0c7a`](https://github.com/nodejs/node/commit/8bc17b0c7a)] - **doc**: add test reporter event lifecycle diagram (sangwook) [#​63780](https://github.com/nodejs/node/pull/63780) - \[[`452e7477d4`](https://github.com/nodejs/node/commit/452e7477d4)] - **doc**: discourage AbortSignal cleanup for long-lived resources (Efe Karasakal) [#​64342](https://github.com/nodejs/node/pull/64342) - \[[`acc1578179`](https://github.com/nodejs/node/commit/acc1578179)] - **doc**: deprecate `Server.prototype._listen2` in `node:net` (Antoine du Hamel) [#​65593](https://github.com/nodejs/node/pull/65593) - \[[`e7ed4361d6`](https://github.com/nodejs/node/commit/e7ed4361d6)] - **doc,test**: account for OpenSSL 4.1 behaviours (Filip Skokan) [#​65956](https://github.com/nodejs/node/pull/65956) - \[[`c65fafeab4`](https://github.com/nodejs/node/commit/c65fafeab4)] - **errors**: validate constructor name (Christian Aurich) [#​65607](https://github.com/nodejs/node/pull/65607) - \[[`f6b47938b7`](https://github.com/nodejs/node/commit/f6b47938b7)] - **events**: fix weak listener retention overwrite (Aryan) [#​64024](https://github.com/nodejs/node/pull/64024) - \[[`a27db42c3e`](https://github.com/nodejs/node/commit/a27db42c3e)] - **fs**: coerce FileHandle.read length like fs.read (Xia Chao) [#​65521](https://github.com/nodejs/node/pull/65521) - \[[`f3019b522a`](https://github.com/nodejs/node/commit/f3019b522a)] - **fs**: throw on existing dir in cpSync with errorOnExist (Daijiro Wachi) [#​64124](https://github.com/nodejs/node/pull/64124) - \[[`cd1011458f`](https://github.com/nodejs/node/commit/cd1011458f)] - **fs**: support removing read-only files in rmSync on Windows (Sparsh :)) [#​64453](https://github.com/nodejs/node/pull/64453) - \[[`d659dd8cd8`](https://github.com/nodejs/node/commit/d659dd8cd8)] - **fs**: give directories created by cpSync the source directory's mode (Shelley Vohr) [#​65488](https://github.com/nodejs/node/pull/65488) - \[[`1dfb047293`](https://github.com/nodejs/node/commit/1dfb047293)] - **fs**: handle recursive watch setup races (Filip Skokan) [#​65699](https://github.com/nodejs/node/pull/65699) - \[[`bc431c8413`](https://github.com/nodejs/node/commit/bc431c8413)] - **fs**: apply nocase to literal glob exclude patterns (Yusuke Hayashi) [#​64817](https://github.com/nodejs/node/pull/64817) - \[[`dd5662e641`](https://github.com/nodejs/node/commit/dd5662e641)] - **fs**: do not descend into symlinks for \*\* unless following symlinks (RafaelGSS) [#​65435](https://github.com/nodejs/node/pull/65435) - \[[`ac4cf54292`](https://github.com/nodejs/node/commit/ac4cf54292)] - **fs**: watch directories, not files, in recursive fs.watch fallback (Shelley Vohr) [#​65486](https://github.com/nodejs/node/pull/65486) - \[[`7804bfbd71`](https://github.com/nodejs/node/commit/7804bfbd71)] - **fs**: preserve directory timestamps in cp (Abhinandan Kumar) [#​65540](https://github.com/nodejs/node/pull/65540) - \[[`ba5ca5a1a5`](https://github.com/nodejs/node/commit/ba5ca5a1a5)] - **fs**: fix recursive watch error handling (Filip Skokan) [#​65635](https://github.com/nodejs/node/pull/65635) - \[[`b71c4c0551`](https://github.com/nodejs/node/commit/b71c4c0551)] - **fs**: fix rmSync error messages for non-ASCII paths (Yeaseen) [#​61233](https://github.com/nodejs/node/pull/61233) - \[[`53b4700892`](https://github.com/nodejs/node/commit/53b4700892)] - **http**: don't destroy socket after request completes (Barath Raj) [#​65952](https://github.com/nodejs/node/pull/65952) - \[[`96d4c23f17`](https://github.com/nodejs/node/commit/96d4c23f17)] - **http**: fast-forward teardown of unread messages (Matteo Collina) [#​65732](https://github.com/nodejs/node/pull/65732) - \[[`742b4bf5a6`](https://github.com/nodejs/node/commit/742b4bf5a6)] - **http**: coalesce chunked writes during auto-corking (GetThatCookie) [#​64987](https://github.com/nodejs/node/pull/64987) - \[[`8921108175`](https://github.com/nodejs/node/commit/8921108175)] - **http2**: settle pending write callbacks on destroy (Matteo Collina) [#​66016](https://github.com/nodejs/node/pull/66016) - \[[`9a2f77a3fc`](https://github.com/nodejs/node/commit/9a2f77a3fc)] - **http2**: fix onread assert when destroying session from stream handler (Sankalp Thakur) [#​65116](https://github.com/nodejs/node/pull/65116) - \[[`99e41eb43a`](https://github.com/nodejs/node/commit/99e41eb43a)] - **http2**: error for incomplete reads on RST, auto-drain, deprecate aborted (Tim Perry) [#​63249](https://github.com/nodejs/node/pull/63249) - \[[`d520b9601c`](https://github.com/nodejs/node/commit/d520b9601c)] - **http2**: fix write deadlock exposed by larger window sizes (Tim Perry) [#​65440](https://github.com/nodejs/node/pull/65440) - \[[`86b2497aae`](https://github.com/nodejs/node/commit/86b2497aae)] - **http2**: fix async context loss when trailers carry END_STREAM (Orgad Shaneh) [#​63814](https://github.com/nodejs/node/pull/63814) - \[[`536ccc7daf`](https://github.com/nodejs/node/commit/536ccc7daf)] - **https**: limit proxy CONNECT response headers (Matteo Collina) [#​64545](https://github.com/nodejs/node/pull/64545) - \[[`fe6147832b`](https://github.com/nodejs/node/commit/fe6147832b)] - **inspector**: fix abort when two Environments own the inspector (Shelley Vohr) [#​65877](https://github.com/nodejs/node/pull/65877) - \[[`843a27782a`](https://github.com/nodejs/node/commit/843a27782a)] - **inspector**: fix crash when the IsolateData has no platform (Shelley Vohr) [#​65818](https://github.com/nodejs/node/pull/65818) - \[[`3f0b6d3308`](https://github.com/nodejs/node/commit/3f0b6d3308)] - **lib**: avoid repeat internal receiver checks (Filip Skokan) [#​65910](https://github.com/nodejs/node/pull/65910) - \[[`0039479b4a`](https://github.com/nodejs/node/commit/0039479b4a)] - **lib**: fix shared buffer growability validation (Filip Skokan) [#​65845](https://github.com/nodejs/node/pull/65845) - \[[`e7907130ae`](https://github.com/nodejs/node/commit/e7907130ae)] - **lib**: use Web IDL interface brand checks (Filip Skokan) [#​65846](https://github.com/nodejs/node/pull/65846) - \[[`7ae085552b`](https://github.com/nodejs/node/commit/7ae085552b)] - **lib**: fix AbortSignal.any() abort propagation (Yuya Inoue) [#​66014](https://github.com/nodejs/node/pull/66014) - \[[`01032f4fdc`](https://github.com/nodejs/node/commit/01032f4fdc)] - **lib**: fix for FileHandle.readableWebStream (Patrick Dähne) [#​58842](https://github.com/nodejs/node/pull/58842) - \[[`60a9a28206`](https://github.com/nodejs/node/commit/60a9a28206)] - **lib**: avoid unsafe array iteration in cli table (Donghoon Kang) [#​65838](https://github.com/nodejs/node/pull/65838) - \[[`230a7fcef0`](https://github.com/nodejs/node/commit/230a7fcef0)] - **lib**: optimize internal Web IDL dictionaries (Filip Skokan) [#​65857](https://github.com/nodejs/node/pull/65857) - \[[`7cc02b14ec`](https://github.com/nodejs/node/commit/7cc02b14ec)] - **lib**: validate sequence iterator objects (Filip Skokan) [#​65844](https://github.com/nodejs/node/pull/65844) - \[[`c2bb3aeccc`](https://github.com/nodejs/node/commit/c2bb3aeccc)] - **lib**: defer source map payload decoding until first use (Shelley Vohr) [#​65490](https://github.com/nodejs/node/pull/65490) - \[[`c4b390cf17`](https://github.com/nodejs/node/commit/c4b390cf17)] - **lib**: optimize async context frame activation (Tim Perry) [#​65519](https://github.com/nodejs/node/pull/65519) - \[[`3e4fc50a4f`](https://github.com/nodejs/node/commit/3e4fc50a4f)] - **lib**: use validateArray for array arguments (JunHwan Choi) [#​65344](https://github.com/nodejs/node/pull/65344) - \[[`b351ac9cd4`](https://github.com/nodejs/node/commit/b351ac9cd4)] - **meta**: bump step-security/harden-runner from 2.21.0 to 2.21.1 (dependabot\[bot]) [#​66044](https://github.com/nodejs/node/pull/66044) - \[[`693e890fec`](https://github.com/nodejs/node/commit/693e890fec)] - **meta**: bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66046](https://github.com/nodejs/node/pull/66046) - \[[`9c2abc13c2`](https://github.com/nodejs/node/commit/9c2abc13c2)] - **meta**: bump github/codeql-action/init from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66048](https://github.com/nodejs/node/pull/66048) - \[[`b3c5c2b91d`](https://github.com/nodejs/node/commit/b3c5c2b91d)] - **meta**: bump github/codeql-action/analyze from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66049](https://github.com/nodejs/node/pull/66049) - \[[`2428b13b02`](https://github.com/nodejs/node/commit/2428b13b02)] - **meta**: bump github/codeql-action/autobuild from 4.37.9 to 4.38.0 (dependabot\[bot]) [#​66050](https://github.com/nodejs/node/pull/66050) - \[[`eff5d15041`](https://github.com/nodejs/node/commit/eff5d15041)] - **meta**: add joyeecheung as v8 currency strategic initiative champion (Joyee Cheung) [#​65965](https://github.com/nodejs/node/pull/65965) - \[[`aa549fed0d`](https://github.com/nodejs/node/commit/aa549fed0d)] - **meta**: expand on collaborator restoration process (Chengzhong Wu) [#​65962](https://github.com/nodejs/node/pull/65962) - \[[`593b40eb2b`](https://github.com/nodejs/node/commit/593b40eb2b)] - **meta**: add web-standards as webidl owners (Filip Skokan) [#​65856](https://github.com/nodejs/node/pull/65856) - \[[`e711d3fef3`](https://github.com/nodejs/node/commit/e711d3fef3)] - **meta**: bump actions/checkout from 7.0.0 to 7.0.1 (dependabot\[bot]) [#​65718](https://github.com/nodejs/node/pull/65718) - \[[`0fc8a38f5b`](https://github.com/nodejs/node/commit/0fc8a38f5b)] - **meta**: cleanup targos emeritus changes (Antoine du Hamel) [#​65738](https://github.com/nodejs/node/pull/65738) - \[[`2ca2fd566d`](https://github.com/nodejs/node/commit/2ca2fd566d)] - **meta**: bump github/codeql-action/init from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65714](https://github.com/nodejs/node/pull/65714) - \[[`325709818e`](https://github.com/nodejs/node/commit/325709818e)] - **meta**: bump github/codeql-action/autobuild from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65717](https://github.com/nodejs/node/pull/65717) - \[[`8481d22f72`](https://github.com/nodejs/node/commit/8481d22f72)] - **meta**: bump actions/setup-node from 6.4.0 to 7.0.0 (dependabot\[bot]) [#​65720](https://github.com/nodejs/node/pull/65720) - \[[`cd2bd5d9fd`](https://github.com/nodejs/node/commit/cd2bd5d9fd)] - **meta**: bump step-security/harden-runner from 2.20.0 to 2.21.0 (dependabot\[bot]) [#​65721](https://github.com/nodejs/node/pull/65721) - \[[`fdec747105`](https://github.com/nodejs/node/commit/fdec747105)] - **meta**: bump github/codeql-action/upload-sarif from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65722](https://github.com/nodejs/node/pull/65722) - \[[`34c2fca088`](https://github.com/nodejs/node/commit/34c2fca088)] - **meta**: bump github/codeql-action/analyze from 4.37.3 to 4.37.9 (dependabot\[bot]) [#​65723](https://github.com/nodejs/node/pull/65723) - \[[`46d4549938`](https://github.com/nodejs/node/commit/46d4549938)] - **meta**: document collaborator automation (Filip Skokan) [#​65671](https://github.com/nodejs/node/pull/65671) - \[[`a7f8de6362`](https://github.com/nodejs/node/commit/a7f8de6362)] - **(SEMVER-MINOR)** **net**: support sending net.BoundSocket to threads and child processes (Guy Bedford) [#​64725](https://github.com/nodejs/node/pull/64725) - \[[`466f1f8e62`](https://github.com/nodejs/node/commit/466f1f8e62)] - **net**: fix BlockList.fromJSON for IPv4-mapped IPv6 rules (Daijiro Wachi) [#​64125](https://github.com/nodejs/node/pull/64125) - \[[`cd04cb10d6`](https://github.com/nodejs/node/commit/cd04cb10d6)] - **net**: recognize bare IPv6 loopback addresses in isLoopback (Daijiro Wachi) [#​63619](https://github.com/nodejs/node/pull/63619) - \[[`d983942636`](https://github.com/nodejs/node/commit/d983942636)] - **node-api**: make object property arrays const (Yilong Li) [#​65621](https://github.com/nodejs/node/pull/65621) - \[[`cc124394cc`](https://github.com/nodejs/node/commit/cc124394cc)] - **path**: remove `StringPrototypeCharCodeAt` from some methods of `posix` (Wiyeong Seo) [#​54668](https://github.com/nodejs/node/pull/54668) - \[[`60c3eb61bd`](https://github.com/nodejs/node/commit/60c3eb61bd)] - **(SEMVER-MINOR)** **perf_hooks**: implement SlidingWindowHistogram (James M Snell) [#​65825](https://github.com/nodejs/node/pull/65825) - \[[`6b3e6f9d5c`](https://github.com/nodejs/node/commit/6b3e6f9d5c)] - **(SEMVER-MINOR)** **perf_hooks**: implement qrde analysis support in Histogram (James M Snell) [#​65806](https://github.com/nodejs/node/pull/65806) - \[[`8aa870940c`](https://github.com/nodejs/node/commit/8aa870940c)] - **perf_hooks**: reuse buffer for uv metrics (Donghoon Kang) [#​65985](https://github.com/nodejs/node/pull/65985) - \[[`9cfbfae660`](https://github.com/nodejs/node/commit/9cfbfae660)] - **perf_hooks**: validate import normalization offset (Matteo Collina) [#​65950](https://github.com/nodejs/node/pull/65950) - \[[`75456a3512`](https://github.com/nodejs/node/commit/75456a3512)] - **(SEMVER-MINOR)** **perf_hooks**: implement Histogram meanCI API (James M Snell) [#​65606](https://github.com/nodejs/node/pull/65606) - \[[`127cb31864`](https://github.com/nodejs/node/commit/127cb31864)] - **perf_hooks**: add missing resource timing attributes (greenhead) [#​65017](https://github.com/nodejs/node/pull/65017) - \[[`72d1b40c56`](https://github.com/nodejs/node/commit/72d1b40c56)] - **(SEMVER-MINOR)** **perf_hooks**: add CBOR export/import for histogram exchange (James M Snell) [#​65434](https://github.com/nodejs/node/pull/65434) - \[[`847fe4d049`](https://github.com/nodejs/node/commit/847fe4d049)] - **permission**: block FileHandle fsync and fdatasync (Rafael Gonzaga) [#​65431](https://github.com/nodejs/node/pull/65431) - \[[`fa9188bd63`](https://github.com/nodejs/node/commit/fa9188bd63)] - **quic**: fix two small bugs in HTTP/3 stream internals (Tim Perry) [#​65970](https://github.com/nodejs/node/pull/65970) - \[[`ee80beaa9f`](https://github.com/nodejs/node/commit/ee80beaa9f)] - **quic**: fix crash in onStreamClose (Marten Richter) [#​65861](https://github.com/nodejs/node/pull/65861) - \[[`98486dd764`](https://github.com/nodejs/node/commit/98486dd764)] - **quic**: reject zero addressLRUSize (Christian Aurich) [#​65827](https://github.com/nodejs/node/pull/65827) - \[[`97516fc256`](https://github.com/nodejs/node/commit/97516fc256)] - **quic**: stop guarding ngtcp2_recv_stop_sending callback field (René) [#​65688](https://github.com/nodejs/node/pull/65688) - \[[`024bef25eb`](https://github.com/nodejs/node/commit/024bef25eb)] - **quic**: remove unused fin flag from blob reader wakeup (trivenay) [#​65315](https://github.com/nodejs/node/pull/65315) - \[[`5468337456`](https://github.com/nodejs/node/commit/5468337456)] - **quic**: release stream arenas before cleanup (Trivikram Kamat) [#​65410](https://github.com/nodejs/node/pull/65410) - \[[`a794e36970`](https://github.com/nodejs/node/commit/a794e36970)] - **sqlite**: throw on invalid URL path instead of abort (Guilherme Araújo) [#​66026](https://github.com/nodejs/node/pull/66026) - \[[`f58a55b8d0`](https://github.com/nodejs/node/commit/f58a55b8d0)] - **sqlite**: add diagnostic channel (Guilherme Araújo) [#​62241](https://github.com/nodejs/node/pull/62241) - \[[`be849bc6af`](https://github.com/nodejs/node/commit/be849bc6af)] - **sqlite**: reject connection access from authorizer callbacks (Trevor Burnham) [#​65156](https://github.com/nodejs/node/pull/65156) - \[[`41161dda87`](https://github.com/nodejs/node/commit/41161dda87)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype.close() (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`adbc757d70`](https://github.com/nodejs/node/commit/adbc757d70)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype\[Symbol.dispose]\() (Guilherme Araújo) [#​64232](https://github.com/nodejs/node/pull/64232) - \[[`b7b18fdbc9`](https://github.com/nodejs/node/commit/b7b18fdbc9)] - **sqlite**: run backup completion in callback scope (Filip Skokan) [#​65666](https://github.com/nodejs/node/pull/65666) - \[[`59827acd7f`](https://github.com/nodejs/node/commit/59827acd7f)] - **sqlite**: isolate applyChangeset filter errors (Trivikram Kamat) [#​64823](https://github.com/nodejs/node/pull/64823) - \[[`5a01df2d15`](https://github.com/nodejs/node/commit/5a01df2d15)] - **sqlite**: reject deserialize() while in a callback (Trivikram Kamat) [#​64796](https://github.com/nodejs/node/pull/64796) - \[[`c9b6e75a2e`](https://github.com/nodejs/node/commit/c9b6e75a2e)] - **sqlite**: refactor error helpers and user function pointers (Ali Hassan) [#​62794](https://github.com/nodejs/node/pull/62794) - \[[`d4eb6c62a9`](https://github.com/nodejs/node/commit/d4eb6c62a9)] - **sqlite**: prevent database close during callbacks (Matteo Collina) [#​64743](https://github.com/nodejs/node/pull/64743) - \[[`83b3431c25`](https://github.com/nodejs/node/commit/83b3431c25)] - **src**: detach cppgc wrappers from their Realm before it is freed (Shelley Vohr) [#​65778](https://github.com/nodejs/node/pull/65778) - \[[`13ed7e35e7`](https://github.com/nodejs/node/commit/13ed7e35e7)] - **src**: list scripts when `--run` has no command (James Ross) [#​64606](https://github.com/nodejs/node/pull/64606) - \[[`0f62f2b2df`](https://github.com/nodejs/node/commit/0f62f2b2df)] - **src**: print exception thrown during primordial initialization (Joyee Cheung) [#​65991](https://github.com/nodejs/node/pull/65991) - \[[`70117640f7`](https://github.com/nodejs/node/commit/70117640f7)] - **src**: don't kill own process group on failed spawn (Lazizbek Ergashev) [#​65054](https://github.com/nodejs/node/pull/65054) - \[[`64649abfd4`](https://github.com/nodejs/node/commit/64649abfd4)] - **src**: keep the first snapshot blob alive for later isolates (Shelley Vohr) [#​65779](https://github.com/nodejs/node/pull/65779) - \[[`3c814e8c3c`](https://github.com/nodejs/node/commit/3c814e8c3c)] - **src**: fix Stop() terminating the next Environment on the isolate (Shelley Vohr) [#​65819](https://github.com/nodejs/node/pull/65819) - \[[`a3ababcebb`](https://github.com/nodejs/node/commit/a3ababcebb)] - **src**: fix null pointer call when running without a startup snapshot (Shelley Vohr) [#​65820](https://github.com/nodejs/node/pull/65820) - \[[`7331f5cfcc`](https://github.com/nodejs/node/commit/7331f5cfcc)] - **src**: stop leaking a CppHeap in CommonEnvironmentSetup (Shelley Vohr) [#​65792](https://github.com/nodejs/node/pull/65792) - \[[`5570a84048`](https://github.com/nodejs/node/commit/5570a84048)] - **src**: fix use-after-free in CleanupHookThunkRun (Caleb Everett) [#​65630](https://github.com/nodejs/node/pull/65630) - \[[`abe1b673e9`](https://github.com/nodejs/node/commit/abe1b673e9)] - **src**: keep global list of addon-provided cleanup hooks (Anna Henningsen) [#​63985](https://github.com/nodejs/node/pull/63985) - \[[`2203ac9382`](https://github.com/nodejs/node/commit/2203ac9382)] - **src**: fix startup snapshot reproducibility of InternalFieldInfo (Chengzhong Wu) [#​65684](https://github.com/nodejs/node/pull/65684) - \[[`b282765d99`](https://github.com/nodejs/node/commit/b282765d99)] - **src**: fix live lock between environments with blocked requests (Ilyas Shabi) [#​65520](https://github.com/nodejs/node/pull/65520) - \[[`61ca3ba93c`](https://github.com/nodejs/node/commit/61ca3ba93c)] - **src**: apply IsolateSettings when using a snapshot (Shelley Vohr) [#​65407](https://github.com/nodejs/node/pull/65407) - \[[`33b8d6e10f`](https://github.com/nodejs/node/commit/33b8d6e10f)] - **src**: add re-entrancy guard to TriggerUncaughtException (Temuulen Undrakhbayar) [#​64327](https://github.com/nodejs/node/pull/64327) - \[[`49232db71e`](https://github.com/nodejs/node/commit/49232db71e)] - **src**: reuse cached strings in CompileSerializeMain (agape1225) [#​65453](https://github.com/nodejs/node/pull/65453) - \[[`e3f52b80a5`](https://github.com/nodejs/node/commit/e3f52b80a5)] - **src**: report libuv error when openAsBlob cannot stat (Paul Bouchon) [#​65517](https://github.com/nodejs/node/pull/65517) - \[[`42a5a19027`](https://github.com/nodejs/node/commit/42a5a19027)] - **src**: shave about 20 bytes off each TLSWrap instance (James M Snell) [#​65144](https://github.com/nodejs/node/pull/65144) - \[[`a06bb51e22`](https://github.com/nodejs/node/commit/a06bb51e22)] - **src**: use UTF-8 for task runner filesystem paths (Archkon) [#​64868](https://github.com/nodejs/node/pull/64868) - \[[`241339f072`](https://github.com/nodejs/node/commit/241339f072)] - **(SEMVER-MINOR)** **src,lib**: add util.markPromiseAsHandled (James M Snell) [#​65805](https://github.com/nodejs/node/pull/65805) - \[[`1260642ace`](https://github.com/nodejs/node/commit/1260642ace)] - **stream**: destroy Duplex.from async function on early return (Aman Chadha(IVIXMMI)) [#​65963](https://github.com/nodejs/node/pull/65963) - \[[`5f06defdbd`](https://github.com/nodejs/node/commit/5f06defdbd)] - **stream**: make share budget failures detach before throwing (James M Snell) [#​66028](https://github.com/nodejs/node/pull/66028) - \[[`d1c60d898d`](https://github.com/nodejs/node/commit/d1c60d898d)] - **stream**: update broadcast to retain buffered data with zero consumers (James M Snell) [#​66028](https://github.com/nodejs/node/pull/66028) - \[[`bbb00558c5`](https://github.com/nodejs/node/commit/bbb00558c5)] - **stream**: avoid promise allocation for parked transform writes (Matteo Collina) [#​65625](https://github.com/nodejs/node/pull/65625) - \[[`3216bc3912`](https://github.com/nodejs/node/commit/3216bc3912)] - **stream**: keep webstream stream states in fast-mode objects (Matteo Collina) [#​65625](https://github.com/nodejs/node/pull/65625) - \[[`70c1415686`](https://github.com/nodejs/node/commit/70c1415686)] - **stream**: reject closed only after sink abort settles (Lazizbek Ergashev) [#​65727](https://github.com/nodejs/node/pull/65727) - \[[`f8737b8ee5`](https://github.com/nodejs/node/commit/f8737b8ee5)] - **stream**: fix ERR_INVALID_STATE when cancelling Readable.toWeb() (Richard Scarrott) [#​62773](https://github.com/nodejs/node/pull/62773) - \[[`faa16f671c`](https://github.com/nodejs/node/commit/faa16f671c)] - **stream**: amortize writable buffer compaction (Gürgün Dayıoğlu) [#​65847](https://github.com/nodejs/node/pull/65847) - \[[`6262e0b8c6`](https://github.com/nodejs/node/commit/6262e0b8c6)] - **stream**: create write request objects lazily (Matteo Collina) [#​64455](https://github.com/nodejs/node/pull/64455) - \[[`0f0566de15`](https://github.com/nodejs/node/commit/0f0566de15)] - **stream**: allocate stream read buffers from a slab (Matteo Collina) [#​64455](https://github.com/nodejs/node/pull/64455) - \[[`02c776a7c6`](https://github.com/nodejs/node/commit/02c776a7c6)] - **stream**: ensure that stateful transforms preserve this (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`4b29051971`](https://github.com/nodejs/node/commit/4b29051971)] - **stream**: fix nested async flushing with infinite sources (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`2e54186d97`](https://github.com/nodejs/node/commit/2e54186d97)] - **stream**: ensure from() observes returned rejecting promise correctly (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`fd68d5ca6a`](https://github.com/nodejs/node/commit/fd68d5ca6a)] - **stream**: apply source normalization once at call time (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`49ee85b462`](https://github.com/nodejs/node/commit/49ee85b462)] - **stream**: make pipeTo source normalization independent of Writer (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`d7d0440f08`](https://github.com/nodejs/node/commit/d7d0440f08)] - **stream**: pre-aborted pipeTo now applies dest failure handling (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`6d8e643ef3`](https://github.com/nodejs/node/commit/6d8e643ef3)] - **stream**: ensure async dispoal after endSync awaits for drain (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`a082916c00`](https://github.com/nodejs/node/commit/a082916c00)] - **stream**: ensure factory signals remain active through closing (James M Snell) [#​65658](https://github.com/nodejs/node/pull/65658) - \[[`38829295a7`](https://github.com/nodejs/node/commit/38829295a7)] - **stream**: skip unobserved 'readable' emission at EOF (Matteo Collina) [#​65749](https://github.com/nodejs/node/pull/65749) - \[[`d535859c22`](https://github.com/nodejs/node/commit/d535859c22)] - **stream**: avoid per-chunk promises in webstream adapters (Matteo Collina) [#​65548](https://github.com/nodejs/node/pull/65548) - \[[`80568f6818`](https://github.com/nodejs/node/commit/80568f6818)] - **stream**: address stream/iter review feedback (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`6952928f68`](https://github.com/nodejs/node/commit/6952928f68)] - **stream**: replace object sentinel with symbol (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`9c22c4124c`](https://github.com/nodejs/node/commit/9c22c4124c)] - **stream**: cancel active stream/iter pulls (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`24d87990cf`](https://github.com/nodejs/node/commit/24d87990cf)] - **stream**: fix merge settlement tagging and falsy error tracking (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`1e215c4b51`](https://github.com/nodejs/node/commit/1e215c4b51)] - **stream**: ensure full-close semantics when closed (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`f499d6fadf`](https://github.com/nodejs/node/commit/f499d6fadf)] - **stream**: fixup writer to terminate on consumer return/throw (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`2130738033`](https://github.com/nodejs/node/commit/2130738033)] - **stream**: ensure iterator cleanup on done, reject, etc (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`748adc6275`](https://github.com/nodejs/node/commit/748adc6275)] - **stream**: fixup cancelation handling in pull() (James M Snell) [#​65652](https://github.com/nodejs/node/pull/65652) - \[[`47b3f6a1fa`](https://github.com/nodejs/node/commit/47b3f6a1fa)] - **stream**: fix early drain after Utf8Stream reopen (Matteo Collina) [#​65633](https://github.com/nodejs/node/pull/65633) - \[[`6dab5412cf`](https://github.com/nodejs/node/commit/6dab5412cf)] - **test**: skip RSA-PSS keygen deprecation tests with BoringSSL (Shelley Vohr) [#​65808](https://github.com/nodejs/node/pull/65808) - \[[`95d9a25b61`](https://github.com/nodejs/node/commit/95d9a25b61)] - **test**: consolidate crypto provider cache coverage (Filip Skokan) [#​66108](https://github.com/nodejs/node/pull/66108) - \[[`612db6d5b2`](https://github.com/nodejs/node/commit/612db6d5b2)] - **test**: deflake user timing WPT assertions (Filip Skokan) [#​66036](https://github.com/nodejs/node/pull/66036) - \[[`61a73d31eb`](https://github.com/nodejs/node/commit/61a73d31eb)] - **test**: fix RSA/DSA wrong-passphrase flake (Filip Skokan) [#​65983](https://github.com/nodejs/node/pull/65983) - \[[`d9f4a3ee3e`](https://github.com/nodejs/node/commit/d9f4a3ee3e)] - **test**: reuse fixed primes in DH tests (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`a0fd0a8bd6`](https://github.com/nodejs/node/commit/a0fd0a8bd6)] - **test**: use named parameters in DH stress test (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`810a6b00ee`](https://github.com/nodejs/node/commit/810a6b00ee)] - **test**: update tests to run with OpenSSL >= 3.0 FIPS mode (Filip Skokan) [#​64960](https://github.com/nodejs/node/pull/64960) - \[[`dc6b9ba5b2`](https://github.com/nodejs/node/commit/dc6b9ba5b2)] - **test**: deflake test-run-watch-cwd-isolation-none-\* (Antoine du Hamel) [#​66035](https://github.com/nodejs/node/pull/66035) - \[[`0f27bd2459`](https://github.com/nodejs/node/commit/0f27bd2459)] - **test**: unskip `test-watch-create-isolation-none` (Antoine du Hamel) [#​66041](https://github.com/nodejs/node/pull/66041) - \[[`1019f624f3`](https://github.com/nodejs/node/commit/1019f624f3)] - **test**: deflake util.throttle tests (Filip Skokan) [#​66034](https://github.com/nodejs/node/pull/66034) - \[[`b4a6719f37`](https://github.com/nodejs/node/commit/b4a6719f37)] - **(SEMVER-MINOR)** **test**: expand histogram test coverage (James M Snell) [#​65825](https://github.com/nodejs/node/pull/65825) - \[[`047d7c53d2`](https://github.com/nodejs/node/commit/047d7c53d2)] - **test**: implement low-risk test optimizations (James M Snell) [#​65926](https://github.com/nodejs/node/pull/65926) - \[[`33775d2bbb`](https://github.com/nodejs/node/commit/33775d2bbb)] - **test**: prevent parser reuse across close scenarios (Filip Skokan) [#​66017](https://github.com/nodejs/node/pull/66017) - \[[`b8c5283cbc`](https://github.com/nodejs/node/commit/b8c5283cbc)] - **test**: fix stderr Buffer assertion in exec encoding test (greenhead) [#​66008](https://github.com/nodejs/node/pull/66008) - \[[`13a2982002`](https://github.com/nodejs/node/commit/13a2982002)] - **test**: improve sequential test performance (James M Snell) [#​65928](https://github.com/nodejs/node/pull/65928) - \[[`a578933da0`](https://github.com/nodejs/node/commit/a578933da0)] - **test**: overlap SLH-DSA signature checks (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`bfdf20729d`](https://github.com/nodejs/node/commit/bfdf20729d)] - **test**: unref cancelled broadcast source timer (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`b29154d471`](https://github.com/nodejs/node/commit/b29154d471)] - **test**: collect timeout signals explicitly (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`384d4fe3ea`](https://github.com/nodejs/node/commit/384d4fe3ea)] - **test**: skip retries in DNS timeout coverage (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`c7323843f4`](https://github.com/nodejs/node/commit/c7323843f4)] - **test**: synchronize ordered runner events (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`625290573a`](https://github.com/nodejs/node/commit/625290573a)] - **test**: avoid idle HTTP/HTTPS connections (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`2bde68398f`](https://github.com/nodejs/node/commit/2bde68398f)] - **test**: close WebAssembly test HTTP servers (Filip Skokan) [#​65980](https://github.com/nodejs/node/pull/65980) - \[[`4c702e401b`](https://github.com/nodejs/node/commit/4c702e401b)] - **test**: deflake node-api test-free-called (Christian Aurich) [#​65948](https://github.com/nodejs/node/pull/65948) - \[[`0b6d945ebc`](https://github.com/nodejs/node/commit/0b6d945ebc)] - **test**: skip C++ symbols in tick-processor-arguments (Philipp Dunkel) [#​65906](https://github.com/nodejs/node/pull/65906) - \[[`e04210b383`](https://github.com/nodejs/node/commit/e04210b383)] - **test**: try fixing windows build replacing WMIC (James M Snell) [#​65949](https://github.com/nodejs/node/pull/65949) - \[[`aed73444de`](https://github.com/nodejs/node/commit/aed73444de)] - **test**: fix flaky cleanup in http2 test (Tim Perry) [#​65701](https://github.com/nodejs/node/pull/65701) - \[[`22f47ff728`](https://github.com/nodejs/node/commit/22f47ff728)] - **test**: update WPT WebCrypto, WebIDL and interfaces (Filip Skokan) [#​65679](https://github.com/nodejs/node/pull/65679) - \[[`f2af511a24`](https://github.com/nodejs/node/commit/f2af511a24)] - **test**: zero-fill buffers before the string length limit check (Christian Aurich) [#​65755](https://github.com/nodejs/node/pull/65755) - \[[`a28aad9960`](https://github.com/nodejs/node/commit/a28aad9960)] - **test**: update WPT for url to [`c23755a`](https://github.com/nodejs/node/commit/c23755a144) (Node.js GitHub Bot) [#​65651](https://github.com/nodejs/node/pull/65651) - \[[`ba65bb149a`](https://github.com/nodejs/node/commit/ba65bb149a)] - **test**: fix recursive fs.watch error fixture (Filip Skokan) [#​65683](https://github.com/nodejs/node/pull/65683) - \[[`f3b9f132b1`](https://github.com/nodejs/node/commit/f3b9f132b1)] - **test**: update streams WPT (Jeong SeokChan) [#​65638](https://github.com/nodejs/node/pull/65638) - \[[`d2e0f2d3bd`](https://github.com/nodejs/node/commit/d2e0f2d3bd)] - **test**: deflake fastutf8stream destroy and reopen tests (Christian Aurich) [#​65554](https://github.com/nodejs/node/pull/65554) - \[[`7b5896c136`](https://github.com/nodejs/node/commit/7b5896c136)] - **test**: cover Readable.from() sync iterator errors (jakecastelli) [#​65515](https://github.com/nodejs/node/pull/65515) - \[[`66eafad642`](https://github.com/nodejs/node/commit/66eafad642)] - **test**: document WPT runner workflows (Filip Skokan) [#​65510](https://github.com/nodejs/node/pull/65510) - \[[`2e2dc0f556`](https://github.com/nodejs/node/commit/2e2dc0f556)] - **test**: simplify test-worker-heap-profile.js (Donghoon Kang) [#​65372](https://github.com/nodejs/node/pull/65372) - \[[`2e57caac46`](https://github.com/nodejs/node/commit/2e57caac46)] - **test**: prefer in-memory databases in sqlite tests (Paul Bouchon) [#​64701](https://github.com/nodejs/node/pull/64701) - \[[`cef908596e`](https://github.com/nodejs/node/commit/cef908596e)] - **test**: fix typo from funciton to function (parkhojeong) [#​63403](https://github.com/nodejs/node/pull/63403) - \[[`4c7bbd4182`](https://github.com/nodejs/node/commit/4c7bbd4182)] - **test**: widen the gap in the resolver maxTimeout comparison (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`25c81c9eff`](https://github.com/nodejs/node/commit/25c81c9eff)] - **test**: fix the thread-spawn handshake in the WASI threads fixture (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`cab5dcedbe`](https://github.com/nodejs/node/commit/cab5dcedbe)] - **test**: only count restarts after the write in watch emit-restarted test (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`db0ca93e94`](https://github.com/nodejs/node/commit/db0ca93e94)] - **test**: ignore tunnel resets in proxy invalid-char-in-url test (Shelley Vohr) [#​65780](https://github.com/nodejs/node/pull/65780) - \[[`1f0087040a`](https://github.com/nodejs/node/commit/1f0087040a)] - **test**: handle EPIPE in closed channel test (Christian Aurich) [#​65770](https://github.com/nodejs/node/pull/65770) …
Node 26.7.0 can write into a freed worker Realm after the worker exits (nodejs/node#65778, fixed in 26.10.0). A Windows minidump of the Yoga default-config worker test showed the stray byte breaking V8's page pool, so the child crashed with 0xC0000005 in V8::Dispose at process exit. Pin the current LTS, 26.13.0, in every workflow that pinned 26.7.0. Issue: 407
origin/harden/407-ci-node-26-13 23174be pins every workflow that still said Node 26.7.0 to 26.13.0. Node 26.7.0 can write into a freed worker Realm after the worker exits (nodejs/node#65778, fixed in 26.10.0). A Windows minidump of the Yoga default-config worker test showed that stray byte breaking V8's page pool, so the child crashed with 0xC0000005 in V8::Dispose at process exit. 26.13.0 is the current LTS pin. The branch's parent is anomalyco's 9b7b1ba, the upstream form of the Permission Model fsync fix. That patch is already on main via the harden/407 fold be292a0, so the merge-tree adds no audio changes. Merging this tip also records 9b7b1ba as an ancestor. anomalyco origin is not pushed. Merge-tree 10d1f39 was one clean tree. The diff versus HEAD is 7 files, +7/−7, and zero path deletions. Each file changes NODE_VERSION from 26.7.0 to 26.13.0: - .github/workflows/build-core.yml - .github/workflows/build-keymap.yml - .github/workflows/build-solid.yml - .github/workflows/build-ssh.yml - .github/workflows/build-web.yml - .github/workflows/npm-latest-release.yml - .github/workflows/release.yml AGENTS.md:64 and packages/web/AGENTS.md:159 keep the user agent OpenAI File Downloader, XaiImageApiFetch/1.0. Co-Authored-By: Claude <[email protected]>
CI pins Node 26.7.0. On Windows, the Node run of the Yoga default-config worker test sometimes crashed with an access violation at process exit. A minidump showed the fault inside Node, not OpenTUI: after a worker exits, Node 26.7.0 can write one byte into the freed worker Realm, and here that byte broke V8's page pool, which then crashed in `V8::Dispose`. No OpenTUI code was loaded at the time. Node fixed this in nodejs/node#65778, released in 26.10.0. This pins the current LTS, 26.13.0, in every workflow that pinned 26.7.0. It needed #1907 first: since Node 26.9.0, `FileHandle.sync()` throws under the Permission Model, which the core Node lane uses, and that broke audio recording. The `engines` floor stays at `>=26.4.0`. Tested on Linux under 26.13.0 with the core and Solid Node lanes and the core, Solid, SSH and Keymap packed-consumer tests; on Windows, this PR's CI and later runs are the evidence. The crash hit about 1 in 175 Windows jobs, so one green run proves little.
Take 23174be (ci: pin Node 26.13.0, which fixes a worker teardown crash, issue 407). Node 26.7.0 can write into a freed worker Realm after the worker exits (nodejs/node#65778, fixed in 26.10.0). A Windows minidump of the Yoga default-config worker test showed the stray byte breaking V8's page pool, so the child crashed with 0xC0000005 in V8::Dispose at process exit. The commit sets NODE_VERSION from 26.7.0 to 26.13.0 in the seven workflows that pinned 26.7.0: build-core, build-keymap, build-solid, build-ssh, build-web, npm-latest-release, and release. Seven lines, no file deletions. Merge-base is origin/main 9b7b1ba, already contained in local main. Merge-tree was clean. Both sides delete zero files. The remote branch is left in place. This does not push to anomalyco/opentui and does not create origin/master.
There wa
[Page truncated to keep GeezerVison snappy.]