Skip to content

node-api: make object property arrays const - #65621

Merged
nodejs-github-bot merged 1 commit into
nodejs:mainfrom
umuoy1:node-api-object-properties-const
Sep 2, 2026
Merged

nodejs-github-bot merged 1 commit into
nodejs:mainfrom
umuoy1:node-api-object-properties-const

Conversation

@umuoy1

@umuoy1 umuoy1 commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Make property_names and property_values const in node_api_create_object_with_properties() to match their read-only semantics.

Refs: nodejs/node-addon-api#1735 (comment)

Signed-off-by: umuoy1 <burningdian@gmail.com>
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/node-api

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. node-api Issues and PRs related to Node-API. labels Aug 28, 2026
@legendecas

legendecas commented Aug 28, 2026 •

Copy link
Copy Markdown
Member

Thanks! FWIW, this API has already been documented as taking const napi_value* property_[names|values] in https://github.com/nodejs/node/blob/main/doc/api/n-api.md?plain=1#L2697-L2702

@legendecas legendecas added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Aug 28, 2026
@codecov

codecov Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.05%. Comparing base (0544741) to head (d7027a1).
⚠️ Report is 68 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #65621      +/-   ##
==========================================
- Coverage   90.07%   90.05%   -0.02%     
==========================================
  Files         751      751              
  Lines      254921   254921              
  Branches    48129    48127       -2     
==========================================
- Hits       229627   229578      -49     
- Misses      16479    16513      +34     
- Partials     8815     8830      +15     
Files with missing lines Coverage Δ
src/js_native_api_v8.cc 76.63% <ø> (ø)

... and 29 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Aug 28, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@umuoy1

umuoy1 commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

Could someone take a look at why node-test-pull-request/76782 failed? Looks like only the AIX failed.

@panva

panva commented Sep 1, 2026

Copy link
Copy Markdown
Member

we'll restart CI when we know it's in a good state, those AIX failures are unrelated to this PR

@panva panva added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Sep 1, 2026
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Sep 1, 2026
@nodejs-github-bot

This comment has been minimized.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@trivikr trivikr added author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue PRs queued for automated landing through the Commit Queue. labels Sep 2, 2026
@nodejs-github-bot
nodejs-github-bot merged commit 3942bf7 into nodejs:main Sep 2, 2026
102 of 103 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in 3942bf7

@github-project-automation github-project-automation Bot moved this from Need Triage to Done in Node-API Team Project Sep 2, 2026
@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Sep 2, 2026
aduh95 pushed a commit that referenced this pull request Sep 3, 2026
Signed-off-by: umuoy1 <burningdian@gmail.com>
PR-URL: #65621
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Vladimir Morozov <vmorozov@microsoft.com>
toyobayashi added a commit to toyobayashi/emnapi that referenced this pull request Sep 13, 2026
aduh95 pushed a commit that referenced this pull request Sep 15, 2026
Signed-off-by: umuoy1 <burningdian@gmail.com>
PR-URL: #65621
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Vladimir Morozov <vmorozov@microsoft.com>
aduh95 pushed a commit that referenced this pull request Sep 19, 2026
Signed-off-by: umuoy1 <burningdian@gmail.com>
PR-URL: #65621
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Vladimir Morozov <vmorozov@microsoft.com>
aduh95 pushed a commit that referenced this pull request Sep 19, 2026
Signed-off-by: umuoy1 <burningdian@gmail.com>
PR-URL: #65621
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Vladimir Morozov <vmorozov@microsoft.com>
Brooooooklyn added a commit to napi-rs/napi-rs that referenced this pull request Oct 5, 2026
…hreads 2.2.0

emnapi 2.0.0-alpha.6 and @emnapi/wasi-threads 2.2.0 were published on
2026-10-05. Compared with 2.0.0-alpha.5 / 2.1.0 they contain:

