Skip to content

chore: bump node to v24.16.0 (main)#51749

Merged
ckerr merged 14 commits into
mainfrom
roller/node/main
Jun 3, 2026
Merged

chore: bump node to v24.16.0 (main)#51749
ckerr merged 14 commits into
mainfrom
roller/node/main

Conversation

@electron-roller

Copy link
Copy Markdown
Contributor

Updating Node.js to v24.16.0.

See all changes in v24.15.0..v24.16.0

Notes: Updated Node.js to v24.16.0.

@electron-roller
electron-roller Bot requested a review from a team as a code owner May 22, 2026 13:01
@electron-roller electron-roller Bot added no-backport semver/patch backwards-compatible bug fixes labels May 22, 2026
@electron-cation electron-cation Bot added new-pr 🌱 PR opened recently and removed new-pr 🌱 PR opened recently labels May 22, 2026
@jkleinsc
jkleinsc requested a review from a team as a code owner June 2, 2026 17:00
@jkleinsc jkleinsc added target/41-x-y PR should also be added to the "41-x-y" branch. target/42-x-y PR should also be added to the "42-x-y" branch. target/43-x-y PR should also be added to the "43-x-y" branch. and removed no-backport labels Jun 2, 2026
electron-roller Bot and others added 13 commits June 2, 2026 13:03
Upstream moved the static Object* helpers out of network_agent.cc into
the new src/inspector/inspector_object_utils.{h,cc} and converted the
existing methods to NetworkAgent member functions. Update the patch so
the deprecated v8::Context::GetIsolate() removal applies to the new
member methods that obtain the isolate via env_->isolate().

Ref: nodejs/node#61139

Co-Authored-By: Claude <[email protected]>
Node.js restored fs patchability in the ESM loader upstream, making
the fix_lazyload_fs_in_esm_loaders_to_apply_asar_patches.patch
obsolete (the patch's exact change is now in lib/internal/modules/
esm/{load,resolve,translators}.js).

Ref: nodejs/node#62835

Co-Authored-By: Claude <[email protected]>
Upstream removed the experimental_fetch field from EnvironmentOptions,
but Electron's patch still registers --experimental-fetch as a CLI
option bound to that field. Re-add the member so the option compiles.

Ref: nodejs/node#62759

Co-Authored-By: Claude <[email protected]>
libuv 1.52.1 typed uv_cpu_info_t.model as const char*, but uv__free
takes void*. Electron builds with -Werror,-Wincompatible-pointer-types-
discards-qualifiers, so add a cast. The memory is allocated via strdup
so the cast is safe.

Ref: nodejs/node#61829

Co-Authored-By: Claude <[email protected]>
Cast int nBuf to size_t when comparing with sizeof(aCopy) so the
bundled sqlite3 amalgamation compiles under -Werror,-Wsign-compare.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>
third_party/electron_node lives under Chromium's src/, whose package.json
("type": "module") is always an ancestor of the Node.js test tree. Upstream
assumes no package.json sits above the tests, so that ancestor changes how
test files and fixtures resolve their module type: it disables module-syntax
detection (breaking test-compile-cache-typescript-esm) and emits
MODULE_TYPELESS_PACKAGE_JSON warnings that break tests asserting clean stderr
(test-esm-detect-ambiguous, test-esm-import-meta-main-eval,
test-output-coverage-with-mock).

Move src/package.json aside for the duration of the run so the environment
matches upstream exactly, then restore it. The original is kept in a sibling
backup file so an interrupted/killed run self-heals on the next invocation
rather than leaving src/package.json missing.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>
New inspector/node headers added in Node.js v24.16.0 were missing from
the auto-generated source list.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>
The test copies the Electron binary into a standalone .app bundle and
code-signs it; under parallel suite runs this races with dyld resolving
the Electron Framework rpath and intermittently aborts (SIGABRT). It
passes reliably when run alone. Mark it flaky so flakes don't fail CI.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>
setDefaultCACertificates() round-trips the default CA set through
BoringSSL's X509_STORE, which dedups a duplicate-subject root (DigiCert
Global Root CA) that OpenSSL keeps. The set therefore loses one cert on
re-add (149 -> 148), so the test's assertEqualCerts round-trip check
fails under Electron's BoringSSL. The sibling -recovery test is disabled
for the same reason.

Ref: nodejs/node#58822

Co-Authored-By: Claude <[email protected]>
test-run-watch-repeatedly, test-run-watch-run-duration and
test-run-watch-without-file race under parallel suite load: the watcher
fires an extra re-run before the assertion, so the expected single-run
output ("tests 1") arrives with accumulated subtests. All three pass in
isolation.

Ref: nodejs/node#44898

Co-Authored-By: Claude <[email protected]>
@jkleinsc
jkleinsc force-pushed the roller/node/main branch from d0245b6 to 44c7487 Compare June 2, 2026 17:09
@jkleinsc jkleinsc removed target/41-x-y PR should also be added to the "41-x-y" branch. target/42-x-y PR should also be added to the "42-x-y" branch. labels Jun 2, 2026
Combine the Windows libuv cpu_info const-cast update into the existing
chore_cast_const_away_when_freeing_uv_cpu_info_t_model.patch and keep
a single patch-management commit for the final exported patch series.

Co-Authored-By: Claude <[email protected]>

@ckerr ckerr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, looks like a relatively smooth bump

