Skip to content

deps: update V8 to 14.8#62572

Open
targos wants to merge 30 commits intonodejs:mainfrom
targos:v8-148
Open

deps: update V8 to 14.8#62572
targos wants to merge 30 commits intonodejs:mainfrom
targos:v8-148

Conversation

@targos
Copy link
Copy Markdown
Member

@targos targos commented Apr 3, 2026

This is not intended to replace #61898, but I'm opening it early so we can hopefully work together to fix it in time for Node.js 26.0.0

@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/security-wg
  • @nodejs/v8-update

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. v8 engine Issues and PRs related to the V8 dependency. labels Apr 3, 2026
@targos
Copy link
Copy Markdown
Member Author

targos commented Apr 3, 2026

Build with postmortem support is broken, and 4a0d16e was not enough to fix it, so I disabled it in f1e0d4c to go further. /cc @nodejs/post-mortem

@targos

This comment was marked as resolved.

@targos
Copy link
Copy Markdown
Member Author

targos commented Apr 3, 2026

If I apply the above fix, it fails at node_mksnapshot and I think it's related to v8#245
/cc @joyeecheung

@targos

This comment was marked as resolved.

@targos

This comment was marked as resolved.

@aduh95 aduh95 added the semver-major PRs that contain breaking changes and should be released in the next major version. label Apr 3, 2026
@joyeecheung
Copy link
Copy Markdown
Member

joyeecheung commented Apr 3, 2026

I was trying to update to lkgr (14.9.5) in this branch in order to fix canary, I got node_mksnapshot compiled on GCC 13.3 on x64 Linux and then I hit the snapshot issue.

  • Disabling v8_postmortem_support: I think all consumers of this (in the org, mostly llnode) are no longer maintained. It should be fine to drop it. New plugins should use V8's debug helper library instead.
  • The wasm-shuffle-reducer.cc fix: yes, that's the right way to fix it.
  • There are a bunch of unqualified std::nullptr_t, I fixed it in this commit in my branch (not sure if it is not yet in 14.8)
  • There's a missing include in bigint.h that I fixed in this commit
  • Some real gyp conditions will be needed to mimic https://chromium-review.googlesource.com/c/v8/v8/+/7683553, I put it in this commit

The snapshot issue is platform independent. I will need to check with the upstream to see what's the path forward (AFAICT, we don't support the configuration where the issue described v8#245 is relevant, maybe we can tweak it differently under the configuration we do build with).

@targos
Copy link
Copy Markdown
Member Author

targos commented Apr 4, 2026

I already pushed a few fixes that I identified by looking at the GH Actions logs. Feel free to push more and/or upstream some stuff. I'll be away for a week.

@joyeecheung
Copy link
Copy Markdown
Member

joyeecheung commented Apr 6, 2026

Upstreamed the libstdc++/gcc patches for the canary to pick it up sooner:

https://chromium-review.googlesource.com/c/v8/v8/+/7726129
https://chromium-review.googlesource.com/c/v8/v8/+/7726130
https://chromium-review.googlesource.com/c/v8/v8/+/7726131

Also updated the canary-base branch to include the v8_postmortem_support disabling and arch-specific gyp conditions

hubot pushed a commit to v8/v8 that referenced this pull request Apr 9, 2026
bigint.h declares std::unique_ptr members in the Processor class
but does not include <memory>. This compiled incidentally because
a transitive include was pulling in <memory> as a side effect.

With recent changes to the include chain, the transitive dependency
is no longer present, causing build failures when compiling with
libstdc++:

  bigint.h: error: no template named 'unique_ptr' in namespace 'std'

Fix by adding the direct include that bigint.h requires.

Refs: nodejs/node#62572
Change-Id: I8d43a9f77151a3a5b8caa7f271a16f19007c767b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726130
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#106355}
hubot pushed a commit to v8/v8 that referenced this pull request Apr 9, 2026
The C++ standard only guarantees std::nullptr_t. The unqualified
nullptr_t in the global namespace is not guaranteed and may be
unavailable when linking with libstdc++.

Bug: 348660658
Refs: nodejs/node#62572
Change-Id: I6b5649274e3cb12dce463d58e49f6eb96f83b14a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726129
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#106356}
hubot pushed a commit to v8/v8 that referenced this pull request Apr 9, 2026
value_or() is a function template that deduces its argument type.
Passing a braced-init-list {} causes deduction to fail in GCC
because {} has no type:

  wasm-shuffle-reducer.cc:576: error: no matching member function
  for call to 'value_or'
  note: candidate template ignored: couldn't infer template argument