- const property arrays in js_native_api.h (nodejs/node#65621)
- NAN V8 compatibility coverage (toyobayashi/emnapi#236)
- fix: delay env allocation (toyobayashi/emnapi#237; C changes, and
  @emnapi/core now hands the env address to @emnapi/runtime as a function)
- the wasi-threads background pool preload (toyobayashi/emnapi#239)

The threaded loader's pool preload was written against #239, and
`napi build` requires emnapi, @emnapi/core and @emnapi/runtime to be the
same version, so the root resolutions and the exact pins in
examples/wasi-heap-sync and examples/custom-async-runtime move together.
The lockfile change is only these four packages (and the two example
workspace entries). The caret ranges in cli and wasm-runtime already
admit the new versions.

Checked locally (macOS arm64, Node 24.21):
- cli templates.spec: 150 passed; full cli ava suite: 414 passed, the 11
  new.spec failures were template git fetches and new.spec alone passes
  20/20
- shared-async-runtime test:wasi 11/11, test:wasi-workerd 11/11,
  test:wasi-threads-pool 8/8
- wasi-heap-sync stress: 5/5, and 20/20 with bounds checks
- shared-async-runtime test:wasi-threads-crash: 2 passed, 1 failed.
  "dispose() after a crash releases an armed CurrentThread sleep" times
  out: its child calls dispose() from the unhandledRejection that
  @emnapi/wasi-threads 2.1.0 raised when a worker failed to load, and
  2.2.0 logs that error instead of throwing it, so dispose() never runs.
  On 2.1.0 the whole file passes 3/3, and on 2.2.0 a dispose() fired by a
  timer still rejects with the crash and releases the sleep. The test's
  trigger needs updating.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda
Brooooooklyn added a commit to rolldown/rolldown that referenced this pull request Oct 5, 2026
…hreads 2.2.0

emnapi shipped the pool-preload side today: emnapi, @emnapi/core and
@emnapi/runtime 2.0.0-alpha.6, and @emnapi/wasi-threads 2.2.0
(@emnapi/core depends on exactly that version). Since alpha.5 the release
carries four upstream changes:

- const property arrays in js_native_api.h (nodejs/node#65621)
- NAN V8 compatibility (toyobayashi/emnapi#236; rolldown does not link it)
- delay env allocation (toyobayashi/emnapi#237): C changes, and core hands
  the env address to the runtime as a function
- wasi-threads background pool preload (toyobayashi/emnapi#239)

The published JS dist of @emnapi/core and @emnapi/wasi-threads is
byte-identical to the vendored tarballs this branch tested with, and
@emnapi/runtime differs only in a source map. The C package differs: the
vendored emnapi.tgz was the alpha.5 archives relabelled as alpha.6, while
the release ships rebuilt lib/**/*.a archives (#237, the const arrays). So
both .wasm files were rebuilt; the build scripts now link
node_modules/.pnpm/emnapi@2.0.0-alpha.6_*/emnapi/lib/wasm32-wasip1{,-threads}.

Change

- pnpm-workspace.yaml: back to the shape before the tarballs. Overrides
  keep only the @napi-rs/cli tarball and an exact `emnapi: 2.0.0-alpha.6`;
  the catalog pins emnapi, @emnapi/core and @emnapi/runtime at exactly
  2.0.0-alpha.6, and @emnapi/wasi-threads 2.2.0 comes from @emnapi/core's
  exact dependency. The pins stay exact because the .wasm links the C
  archives and `napi build` refuses an emnapi that reports another version
  than @emnapi/core. The comment block drops the relabelled archives and
  their sha256 list.
- .napi-validation: deleted emnapi.tgz, emnapi-core.tgz,
  emnapi-runtime.tgz, emnapi-wasi-threads.tgz.
- pnpm-lock.yaml: only emnapi entries move. With no @emnapi/* override,
  the wasm32-only optional platform packages (sharp, lzma, tar,
  oxc-resolver, wasm-tools) get their own emnapi 1.x copies back, the same
  versions as before the tarballs.
- check-workerd-packed-consumer.mjs: expects @emnapi/core and
  @emnapi/runtime 2.0.0-alpha.6 from the registry.
- browser-tests staging comments: only the cli tarball is still staged;
  the code is unchanged and still works with one override.
- async-runtime implementation.md: the emnapi side is released; the
  release floors stay.

The committed loaders under packages/rolldown/src are byte-identical after
the native -> threaded wasi -> single wasi -> native rebuild; the bundled
threaded loaders now take @emnapi/core and runtime alpha.6 and
@emnapi/wasi-threads 2.2.0 from the registry copies.

Still temporary (until the napi-rs release): the @napi-rs/cli tarball
(packed as 3.10.6 from napi-rs e6e50eb4) and the Cargo [patch.crates-io]
pins at e6e50eb4.

Validation (local, M5 Max, debug wasm)

  lane                                                   result
  test:wasi-threaded MultiThread / CurrentThread         5 + 2 skipped, each
  dist files threaded / single                           ok / ok
  stability MultiThread / CurrentThread                  ok / ok
  wasi-runtime-lifecycle MultiThread / CurrentThread     ok / ok
  stress default                                         7 PASS
  stress bounds/no-trap/forced/handoff                   20/10/20/20 PASS
  stress heap-ceiling / no-growth                        1 / 2 PASS
  worker crash latch                                     12 PASS
  test:wasi-pool-preload, 20 runs                        20/20 (320 PASS, 0 FAIL)
    load-failure: 2 after import, 4 before builds,
    0 by builds, in all 40 cases
  threadless, stage, binding deps, workerd memory        ok
  single-thread test:wasi                                1581 + 90 skipped
  loader codegen unit test                               7/7
  check-wasi-binding-packed-consumer (Node 24 + 20.20.2) ok
  runtime contract, workerd packed consumer              ok
  browser-tests webcontainer-fallback (staged fixture)   1/1
  just lint-node; typos, ls-lint, vp fmt --check         ok

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda
Brooooooklyn added a commit to napi-rs/napi-rs that referenced this pull request Oct 5, 2026
…the loader (#3558)

* feat(async-runtime): export the configured pool worker count on threaded WASI

Problem: the generated threaded WASI loader starts emnapi's reuse pool
empty, so every pool thread a MultiThread runtime spawns on its first async
call boots a Worker and loads the wasm first. The loader cannot size the
pool itself: the worker count lives in the Rust runtime options, and
reading them through `configured_options()` takes the state lock, which a
crashed pool thread may still hold.

Change: `RuntimeController` keeps a lock-free `AtomicU32` mirror of the
pool size, computed by the pure helper `pool_workers_for` (MultiThread ->
worker_threads, CurrentThread -> 0). It is stored at the three sites that
write `state.options` (`new`, `configure`, `configure_partial_inner`), so a
configure that fails validation or is refused as frozen leaves it
unchanged. On wasm32-wasip1-threads only (`napi_runtime_wasi_threads`),
`napi_wasm_runtime_pool_workers() -> u32` exports it. It lives in the
scheduler layer, so `default-features = false` consumers export it too.
README: the "adds no wasm-specific API" line now describes the export.

Tests: three unit tests next to
`partial_configuration_after_backend_started_is_rejected`: helper values
(MultiThread 3 -> 3, MultiThread 1 -> clamped 2, CurrentThread -> 0);
configure / configure_partial update the mirror and a failed validation
does not; a frozen configure leaves it at 0.

Verification: `cargo test -p napi-async-runtime` (375 + 1 passed);
`cargo check -p napi-async-runtime --tests --target wasm32-wasip1-threads`
with and without default features; clippy -D warnings on the lib for
native, wasm32-wasip1-threads (both feature sets); `cargo fmt --check`.
The export is present in the shared-async-runtime example wasm
(`wasm-objdump -x` lists `napi_wasm_runtime_pool_workers`).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* feat(cli): preload and reconcile the threaded WASI worker pool from the loader

Problem: the threaded Node WASI loader passes `reuseWorker: true`, so
emnapi's pool starts empty (its own preload, `reuseWorker.size > 0`,
throws on the synchronous CommonJS load). The first MultiThread async call
then boots one Worker per pool thread and loads the wasm into each. Addons
such as rolldown patch the generated loader to work around this.

Change (threaded Node loader only; browser, threadless and deferred
loaders unchanged):
- `__reconcileWasiThreadPool()` reads the addon's
  `napi_wasm_runtime_pool_workers` export and matches emnapi's idle pool
  to it: missing Workers are allocated through `onCreateWorker` and start
  loading without being awaited (a rejected load splices the Worker out of
  the pool, since emnapi 2.1.0 leaves it there); idle Workers above the
  count are terminated newest first and removed from the pool and from
  `__wasiWorkers`. Their `onmessage` is reset as a compatibility line for
  emnapi <= 2.1.0, whose terminated-worker reporter otherwise prints
  'received "loaded" command from terminated worker' for a queued
  'loaded' (reproduced: 8/8 runs without the reset, 0/40 with it). A
  synchronous allocate/load throw terminates that Worker and stops. It
  never throws or waits, and does nothing after a thread crash, during or
  after disposal, or for an addon without the export.
- It runs once after a successful load (after the initialization
  try/catch, before the export tail), is published as the non-enumerable,
  read-only `Symbol.for('napi.rs.wasi.reconcileThreadPool')`, and, with
  `napi.wasm.asyncRuntime`, runs after every successful
  `configureAsyncRuntime` through a same-name wrapper (matched by name,
  like the host install; a throwing configure propagates and skips it).
- docs/wasi.md: new "Thread pool preload" section, including the
  crash-latch caveat and the shared uv async-work pool.

Tests: templates.spec.ts runs the sliced reconcile and wrapper against a
stubbed instance and thread manager (preload 3, missing export / instance
/ manager, disposed / disposing / crashed, shrink with and without an
emnapi that removes the Worker itself, rejected load, synchronous throws,
symbol descriptor, wrapper `this` / args / result / name, wiring order),
and checks that no other loader contains the export name. New e2e
examples/shared-async-runtime test-wasi-threads-pool.mjs (CI step added
after the crash test) runs the real threaded artifact: export 0 by
default, MultiThread 3 -> 3 Workers and no new one on the first call,
shrink, shrink with queued 'loaded' messages, grow, frozen configure.

Verification: `yarn workspace @napi-rs/cli test` (422 passed); example
test:wasi-threads-pool 6/6, test:wasi-threads-crash 3 pass + 2 skipped,
test:wasi 11/11, test:wasi-workerd 11/11; oxlint --deny-warnings and
oxfmt --check clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* fix(async-runtime): report zero pool workers once the backend has started

Problem: `napi_wasm_runtime_pool_workers` kept reporting the configured
MultiThread `worker_threads` after the backend started. Building the
backend spawns every pool thread at once (Rayon's `build()` spawns
`num_threads` and never grows), and those threads take the preloaded idle
Workers. A later loader reconcile then sees an empty pool and preloads a
second one: reproduced 3 -> 6 Workers through
`Symbol.for('napi.rs.wasi.reconcileThreadPool')`. The post-load reconcile
hits the same case when a `module_init` / `module_exports` hook calls a
runtime-backed API, which starts the backend before the reconcile runs.
`configureAsyncRuntime` is not affected: it throws once the runtime has
started, and the wrapper skips the reconcile then.

Change: the export now means "pool threads the runtime will still spawn".
`RuntimeController` stores 0 into the mirror right after each backend
build, under the state lock, at both build sites (`backend_locked` on the
first submission, and `start` from `Stopped`). The three configure-time
writes stay as they were. After the start the timer thread, uv threads and
a restart take their Workers from emnapi's on-demand allocation, so a
reconcile after first use only releases idle Workers. The loader is
unchanged. Field comment, export doc, README and cli docs/wasi.md describe
the new meaning.

docs/wasi.md also notes that the reconcile symbol lives on the CommonJS
loader object, like `napi.rs.wasi.dispose`: the generated ESM entry
re-exports named exports only, so an ESM consumer reaches it through
`createRequire(import.meta.url)('<pkg>-wasm32-wasi')` or the local
`./<name>.wasi.cjs`.

Tests: new unit test `pool_workers_drop_to_zero_once_the_backend_started`
(MultiThread 3 -> 3; first backend -> 0; stays 0 after shutdown and a
restart from `Stopped`). e2e test-wasi-threads-pool.mjs: the frozen case
now expects `poolWorkers: 0` after the first call; new case "a reconcile
after the backend started allocates no second pool" (MultiThread 3, one
async call, manual reconcile: export 0, created 3, idle 0). On the pre-fix
artifact it fails (export 3 after the call; the child then reports
created 6, idle 3 after the reconcile).

Verification: `cargo test -p napi-async-runtime` (376 passed, 1 ignored;
consumed_api 1 passed); `cargo check -p napi-async-runtime --tests
--target wasm32-wasip1-threads` with and without default features; clippy
-D warnings on the lib for native and wasm32-wasip1-threads (both feature
sets); `cargo fmt --check`. Rebuilt threaded example:
test:wasi-threads-pool 7/7, test:wasi-threads-crash 3 pass + 2 skipped,
test:wasi 11/11; cli templates.spec.ts 147 passed; oxfmt --check and
oxlint --deny-warnings clean on the touched files.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* test(async-runtime): run the pool-worker start test only where pool threads exist

The threadless wasm32-wasip1 test run aborts when a test builds or configures
a MultiThread runtime, which that target rejects. Gate the new start test and
the configure-mirror test with `napi_runtime_os_threads`, like the other
MultiThread tests; both still run natively and on wasm32-wasip1-threads.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* fix(cli): keep a shrunk WASI pool Worker tracked until it has exited

Problem: when `__reconcileWasiThreadPool` shrinks the idle pool, it calls
the thread manager's `terminateWorker`, which only starts Node's
asynchronous `worker.terminate()` and drops its promise, and then removed
the Worker from `__wasiWorkers` right away. A disposal started before that
Worker exited skipped it, so `dispose()` could resolve while the Worker was
still exiting. With a configure back to CurrentThread followed by an
immediate dispose, the disposer resolved before any of the three terminated
Workers had exited in 20/20 runs (order ['disposed'], exited 0).

Change: the shrink branch keeps the Worker in `__wasiWorkers` and drops it
only when its own `worker.terminate()` settles, which happens at the
Worker's exit (a second `terminate()` on an exiting Worker settles at that
exit). A disposal that starts first finds the Worker and waits for it the
way `__terminateWasiWorkers` waits for every other one. A rejected
terminate leaves it tracked, so disposal retries and reports it. A
non-thenable result drops it at once, as `__terminateWasiWorkers` does.
The `onmessage` reset and the pool splice are unchanged.

Tests:
- templates.spec.ts: the reconcile harness slices the real
  `__terminateWasiWorkers`; the pool Worker stub gets a `terminate()` that
  can settle only at a later exit. New case: after a shrink the Worker is
  still tracked, a disposal does not resolve before its exit, and the exit
  alone removes it.
- test-wasi-threads-pool.mjs: new `shrink-dispose` case (configure
  MultiThread 3, wait for loads, configure CurrentThread, dispose with no
  turn in between): order is exit x3 then disposed, all 3 exited.

Verification:
- templates.spec.ts: 148 passed; with the template reverted the new case
  fails (1 failed).
- test-wasi-threads-pool.mjs on the artifact built before the fix: 7 pass,
  1 fail (order ['disposed']); rebuilt artifact: 8 pass, 0 fail.
- shrink-dispose child, 20 runs: before ['disposed'] 20/20, after
  ['exit','exit','exit','disposed'] 20/20.
- test:wasi-threads-crash 3 pass / 2 skipped (manual hang checks) / 0 fail;
  test:wasi 11 pass / 0 fail.
- oxfmt --check and oxlint --deny-warnings clean on the touched files.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* fix(cli): track a WASI pool Worker whose load threw until it has exited

Problem: when `loadWasmModuleToWorker` throws synchronously during a pool
reconcile, the loader terminated the Worker through the thread manager and
removed it from `__wasiWorkers` at once, while its asynchronous termination
was still under way. A disposal started in that window did not wait for it,
the same gap e0c2193 closed for the shrink branch.

Change: factor "terminate, then drop from `__wasiWorkers` when the promise
settles" into `__untrackWasiWorkerOnExit` and use it in both the shrink
branch and the sync-failure branch.

Tests: templates.spec.ts case for the sync-throw branch (the Worker stays
tracked until its `terminate()` settles; a disposal in between waits for it).

Verification:
- templates.spec.ts: 149 passed; with the e0c2193 template the new case
  fails (1 failed).
- rebuilt threaded artifact: test-wasi-threads-pool 8/8 pass,
  test:wasi-threads-crash 3 pass / 2 skipped / 0 fail, test:wasi 11/11.
- oxfmt --check and oxlint --deny-warnings clean on the touched files.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* fix(cli): drop emnapi's deferred calls into wasm after a thread-crash disposal

After a worker crash is latched, the public disposer takes
__disposeWasiBindingAfterThreadCrash(), which terminates the pool workers
while they may still be working. A pool thread terminated while it holds
napi's heap-sync allocator lock (spin + sched_yield, never gives up) leaves
that lock set. A callback emnapi queued earlier through the context's
features.setImmediate then runs on the main thread:
_emnapi_set_immediate -> uv__finish_close -> _emnapi_tsfn_do_finalize ->
thread_finalize_cb -> __rust_dealloc -> __wrap_free -> lock_slow, and spins
there forever. The loader already says nothing may re-enter wasm after the
crash path stops the workers, but emnapi's deferred calls still did.

Fix: the threaded Node loader creates its emnapi context with
features: { setImmediate: __wasiSetImmediate }. __wasiSetImmediate schedules
the callback with the host setImmediate and drops it once
__wasiReentryClosed is set. The crash disposal sets that flag after it
unrefs the waiting-request port and releases the host timers, right before
it terminates the workers. The single-thread loaders are unchanged (their
rendered output is byte-identical to before).

Residual paths emnapi gives no hook for, documented on __wasiSetImmediate:
the FinalizationRegistry callbacks that free external memory on GC,
threadsafe-function dispatch of async-send type 1 and _emnapi_next_tick
(both Promise.resolve().then), and every deferred call under emnapi 1.x,
whose createContext ignores its options.

Tests: the context-creation spec now expects the features object for the
threaded Node loader and the plain options elsewhere; the two crash
disposal ordering specs expect the gate before the termination. A new spec
runs the generated crash disposal with a stubbed setImmediate: a callback
that fires before the disposal still runs, ones that fire after it
(queued before or after the disposal started) are dropped, the gate is
closed when the workers are terminated, and the threadless loaders have no
gate. Without the gate the spec fails. No e2e case: the example addon has
no threadsafe function and nothing that holds the heap lock on a pool
thread at crash time, so it would need new Rust.

Verification:
- templates.spec.ts: 150 passed
- build:wasi-threads, test:wasi-threads-pool 8/8, test:wasi-threads-crash
  3 pass + 2 manual skips
- build:wasi, test:wasi 11/11
- oxfmt --check and oxlint --deny-warnings on the touched files: clean
- rolldown harness (investigation): hang 1/1500 at 36 children and 19/480
  widened before, 0/1500 and 0/480 with the fix

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* test(async-runtime): tolerate a std that never runs worker TLS destructors on wasm32-wasip1-threads

rustc 1.99.0 changed how std handles thread_local! destructors on
wasm32-wasip1-threads. rust-lang/rust#160868 ("std: Adjust cfgs again
for TLS on WASI") rewrote the guard selection in
library/std/src/sys/thread_local/mod.rs so the "leak everything" branch
now covers all(target_family = "wasm", not(target_env = "p3")). That
includes the threaded WASI target, which on 1.98 and earlier used a
pthread key whose destructor pthread_join waits for. On 1.99.0 std
never runs TLS destructors at thread exit on this target, not even
late.

multi_thread_shutdown_waits_for_worker_tls_destructors asserts that
every worker TLS destructor ran before shutdown() returned, so on 1.99.0
it aborts the whole wasm test binary:

  assertion `left == right` failed: every worker TLS destructor must
  have completed before shutdown() returned ...
    left: 0
   right: 2

The CI runners picked up rustc 1.99.0 on 2026-10-02. napi-rs main run
36961186116 and this branch's run 37034095113 both fail the same way;
rustc 1.98.1 passes.

The runtime is unchanged and needs no change: it does not rely on worker
TLS destructors, and the join barrier still joins every worker. Only the
test's premise moved. On wasm32-wasip1-threads the test now asks a plain
std thread whether its TLS destructor ran before join() returned, and
checks the final count only when it did. The rest of the test (probe
install, zero count before shutdown, shutdown and join) still runs. The
assert turns itself back on once std runs these destructors again.
Native targets still assert unconditionally.

Local results (wasmtime 35.0.0, as CI):
- rustc 1.99.0, wasm32-wasip1-threads, full suite:
  test result: ok. 280 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 16.93s
  test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
- rustc 1.99.0, wasm32-wasip1:
  test result: ok. 56 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
  test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
- native (rustc 1.98.0), the changed test:
  test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 376 filtered out; finished in 0.02s

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* build(deps): pin the released emnapi 2.0.0-alpha.6 and @emnapi/wasi-threads 2.2.0

emnapi 2.0.0-alpha.6 and @emnapi/wasi-threads 2.2.0 were published on
2026-10-05. Compared with 2.0.0-alpha.5 / 2.1.0 they contain:

- const property arrays in js_native_api.h (nodejs/node#65621)
- NAN V8 compatibility coverage (toyobayashi/emnapi#236)
- fix: delay env allocation (toyobayashi/emnapi#237; C changes, and
  @emnapi/core now hands the env address to @emnapi/runtime as a function)
- the wasi-threads background pool preload (toyobayashi/emnapi#239)

The threaded loader's pool preload was written against #239, and
`napi build` requires emnapi, @emnapi/core and @emnapi/runtime to be the
same version, so the root resolutions and the exact pins in
examples/wasi-heap-sync and examples/custom-async-runtime move together.
The lockfile change is only these four packages (and the two example
workspace entries). The caret ranges in cli and wasm-runtime already
admit the new versions.

Checked locally (macOS arm64, Node 24.21):
- cli templates.spec: 150 passed; full cli ava suite: 414 passed, the 11
  new.spec failures were template git fetches and new.spec alone passes
  20/20
- shared-async-runtime test:wasi 11/11, test:wasi-workerd 11/11,
  test:wasi-threads-pool 8/8
- wasi-heap-sync stress: 5/5, and 20/20 with bounds checks
- shared-async-runtime test:wasi-threads-crash: 2 passed, 1 failed.
  "dispose() after a crash releases an armed CurrentThread sleep" times
  out: its child calls dispose() from the unhandledRejection that
  @emnapi/wasi-threads 2.1.0 raised when a worker failed to load, and
  2.2.0 logs that error instead of throwing it, so dispose() never runs.
  On 2.1.0 the whole file passes 3/3, and on 2.2.0 a dispose() fired by a
  timer still rejects with the crash and releases the sleep. The test's
  trigger needs updating.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* test(shared-async-runtime): detect the pool worker crash through the loader, not an unhandled rejection

The "dispose-sleep" case of test-wasi-threads-crash.mjs must call dispose()
after the pool worker's failed load has latched the binding as crashed, so
that the crash disposal (not a normal disposal the crash later overtakes)
releases the armed 60 s CurrentThread sleep. The child used the process
'unhandledRejection' event as that signal: @emnapi/wasi-threads 2.1.0
rethrew the failed load at the thread spawn site, and nothing handled it.

2.2.0 (emnapi#239) prints that failure through PThread.printErr instead and
drops the failed Worker (dropFailedLoad). No rejection comes, dispose()
never ran, and the sleep kept the child alive past the 30 s timeout.

The child now disposes on the failed Worker's 'error' event, reached through
Node's public process 'worker' event. The loader's onCreateWorker listener
latches the crash on that same event, and wasi-worker.mjs raises the
shared crash flag before it posts the error, so dispose() sees the crash
when it starts. It is the only signal a host gets on both versions: the
loader exposes no crash flag, binding calls keep resolving after the crash
(plus100 and sleepThenAdd resolved in a probe), and only dispose() reports
it. The unhandledRejection listener stays, only to log: on 2.1.0 the
"exit" and "dispose" modes still get the rejection and must not die on it.
The test now also asserts that the trigger fired.

Results (test:wasi-threads-crash; the dispose-sleep child exits in ~530 ms):
- @emnapi/wasi-threads 2.2.0 / core alpha.6: 3/3 passed in 5 of 5 runs, and
  again after restoring and relinking
- @emnapi/wasi-threads 2.1.0 / core alpha.5, artifact relinked: 3/3 passed
  in 3 of 3 runs
- test:wasi-threads-pool: 8/8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* test(custom-async-runtime): pass the real napi_env when re-registering over emnapi 2.0.0-alpha.6

emnapi 2.0.0-alpha.6 (toyobayashi/emnapi#237, "delay env allocation")
turned `EnvNativeBridge.address` into a lazy allocator function and moved
the pointer to `Env.address`. The two abandoned-cleanup cases still
passed `env.bridge.address` to `napi_register_wasm_v1`, so the wasm i32
parameter received ToNumber(function) = NaN = 0: a null env.

napi-rs still refused the registration (the owed phase 2 stayed standing,
so `..._finish` joined the backend afterwards), but its
`napi_throw_error(env, ...)` hit emnapi's `if (!env) return
napi_invalid_arg`, so no exception reached JavaScript and the threaded
case read `ABANDONED_PENDING_ERROR NONE`.

Read the pointer from `Env.address`, falling back to `bridge.address` for
emnapi releases that predate the change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

* test(wasm-runtime): create the fixture's dist directory before writing into it

createRuntimeFixture put mkdir(dist) in the same Promise.all as three
writes into dist/ (cp emnapi-plugins.cjs, cp emnapi-plugins.js,
writeFile fs-proxy.cjs). Nothing ordered the mkdir first, so under slow
I/O a write could open dist/<file> before dist existed and fail with
ENOENT. CI hit this twice on the v2 case: ASAN run 37041725283 and the
aarch64-pc-windows-msvc node@24 job 111639107194 of run 37271378422
(both reruns passed).

Await the mkdir before the Promise.all of the writes; the rest of the
fixture is unchanged. writeModulePackage already awaits its mkdir.

Local check (macOS): yarn test x10 = 10 pass / 0 fail;
node --test runtime.test.js x20 = 20 pass / 0 fail. A scratch script
running the same 8 ops in the old order 200 times hit ENOENT 52, 37
and 40 times in three runs; the fixed order hit it 0 times.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
markharding added a commit to futo-org/Harbor that referenced this pull request Oct 19, 2026
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), @&#8203;richardlau prepared by @&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;63411](https://github.com/nodejs/node/pull/63411)
- \[[`d11c65d2f2`](https://github.com/nodejs/node/commit/d11c65d2f2)] - **doc**: add araujogui to collaborators (Guilherme Araújo) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65899](https://github.com/nodejs/node/pull/65899)
- \[[`a3bbb5a26f`](https://github.com/nodejs/node/commit/a3bbb5a26f)] - **(SEMVER-MINOR)** **util**: implement `debounce` (James M Snell) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65594](https://github.com/nodejs/node/pull/65594)
- \[[`21fed10bb0`](https://github.com/nodejs/node/commit/21fed10bb0)] - **benchmark**: add crypto class benchmarks (Filip Skokan) [#&#8203;65518](https://github.com/nodejs/node/pull/65518)
- \[[`fa912242b7`](https://github.com/nodejs/node/commit/fa912242b7)] - **buffer**: fix unaligned UTF-16LE decoding (Matteo Collina) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65464](https://github.com/nodejs/node/pull/65464)
- \[[`f784058482`](https://github.com/nodejs/node/commit/f784058482)] - **build**: remove obsolete configure flags (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;66108](https://github.com/nodejs/node/pull/66108)
- \[[`8feccc5e22`](https://github.com/nodejs/node/commit/8feccc5e22)] - **crypto**: use provider EC group names (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;66108](https://github.com/nodejs/node/pull/66108)
- \[[`56c16b2fd6`](https://github.com/nodejs/node/commit/56c16b2fd6)] - **crypto**: derive keys through EVP_KDF (Filip Skokan) [#&#8203;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) [#&#8203;65966](https://github.com/nodejs/node/pull/65966)
- \[[`ddbf974b47`](https://github.com/nodejs/node/commit/ddbf974b47)] - **(SEMVER-MINOR)** **crypto**: add crypto.parsePKCS12() (Brian Muenzenmeyer) [#&#8203;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) [#&#8203;65759](https://github.com/nodejs/node/pull/65759)
- \[[`5c51129e16`](https://github.com/nodejs/node/commit/5c51129e16)] - **crypto**: optimize private EC JWK import (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;66108](https://github.com/nodejs/node/pull/66108)
- \[[`253784f0e9`](https://github.com/nodejs/node/commit/253784f0e9)] - **crypto**: optimize and benchmark key preparation (Filip Skokan) [#&#8203;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) [#&#8203;65908](https://github.com/nodejs/node/pull/65908)
- \[[`5b592b772c`](https://github.com/nodejs/node/commit/5b592b772c)] - **crypto**: avoid EC raw export reconstruction (Filip Skokan) [#&#8203;65908](https://github.com/nodejs/node/pull/65908)
- \[[`ee956ae3bf`](https://github.com/nodejs/node/commit/ee956ae3bf)] - **crypto**: export EC JWK coordinates directly (Filip Skokan) [#&#8203;65908](https://github.com/nodejs/node/pull/65908)
- \[[`684008be58`](https://github.com/nodejs/node/commit/684008be58)] - **crypto**: read EC curve metadata directly (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;65704](https://github.com/nodejs/node/pull/65704)
- \[[`e4d916f175`](https://github.com/nodejs/node/commit/e4d916f175)] - **crypto**: add mgf1Hash for RSA-OAEP (Adam Mcgrath) [#&#8203;65073](https://github.com/nodejs/node/pull/65073)
- \[[`db8a9162a8`](https://github.com/nodejs/node/commit/db8a9162a8)] - **crypto**: fix multi-prime RSA JWKs (Filip Skokan) [#&#8203;65649](https://github.com/nodejs/node/pull/65649)
- \[[`022ac83504`](https://github.com/nodejs/node/commit/022ac83504)] - **crypto**: cache valid ECDH key pairs (Filip Skokan) [#&#8203;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) [#&#8203;65645](https://github.com/nodejs/node/pull/65645)
- \[[`db6ea132a5`](https://github.com/nodejs/node/commit/db6ea132a5)] - **crypto**: add FIPS indicator diagnostics channel (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;63411](https://github.com/nodejs/node/pull/63411)
- \[[`5a46a9acbb`](https://github.com/nodejs/node/commit/5a46a9acbb)] - **crypto**: improve SubtleCrypto.supports() accuracy (Filip Skokan) [#&#8203;65222](https://github.com/nodejs/node/pull/65222)
- \[[`191ebfb26c`](https://github.com/nodejs/node/commit/191ebfb26c)] - **crypto**: fix public PKCS8 export error (한국) [#&#8203;65609](https://github.com/nodejs/node/pull/65609)
- \[[`b6d7ed372b`](https://github.com/nodejs/node/commit/b6d7ed372b)] - **crypto**: fix private SPKI export error (Filip Skokan) [#&#8203;65550](https://github.com/nodejs/node/pull/65550)
- \[[`79509c25a4`](https://github.com/nodejs/node/commit/79509c25a4)] - **crypto**: correct CCM decryption FIPS error message (kyungrae) [#&#8203;65450](https://github.com/nodejs/node/pull/65450)
- \[[`9adc87bc16`](https://github.com/nodejs/node/commit/9adc87bc16)] - **crypto**: harden X509Certificate state (Filip Skokan) [#&#8203;65518](https://github.com/nodejs/node/pull/65518)
- \[[`c63aa331b4`](https://github.com/nodejs/node/commit/c63aa331b4)] - **crypto**: optimize key slot caching (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;65112](https://github.com/nodejs/node/pull/65112)
- \[[`0c090a28cd`](https://github.com/nodejs/node/commit/0c090a28cd)] - **crypto**: avoid throwing CryptoKey brand checks (Filip Skokan) [#&#8203;65503](https://github.com/nodejs/node/pull/65503)
- \[[`a13cc3f723`](https://github.com/nodejs/node/commit/a13cc3f723)] - **crypto**: avoid throwing KeyObject brand checks (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65494](https://github.com/nodejs/node/pull/65494)
- \[[`d11c65d2f2`](https://github.com/nodejs/node/commit/d11c65d2f2)] - **doc**: add araujogui to collaborators (Guilherme Araújo) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65877](https://github.com/nodejs/node/pull/65877)
- \[[`160d44e025`](https://github.com/nodejs/node/commit/160d44e025)] - **doc**: clarify QUIC async write backpressure (John Finnerty) [#&#8203;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) [#&#8203;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) [#&#8203;65867](https://github.com/nodejs/node/pull/65867)
- \[[`9f88c6f8dc`](https://github.com/nodejs/node/commit/9f88c6f8dc)] - **doc**: add inoway46 as triager (Yuya Inoue) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65206](https://github.com/nodejs/node/pull/65206)
- \[[`414b6bfa62`](https://github.com/nodejs/node/commit/414b6bfa62)] - **doc**: expand revert commit collaborator instructions (Mike McCready) [#&#8203;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) [#&#8203;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) [#&#8203;65436](https://github.com/nodejs/node/pull/65436)
- \[[`8b79a71e78`](https://github.com/nodejs/node/commit/8b79a71e78)] - **doc**: fix default limit of maxHeadersCount (Aryn H) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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é) [#&#8203;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) [#&#8203;65746](https://github.com/nodejs/node/pull/65746)
- \[[`17be003f7c`](https://github.com/nodejs/node/commit/17be003f7c)] - **doc**: remove outdated TLS authorized warning (Tim Perry) [#&#8203;65597](https://github.com/nodejs/node/pull/65597)
- \[[`424002232d`](https://github.com/nodejs/node/commit/424002232d)] - **doc**: fix stale TOC in maintaining-dependencies (greenhead) [#&#8203;65523](https://github.com/nodejs/node/pull/65523)
- \[[`dddb9b57a5`](https://github.com/nodejs/node/commit/dddb9b57a5)] - **doc**: refactor the AI guidelines (Joyee Cheung) [#&#8203;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) [#&#8203;64583](https://github.com/nodejs/node/pull/64583)
- \[[`338ec94d83`](https://github.com/nodejs/node/commit/338ec94d83)] - **doc**: fix fsPromises.watch overflow value (Matt Radbourne) [#&#8203;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) [#&#8203;65236](https://github.com/nodejs/node/pull/65236)
- \[[`f07c6acd8b`](https://github.com/nodejs/node/commit/f07c6acd8b)] - **doc**: clarify signal listener behavior (Som Samantray) [#&#8203;65243](https://github.com/nodejs/node/pull/65243)
- \[[`8bc17b0c7a`](https://github.com/nodejs/node/commit/8bc17b0c7a)] - **doc**: add test reporter event lifecycle diagram (sangwook) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65956](https://github.com/nodejs/node/pull/65956)
- \[[`c65fafeab4`](https://github.com/nodejs/node/commit/c65fafeab4)] - **errors**: validate constructor name (Christian Aurich) [#&#8203;65607](https://github.com/nodejs/node/pull/65607)
- \[[`f6b47938b7`](https://github.com/nodejs/node/commit/f6b47938b7)] - **events**: fix weak listener retention overwrite (Aryan) [#&#8203;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) [#&#8203;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) [#&#8203;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 :)) [#&#8203;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) [#&#8203;65488](https://github.com/nodejs/node/pull/65488)
- \[[`1dfb047293`](https://github.com/nodejs/node/commit/1dfb047293)] - **fs**: handle recursive watch setup races (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65486](https://github.com/nodejs/node/pull/65486)
- \[[`7804bfbd71`](https://github.com/nodejs/node/commit/7804bfbd71)] - **fs**: preserve directory timestamps in cp (Abhinandan Kumar) [#&#8203;65540](https://github.com/nodejs/node/pull/65540)
- \[[`ba5ca5a1a5`](https://github.com/nodejs/node/commit/ba5ca5a1a5)] - **fs**: fix recursive watch error handling (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65732](https://github.com/nodejs/node/pull/65732)
- \[[`742b4bf5a6`](https://github.com/nodejs/node/commit/742b4bf5a6)] - **http**: coalesce chunked writes during auto-corking (GetThatCookie) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;63814](https://github.com/nodejs/node/pull/63814)
- \[[`536ccc7daf`](https://github.com/nodejs/node/commit/536ccc7daf)] - **https**: limit proxy CONNECT response headers (Matteo Collina) [#&#8203;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) [#&#8203;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) [#&#8203;65818](https://github.com/nodejs/node/pull/65818)
- \[[`3f0b6d3308`](https://github.com/nodejs/node/commit/3f0b6d3308)] - **lib**: avoid repeat internal receiver checks (Filip Skokan) [#&#8203;65910](https://github.com/nodejs/node/pull/65910)
- \[[`0039479b4a`](https://github.com/nodejs/node/commit/0039479b4a)] - **lib**: fix shared buffer growability validation (Filip Skokan) [#&#8203;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) [#&#8203;65846](https://github.com/nodejs/node/pull/65846)
- \[[`7ae085552b`](https://github.com/nodejs/node/commit/7ae085552b)] - **lib**: fix AbortSignal.any() abort propagation (Yuya Inoue) [#&#8203;66014](https://github.com/nodejs/node/pull/66014)
- \[[`01032f4fdc`](https://github.com/nodejs/node/commit/01032f4fdc)] - **lib**: fix for FileHandle.readableWebStream (Patrick Dähne) [#&#8203;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) [#&#8203;65838](https://github.com/nodejs/node/pull/65838)
- \[[`230a7fcef0`](https://github.com/nodejs/node/commit/230a7fcef0)] - **lib**: optimize internal Web IDL dictionaries (Filip Skokan) [#&#8203;65857](https://github.com/nodejs/node/pull/65857)
- \[[`7cc02b14ec`](https://github.com/nodejs/node/commit/7cc02b14ec)] - **lib**: validate sequence iterator objects (Filip Skokan) [#&#8203;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) [#&#8203;65490](https://github.com/nodejs/node/pull/65490)
- \[[`c4b390cf17`](https://github.com/nodejs/node/commit/c4b390cf17)] - **lib**: optimize async context frame activation (Tim Perry) [#&#8203;65519](https://github.com/nodejs/node/pull/65519)
- \[[`3e4fc50a4f`](https://github.com/nodejs/node/commit/3e4fc50a4f)] - **lib**: use validateArray for array arguments (JunHwan Choi) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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) [#&#8203;65965](https://github.com/nodejs/node/pull/65965)
- \[[`aa549fed0d`](https://github.com/nodejs/node/commit/aa549fed0d)] - **meta**: expand on collaborator restoration process (Chengzhong Wu) [#&#8203;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) [#&#8203;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]) [#&#8203;65718](https://github.com/nodejs/node/pull/65718)
- \[[`0fc8a38f5b`](https://github.com/nodejs/node/commit/0fc8a38f5b)] - **meta**: cleanup targos emeritus changes (Antoine du Hamel) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;65723](https://github.com/nodejs/node/pull/65723)
- \[[`46d4549938`](https://github.com/nodejs/node/commit/46d4549938)] - **meta**: document collaborator automation (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65985](https://github.com/nodejs/node/pull/65985)
- \[[`9cfbfae660`](https://github.com/nodejs/node/commit/9cfbfae660)] - **perf_hooks**: validate import normalization offset (Matteo Collina) [#&#8203;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) [#&#8203;65606](https://github.com/nodejs/node/pull/65606)
- \[[`127cb31864`](https://github.com/nodejs/node/commit/127cb31864)] - **perf_hooks**: add missing resource timing attributes (greenhead) [#&#8203;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) [#&#8203;65434](https://github.com/nodejs/node/pull/65434)
- \[[`847fe4d049`](https://github.com/nodejs/node/commit/847fe4d049)] - **permission**: block FileHandle fsync and fdatasync (Rafael Gonzaga) [#&#8203;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) [#&#8203;65970](https://github.com/nodejs/node/pull/65970)
- \[[`ee80beaa9f`](https://github.com/nodejs/node/commit/ee80beaa9f)] - **quic**: fix crash in onStreamClose (Marten Richter) [#&#8203;65861](https://github.com/nodejs/node/pull/65861)
- \[[`98486dd764`](https://github.com/nodejs/node/commit/98486dd764)] - **quic**: reject zero addressLRUSize (Christian Aurich) [#&#8203;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é) [#&#8203;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) [#&#8203;65315](https://github.com/nodejs/node/pull/65315)
- \[[`5468337456`](https://github.com/nodejs/node/commit/5468337456)] - **quic**: release stream arenas before cleanup (Trivikram Kamat) [#&#8203;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) [#&#8203;66026](https://github.com/nodejs/node/pull/66026)
- \[[`f58a55b8d0`](https://github.com/nodejs/node/commit/f58a55b8d0)] - **sqlite**: add diagnostic channel (Guilherme Araújo) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65666](https://github.com/nodejs/node/pull/65666)
- \[[`59827acd7f`](https://github.com/nodejs/node/commit/59827acd7f)] - **sqlite**: isolate applyChangeset filter errors (Trivikram Kamat) [#&#8203;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) [#&#8203;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) [#&#8203;62794](https://github.com/nodejs/node/pull/62794)
- \[[`d4eb6c62a9`](https://github.com/nodejs/node/commit/d4eb6c62a9)] - **sqlite**: prevent database close during callbacks (Matteo Collina) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;64327](https://github.com/nodejs/node/pull/64327)
- \[[`49232db71e`](https://github.com/nodejs/node/commit/49232db71e)] - **src**: reuse cached strings in CompileSerializeMain (agape1225) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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)) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65847](https://github.com/nodejs/node/pull/65847)
- \[[`6262e0b8c6`](https://github.com/nodejs/node/commit/6262e0b8c6)] - **stream**: create write request objects lazily (Matteo Collina) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65808](https://github.com/nodejs/node/pull/65808)
- \[[`95d9a25b61`](https://github.com/nodejs/node/commit/95d9a25b61)] - **test**: consolidate crypto provider cache coverage (Filip Skokan) [#&#8203;66108](https://github.com/nodejs/node/pull/66108)
- \[[`612db6d5b2`](https://github.com/nodejs/node/commit/612db6d5b2)] - **test**: deflake user timing WPT assertions (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;66041](https://github.com/nodejs/node/pull/66041)
- \[[`1019f624f3`](https://github.com/nodejs/node/commit/1019f624f3)] - **test**: deflake util.throttle tests (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;66008](https://github.com/nodejs/node/pull/66008)
- \[[`13a2982002`](https://github.com/nodejs/node/commit/13a2982002)] - **test**: improve sequential test performance (James M Snell) [#&#8203;65928](https://github.com/nodejs/node/pull/65928)
- \[[`a578933da0`](https://github.com/nodejs/node/commit/a578933da0)] - **test**: overlap SLH-DSA signature checks (Filip Skokan) [#&#8203;65980](https://github.com/nodejs/node/pull/65980)
- \[[`bfdf20729d`](https://github.com/nodejs/node/commit/bfdf20729d)] - **test**: unref cancelled broadcast source timer (Filip Skokan) [#&#8203;65980](https://github.com/nodejs/node/pull/65980)
- \[[`b29154d471`](https://github.com/nodejs/node/commit/b29154d471)] - **test**: collect timeout signals explicitly (Filip Skokan) [#&#8203;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) [#&#8203;65980](https://github.com/nodejs/node/pull/65980)
- \[[`c7323843f4`](https://github.com/nodejs/node/commit/c7323843f4)] - **test**: synchronize ordered runner events (Filip Skokan) [#&#8203;65980](https://github.com/nodejs/node/pull/65980)
- \[[`625290573a`](https://github.com/nodejs/node/commit/625290573a)] - **test**: avoid idle HTTP/HTTPS connections (Filip Skokan) [#&#8203;65980](https://github.com/nodejs/node/pull/65980)
- \[[`2bde68398f`](https://github.com/nodejs/node/commit/2bde68398f)] - **test**: close WebAssembly test HTTP servers (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65683](https://github.com/nodejs/node/pull/65683)
- \[[`f3b9f132b1`](https://github.com/nodejs/node/commit/f3b9f132b1)] - **test**: update streams WPT (Jeong SeokChan) [#&#8203;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) [#&#8203;65554](https://github.com/nodejs/node/pull/65554)
- \[[`7b5896c136`](https://github.com/nodejs/node/commit/7b5896c136)] - **test**: cover Readable.from() sync iterator errors (jakecastelli) [#&#8203;65515](https://github.com/nodejs/node/pull/65515)
- \[[`66eafad642`](https://github.com/nodejs/node/commit/66eafad642)] - **test**: document WPT runner workflows (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;64701](https://github.com/nodejs/node/pull/64701)
- \[[`cef908596e`](https://github.com/nodejs/node/commit/cef908596e)] - **test**: fix typo from funciton to function (parkhojeong) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65770](https://github.com/nodejs/node/pull/65770)
- \[[`ed4e5df638`](https://github.com/nodejs/node/commit/ed4e5df638)] - **test**: deflake test-runner-coverage (Christian Aurich) [#&#8203;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) [#&#8203;65545](https://github.com/nodejs/node/pull/65545)
- \[[`554a3fba98`](https://github.com/nodejs/node/commit/554a3fba98)] - **test**: deflake WASI poll timing checks (Filip Skokan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;65562](https://github.com/nodejs/node/pull/65562)
- \[[`cb93d40549`](https://github.com/nodejs/node/commit/cb93d40549)] - **test,benchmark**: use OpenSSL feature helpers (Filip Skokan) [#&#8203;65762](https://github.com/nodejs/node/pull/65762)
- \[[`b4b859319d`](https://github.com/nodejs/node/commit/b4b859319d)] - **test_runner**: avoid reusing v8 serializers (Yuya Inoue) [#&#8203;65951](https://github.com/nodejs/node/pull/65951)
- \[[`b3766225e1`](https://github.com/nodejs/node/commit/b3766225e1)] - **test_runner**: fix quote escaping in JUnit (Jihwan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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]) [#&#8203;66102](https://github.com/nodejs/node/pull/66102)
- \[[`7a481ebd2c`](https://github.com/nodejs/node/commit/7a481ebd2c)] - **tools**: group CodeQL GHA updates (Antoine du Hamel) [#&#8203;66057](https://github.com/nodejs/node/pull/66057)
- \[[`b2252b4074`](https://github.com/nodejs/node/commit/b2252b4074)] - **tools**: summarize auto-start-ci failures (Filip Skokan) [#&#8203;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]) [#&#8203;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) [#&#8203;66024](https://github.com/nodejs/node/pull/66024)
- \[[`bfa329dbba`](https://github.com/nodejs/node/commit/bfa329dbba)] - **tools**: correct Slack action version comments (Filip Skokan) [#&#8203;66013](https://github.com/nodejs/node/pull/66013)
- \[[`d55d30313b`](https://github.com/nodejs/node/commit/d55d30313b)] - **tools**: make checkout credential use explicit (Filip Skokan) [#&#8203;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) [#&#8203;66012](https://github.com/nodejs/node/pull/66012)
- \[[`f5edf1cd7c`](https://github.com/nodejs/node/commit/f5edf1cd7c)] - **tools**: reduce test runner timing overhead (Filip Skokan) [#&#8203;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]) [#&#8203;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]) [#&#8203;65932](https://githu…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. node-api Issues and PRs related to Node-API.

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

7 participants