@ckerr
ckerr merged commit 37b3219 into main Jun 3, 2026
120 of 123 checks passed
@ckerr
ckerr deleted the roller/node/main branch June 3, 2026 17:07
@release-clerk

release-clerk Bot commented Jun 3, 2026

Copy link
Copy Markdown

Release Notes Persisted

Updated Node.js to v24.16.0.

@trop

trop Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

I have automatically backported this PR to "43-x-y", please check out #51865

@trop trop Bot added in-flight/43-x-y merged/43-x-y PR was merged to the "43-x-y" branch. and removed target/43-x-y PR should also be added to the "43-x-y" branch. in-flight/43-x-y labels Jun 3, 2026
KanishkRanjan pushed a commit to KanishkRanjan/electron that referenced this pull request Jun 11, 2026
* chore: bump node in DEPS to v24.16.0

* fix(patch): adapt GetIsolate removal for network_agent.cc refactor

Upstream moved the static Object* helpers out of network_agent.cc into
the new src/inspector/inspector_object_utils.{h,cc} and converted the
existing methods to NetworkAgent member functions. Update the patch so
the deprecated v8::Context::GetIsolate() removal applies to the new
member methods that obtain the isolate via env_->isolate().

Ref: nodejs/node#61139

Co-Authored-By: Claude <[email protected]>

* chore: remove upstreamed patch

Node.js restored fs patchability in the ESM loader upstream, making
the fix_lazyload_fs_in_esm_loaders_to_apply_asar_patches.patch
obsolete (the patch's exact change is now in lib/internal/modules/
esm/{load,resolve,translators}.js).

Ref: nodejs/node#62835

Co-Authored-By: Claude <[email protected]>

* chore: update patches (trivial only)

Co-Authored-By: Claude <[email protected]>

* fix(patch): re-add experimental_fetch member after upstream cleanup

Upstream removed the experimental_fetch field from EnvironmentOptions,
but Electron's patch still registers --experimental-fetch as a CLI
option bound to that field. Re-add the member so the option compiles.

Ref: nodejs/node#62759

Co-Authored-By: Claude <[email protected]>

* fix(patch): cast const away when freeing uv_cpu_info_t.model

libuv 1.52.1 typed uv_cpu_info_t.model as const char*, but uv__free
takes void*. Electron builds with -Werror,-Wincompatible-pointer-types-
discards-qualifiers, so add a cast. The memory is allocated via strdup
so the cast is safe.

Ref: nodejs/node#61829

Co-Authored-By: Claude <[email protected]>

* fix(patch): silence sign-compare warning in sessionVarintGetSafe

Cast int nBuf to size_t when comparing with sizeof(aCopy) so the
bundled sqlite3 amalgamation compiles under -Werror,-Wsign-compare.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>

* test: move root package.json aside in node spec runner

third_party/electron_node lives under Chromium's src/, whose package.json
("type": "module") is always an ancestor of the Node.js test tree. Upstream
assumes no package.json sits above the tests, so that ancestor changes how
test files and fixtures resolve their module type: it disables module-syntax
detection (breaking test-compile-cache-typescript-esm) and emits
MODULE_TYPELESS_PACKAGE_JSON warnings that break tests asserting clean stderr
(test-esm-detect-ambiguous, test-esm-import-meta-main-eval,
test-output-coverage-with-mock).

Move src/package.json aside for the duration of the run so the environment
matches upstream exactly, then restore it. The original is kept in a sibling
backup file so an interrupted/killed run self-heals on the next invocation
rather than leaving src/package.json missing.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>

* chore: regenerate filenames.auto.gni for v24.16.0 headers

New inspector/node headers added in Node.js v24.16.0 were missing from
the auto-generated source list.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>

* fix(patch): mark test-macos-app-sandbox as flaky

The test copies the Electron binary into a standalone .app bundle and
code-signs it; under parallel suite runs this races with dyld resolving
the Electron Framework rpath and intermittently aborts (SIGABRT). It
passes reliably when run alone. Mark it flaky so flakes don't fail CI.

Ref: Unable to locate reference

Co-Authored-By: Claude <[email protected]>

* test: disable test-tls-set-default-ca-certificates-extra-override

setDefaultCACertificates() round-trips the default CA set through
BoringSSL's X509_STORE, which dedups a duplicate-subject root (DigiCert
Global Root CA) that OpenSSL keeps. The set therefore loses one cert on
re-add (149 -> 148), so the test's assertEqualCerts round-trip check
fails under Electron's BoringSSL. The sibling -recovery test is disabled
for the same reason.

Ref: nodejs/node#58822

Co-Authored-By: Claude <[email protected]>

* fix(patch): mark test-runner watch tests as flaky

test-run-watch-repeatedly, test-run-watch-run-duration and
test-run-watch-without-file race under parallel suite load: the watcher
fires an extra re-run before the assertion, so the expected single-run
output ("tests 1") arrives with accumulated subtests. All three pass in
isolation.

Ref: nodejs/node#44898

Co-Authored-By: Claude <[email protected]>

* chore: update patches

* chore(patches): update libuv const-cast patch management

Combine the Windows libuv cpu_info const-cast update into the existing
chore_cast_const_away_when_freeing_uv_cpu_info_t_model.patch and keep
a single patch-management commit for the final exported patch series.

Co-Authored-By: Claude <[email protected]>

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <[email protected]>
Co-authored-by: Claude <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

44-x-y merged/43-x-y PR was merged to the "43-x-y" branch. semver/patch backwards-compatible bug fixes

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

4 participants