Clang only accepted it by chance. Replace {} with uint8_t{0} to make
the type explicit.

Refs: https://eel.is/c++draft/temp.deduct.call
Refs: nodejs/node#62572
Change-Id: I589617c78fbc1a65a3475957f846ffb87364ff28
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726131
Reviewed-by: Matthias Liedtke <mliedtke@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#106357}
targos pushed a commit to targos/node that referenced this pull request Apr 16, 2026
Original commit message:

    [api] qualify std::nullptr_t in public headers for libstdc++ compat

    The C++ standard only guarantees std::nullptr_t. The unqualified
    nullptr_t in the global namespace is not guaranteed and may be
    unavailable when linking with libstdc++.

    Bug: 348660658
    Refs: nodejs#62572
    Change-Id: I6b5649274e3cb12dce463d58e49f6eb96f83b14a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726129
    Reviewed-by: Igor Sheludko <ishell@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106356}

Refs: v8/v8@6bb0449
targos pushed a commit to targos/node that referenced this pull request Apr 16, 2026
Original commit message:

    Add missing #include <memory> to bigint.h

    bigint.h declares std::unique_ptr members in the Processor class
    but does not include <memory>. This compiled incidentally because
    a transitive include was pulling in <memory> as a side effect.

    With recent changes to the include chain, the transitive dependency
    is no longer present, causing build failures when compiling with
    libstdc++:

      bigint.h: error: no template named 'unique_ptr' in namespace 'std'

    Fix by adding the direct include that bigint.h requires.

    Refs: nodejs#62572
    Change-Id: I8d43a9f77151a3a5b8caa7f271a16f19007c767b
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726130
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106355}

Refs: v8/v8@4f9f652
targos pushed a commit to targos/node that referenced this pull request Apr 16, 2026
Original commit message:

    Fix non-conforming braced-init-list in value_or()

    value_or() is a function template that deduces its argument type.
    Passing a braced-init-list {} causes deduction to fail in GCC
    because {} has no type:

      wasm-shuffle-reducer.cc:576: error: no matching member function
      for call to 'value_or'
      note: candidate template ignored: couldn't infer template argument

    Clang only accepted it by chance. Replace {} with uint8_t{0} to make
    the type explicit.

    Refs: https://eel.is/c++draft/temp.deduct.call
    Refs: nodejs#62572
    Change-Id: I589617c78fbc1a65a3475957f846ffb87364ff28
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726131
    Reviewed-by: Matthias Liedtke <mliedtke@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Cr-Commit-Position: refs/heads/main@{#106357}

Refs: v8/v8@913f679
@targos

This comment was marked as resolved.

@targos

This comment was marked as resolved.

@targos targos added the help wanted Issues that need assistance from volunteers or PRs that need help to proceed. label Apr 23, 2026
@richardlau
Copy link
Copy Markdown
Member

FWIW I ran a V8 CI on the earlier beff131 commit and that failed on Linux ppc64le and s390x with
e.g. https://ci.nodejs.org/job/node-test-commit-v8-linux/7118/nodes=rhel8-s390x,v8test=v8test/console

12:46:06 ERROR at //build/toolchain/gcc_toolchain.gni:711:18: Assignment had no effect.
12:46:06         inputs = rustc_wrapper_inputs
12:46:06                  ^-------------------
12:46:06 You set the variable "inputs" here and it was unused before it went
12:46:06 out of scope.
12:46:06 
12:46:06 Via these template invocations:
12:46:06   clang_toolchain("clang_ppc64")  //build/toolchain/linux/BUILD.gn:11
12:46:06   gcc_toolchain("clang_ppc64")  //build/toolchain/gcc_toolchain.gni:929
12:46:06   single_gcc_toolchain("clang_ppc64")  //build/toolchain/gcc_toolchain.gni:894
12:46:06 
12:46:06 See //build/toolchain/gcc_toolchain.gni:894:3: whence it was called.
12:46:06   single_gcc_toolchain(target_name) {
12:46:06   ^----------------------------------
12:46:06 See //build/toolchain/gcc_toolchain.gni:929:3: whence it was called.
12:46:06   gcc_toolchain(target_name) {
12:46:06   ^---------------------------
12:46:06 See //build/toolchain/linux/BUILD.gn:11:1: whence it was called.
12:46:06 clang_toolchain("clang_ppc64") {
12:46:06 ^-------------------------------
12:46:06 See //BUILD.gn:2406:3: which caused the file to be included.
12:46:06   action("run_torque" + suffix) {
12:46:06   ^------------------------------
12:46:06 Loading //third_party/zlib/BUILD.gn (referenced from //BUILD.gn:6868)
12:46:06 make: *** [Makefile:317: v8] Error 1

We think we might need a newer version of gn, so I've been working on that.
With 4684d41 and updated gn, we have failures,
e.g. https://ci.nodejs.org/job/node-test-commit-v8-linux/7142/nodes=rhel8-s390x,v8test=v8test/console

16:00:33 clang++: error: unknown argument: '-fno-lifetime-dse'
16:00:33 clang++: error: unknown argument: '-fsanitize-ignore-for-ubsan-feature=array-bounds'
16:00:33 clang++: error: unknown argument: '-fsanitize-ignore-for-ubsan-feature=return'

which are due to the version of clang we're using (19) not supporting those arguments.

On Linux ppc64le and s390x for upstream V8 the gn build files are being patched to remove compiler args that clang 19/20 does not support:
https://github.com/ibmruntimes/v8-build/blob/cda03de00a0a6a5fb04958e51ae365c78dcb379b/bin/v8.sh#L62-L71

we'll probably need to translate that into tools/make-v8.sh as it'll need to be patched out after tools/v8/fetch_deps.py is run. I can look at that after I finish updating the machines (updated gn and Java 25).

@richardlau
Copy link
Copy Markdown
Member

richardlau commented Apr 24, 2026

hmm. Okay for the V8 CI on Linux ppc64le and s390x with V8 14.8 we need to bump Rust (to 1.88) as per nodejs/build#4265 (which drags with it a bump to clang 20 since both depend on llvm).
https://ci.nodejs.org/job/node-test-commit-v8-linux/7147/nodes=rhel8-s390x,v8test=v8test/console

15:29:19 [39/2471] ln -f clang_s390x_for_rust_host_build_tools/obj/build/rust/std/libadler2.rlib clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib 2>/dev/null || (rm -rf clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib && cp -af clang_s390x_for_rust_host_build_tools/obj/build/rust/std/libadler2.rlib clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib)
15:29:19 FAILED: [code=1] clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib 
15:29:19 ln -f clang_s390x_for_rust_host_build_tools/obj/build/rust/std/libadler2.rlib clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib 2>/dev/null || (rm -rf clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib && cp -af clang_s390x_for_rust_host_build_tools/obj/build/rust/std/libadler2.rlib clang_s390x_for_rust_host_build_tools/prebuilt_rustc_sysroot/lib/rustlib/s390x-unknown-linux-gnu/lib/libadler2.rlib)
15:29:19 cp: cannot stat 'clang_s390x_for_rust_host_build_tools/obj/build/rust/std/libadler2.rlib': No such file or directory

I think doing that will break the V8 CI for V8 14.6, so I'm not inclined to update until we land 14.6 first (unless @targos believes we skip 14.6 and go to this one). This is a limitation with the way the V8 gn build builds the rust crates. AFAIK the gyp-based Node.js build can build the crates with a much wider range of Rust versions.

Unfortunately we cannot have two different versions of rust installed on RHEL from dnf and if possible I would like to avoid installing rust outside of the package manager on the machines we manage.

@targos
Copy link
Copy Markdown
Member Author

targos commented Apr 24, 2026

I'm going to land 14.6 as soon as CI is green.

@richardlau
Copy link
Copy Markdown
Member

On Linux ppc64le and s390x for upstream V8 the gn build files are being patched to remove compiler args that clang 19/20 does not support: https://github.com/ibmruntimes/v8-build/blob/cda03de00a0a6a5fb04958e51ae365c78dcb379b/bin/v8.sh#L62-L71

we'll probably need to translate that into tools/make-v8.sh as it'll need to be patched out after tools/v8/fetch_deps.py is run. I can look at that after I finish updating the machines (updated gn and Java 25).

FWIW

diff --git a/tools/make-v8.sh b/tools/make-v8.sh
index bf74606e1908a3..425abea8da1d59 100755
--- a/tools/make-v8.sh
+++ b/tools/make-v8.sh
@@ -27,6 +27,14 @@ if [ "$ARCH" = "s390x" ] || [ "$ARCH" = "ppc64le" ]; then
     *) ;;
   esac
 
+  find build/ \( -name "*.gn" -o -name "*.gni" \) | xargs sed -i \
+    -e '/-Wno-unsafe-buffer-usage-in-static-sized-array/d' \
+    -e '/-Wno-uninitialized-const-pointer/d' \
+    -e '/-Wno-unused-but-set-global/d' \
+    -e '/-fno-lifetime-dse/d' \
+    -e '/-fsanitize-ignore-for-ubsan-feature/d' \
+    -e '/-fdiagnostics-show-inlining-chain/d'
+
   # shellcheck disable=SC2154
   case "$CXX" in
     *clang*)

For clang 19 we also need to erase -Wno-nontrivial-memcall (not in the ibmruntimes/v8-build repo as clang 20 is used there).

targos pushed a commit to targos/node that referenced this pull request Apr 24, 2026
Original commit message:

    [api] qualify std::nullptr_t in public headers for libstdc++ compat

    The C++ standard only guarantees std::nullptr_t. The unqualified
    nullptr_t in the global namespace is not guaranteed and may be
    unavailable when linking with libstdc++.

    Bug: 348660658
    Refs: nodejs#62572
    Change-Id: I6b5649274e3cb12dce463d58e49f6eb96f83b14a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726129
    Reviewed-by: Igor Sheludko <ishell@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106356}

Refs: v8/v8@6bb0449
@targos
Copy link
Copy Markdown
Member Author

targos commented May 1, 2026

@StefanStojanovic It looks like we have a new error on Windows: https://github.com/nodejs/node/actions/runs/25207691004/job/73911437967?pr=62572

[340](https://github.com/nodejs/node/actions/runs/25207691004/job/73911437967#step:7:5341)
..\..\deps\v8\src\runtime\runtime-test.cc(1176,27): error : no matching constructor for initialization of 'std::atomic_flag' [D:\a\node\node\tools\v8_gypfiles\v8_base_without_compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\include\atomic(2799,20): message : candidate constructor (the implicit copy constructor) not viable: no known conversion from 'bool' to 'const atomic_flag' for 1st argument [D:\a\node\node\tools\v8_gypfiles\v8_base_without_compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\include\atomic(2826,15): message : candidate constructor not viable: requires 0 arguments, but 1 was provided [D:\a\node\node\tools\v8_gypfiles\v8_base_without_compiler.vcxproj]

@targos

This comment was marked as outdated.

richardlau added a commit to nodejs/build that referenced this pull request May 1, 2026
Update to a newer version of `gn` for compatibility with more recent
versions of V8.

Refs: nodejs/node#62572 (comment)
Signed-off-by: Richard Lau <richard.lau@ibm.com>
@joyeecheung
Copy link
Copy Markdown
Member

joyeecheung commented May 1, 2026

I looked into the snapshot issue a bit and I think there are at least 4 options to resolve it:

  1. Disable snapshot, but this would incur a significant startup performance regression
  2. Float a revert of https://chromium-review.googlesource.com/c/v8/v8/+/7668829 for now: this is a patch to eliminate a V8 sandbox escape path which is not applicable to us because we don't even enable sandbox. I have a commit in my branch to revert it and address the conflicts, locally it compiles and pass most tests except some wasm tests which I think are unrelated (though we'd need to fix those as well for this upgrade)
  3. To upstream it we could gate the old fast API call layout behind an ifndef V8_ENABLE_SANDBOX guard, then for Node.js which doesn't enable sandbox it will stay working. I'll upload a CL on Monday to see if the upstream would accept it.
  4. Longer term we could just add proper serialization support for the new layout of fast API calls (possibly via callbacks, like what we do for internal fields/context embedder data).

@targos

This comment was marked as outdated.

@targos

This comment was marked as outdated.

isheludko and others added 19 commits May 2, 2026 10:42
Original commit message:

    [runtime] Fix contextual stores to global with interceptor

    According to the spec, contextual store in strict mode must first
    check whether property exists and if not, the ReferenceError
    should be thrown instead of calling the interceptor setter. See
    https://tc39.es/ecma262/#sec-object-environment-records-setmutablebinding-n-v-s

    Drive-by:
     - introduce new Api v8::Object::GetPropertyAttributes(..) which is
       able to return "property does not exist" result, which wasn't
       possible with the existing GetPropertyAttributes(..) Api,
     - update GenericInterceptor* callbacks in test-api-interceptors.cc
       to better suite for implementing a proxy-like interceptor.

    Bug: 455600234
    Change-Id: I0986c18c406844f58c453e7aa7513c52a9097e04
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7718821
    Reviewed-by: Leszek Swirski <leszeks@chromium.org>
    Commit-Queue: Igor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106322}

Refs: v8/v8@088b711
Co-authored-by: Michaël Zasso <targos@protonmail.com>
PR-URL: nodejs#61898
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Original commit message:

    [api] qualify std::nullptr_t in public headers for libstdc++ compat

    The C++ standard only guarantees std::nullptr_t. The unqualified
    nullptr_t in the global namespace is not guaranteed and may be
    unavailable when linking with libstdc++.

    Bug: 348660658
    Refs: nodejs#62572
    Change-Id: I6b5649274e3cb12dce463d58e49f6eb96f83b14a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726129
    Reviewed-by: Igor Sheludko <ishell@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106356}

Refs: v8/v8@6bb0449
Original commit message:

    Add missing #include <memory> to bigint.h

    bigint.h declares std::unique_ptr members in the Processor class
    but does not include <memory>. This compiled incidentally because
    a transitive include was pulling in <memory> as a side effect.

    With recent changes to the include chain, the transitive dependency
    is no longer present, causing build failures when compiling with
    libstdc++:

      bigint.h: error: no template named 'unique_ptr' in namespace 'std'

    Fix by adding the direct include that bigint.h requires.

    Refs: nodejs#62572
    Change-Id: I8d43a9f77151a3a5b8caa7f271a16f19007c767b
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726130
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106355}

Refs: v8/v8@4f9f652
Original commit message:

    Fix non-conforming braced-init-list in value_or()

    value_or() is a function template that deduces its argument type.
    Passing a braced-init-list {} causes deduction to fail in GCC
    because {} has no type:

      wasm-shuffle-reducer.cc:576: error: no matching member function
      for call to 'value_or'
      note: candidate template ignored: couldn't infer template argument

    Clang only accepted it by chance. Replace {} with uint8_t{0} to make
    the type explicit.

    Refs: https://eel.is/c++draft/temp.deduct.call
    Refs: nodejs#62572
    Change-Id: I589617c78fbc1a65a3475957f846ffb87364ff28
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7726131
    Reviewed-by: Matthias Liedtke <mliedtke@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Cr-Commit-Position: refs/heads/main@{#106357}

Refs: v8/v8@913f679
Original commit message:

    qualify internal Cast in V8 FunctionTemplate::HasInstance

    FunctionTemplate::HasInstance used unqualified Cast<i::JSGlobalProxy>()
    which according to the C++ standard would resolve to
    FunctionTemplate::Cast instead of applying argument-dependent lookup.
    Clang would still apply ADL in this case, but not GCC.
    This patch qualifies the call to make it standard-compliant and
    compiles in GCC.

    Refs: https://eel.is/c++draft/basic.lookup.argdep#1.1
    Change-Id: I33a76b6119aa79b52d7d6374b7feda5145dfd1c8
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7805224
    Reviewed-by: Igor Sheludko <ishell@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Cr-Commit-Position: refs/heads/main@{#106981}

Refs: v8/v8@1a1b483
Original commit message:

    avoid TNode<Node>/nullptr ternary in JSCallReducer

    TNode is not a pointer type, so using the two in the same conditional
    expression is not standard compliant and would not compile in gcc.
    Use normal assignment to convert TNode into Node* instead.

    Change-Id: I0f4453919ecf10f40977a48c6bfd95eb2cae7b83
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7805225
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: Victor Gomes <victorgomes@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106978}

Refs: v8/v8@0e77a1c
aix: simplify OS::DecommitPages implementation

Replace complex mmap/munmap retry logic with mprotect + madvise
approach.

This fixes a race condition that was causing test failures in Node.js.
Node.js stress test was run with this fix and testing shows
0 failures out of 1000 runs of wpt/test-wasm-jsapi with this
patch compared to 224 failures without it.

Refs: nodejs#62647
Refs: https://chromium-review.googlesource.com/c/v8/v8/+/7780464
PR-URL: nodejs#61898
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Original commit message:

    [api] Deprecate setter/definer callbacks returning void

    ... in favor of callbacks returning v8::Boolean for both native data
    accessors and interceptors.

    Bug: 348660658
    Change-Id: I08bcab2bac1306a4fa86961edd9174bda41cde15
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7694272
    Commit-Queue: Igor Sheludko <ishell@chromium.org>
    Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106885}

Refs: v8/v8@d4480f1
To avoid compiler warnings.

Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Co-Authored-By: Joyee Cheung <joyeec9h3@gmail.com>
Post-mortem libraries should use v8's debug_helper library instead.
- Set/GetPrototype
- Holder

Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Signed-Off-By: Michaël Zasso <targos@protonmail.com>
@targos
Copy link
Copy Markdown
Member Author

targos commented May 2, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Issues and PRs related to build files or the CI. help wanted Issues that need assistance from volunteers or PRs that need help to proceed. needs-ci PRs that need a full CI run. semver-major PRs that contain breaking changes and should be released in the next major version. v8 engine Issues and PRs related to the V8 dependency.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants