Skip to content

deps: update v8 to 15.7 - #66799

Open
legendecas wants to merge 11 commits into
nodejs:mainfrom
legendecas:v8-15.7
Open

legendecas wants to merge 11 commits into
nodejs:mainfrom
legendecas:v8-15.7

Conversation

@legendecas

@legendecas legendecas commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

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

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to Node.js builds or CI infrastructure. dependencies PRs that add, update, or configure Node.js dependencies. needs-ci PRs that need a full CI run. labels Oct 16, 2026
@legendecas legendecas added the v8 engine Issues and PRs related to the V8 dependency. label Oct 16, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecas

Copy link
Copy Markdown
Member Author

Continuing in #67070 for V8 v15.8.

@legendecas legendecas reopened this Oct 29, 2026
targos and others added 6 commits October 29, 2026 10:23
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/8533406
Signed-off-by: Joyee Cheung <[email protected]>
PR-URL: nodejs#66601
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
Original commit message:

    [platform] support madvise(3C) across ALL illumos revisions

    In illumos, madvise(3C) now takes `void *` for its first argument
    post-illumos#14418, but uses `caddr_t` pre-illumos#14418. This fix will
    detect if the illumos mman.h file in use is pre-or-post-illumos#14418 so
    builds can work either way.

    Co-Authored-By: Dan McDonald <[email protected]>
    Refs: nodejs#65161
    Change-Id: I87faa4e7042cf9b02449bd3debfdd7fed30e5d3c
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8532506
    Reviewed-by: Michael Lippautz <[email protected]>
    Commit-Queue: Joyee Cheung <[email protected]>
    Cr-Commit-Position: refs/heads/main@{#111024}

Refs: v8/v8@5dea94c
Original commit message:

    [sandbox] fix dispatch table access on illumos

    illumos pointers are VA48, can allocate from the top of the 64-bit range
    as well.

    Co-Authored-By: Dan McDonald <[email protected]>
    Refs: nodejs#65161
    Change-Id: I7d803ca0da2ab6c7cc206cb964d63683523a13da

Refs: v8/v8@011b2de
Original commit message:

    Do not use preserve_most when targeting the MSVC ABI

    In the Microsoft C++ ABI, because preserve_most changes the calling
    convention, clang mangles it with U while cdecl gets an A, which
    means components compiled with different toolchains can fail to link.
    Make it a no-op when targeting MSVC and its ABI.

    Co-Authored-By: Stefan Stojanovic <[email protected]>
    Refs: nodejs#55784
    Change-Id: I67b49e739942d4026ac060be35bb39ec22256cbd

Refs: v8/v8@7d7e8c2
Original commit message:

    [tracing] do not define legacy tracing classes when using Perfetto

    Otherwise the Windows build of Node.js fails with `undefined symbol`
    errors due to the missing destructor.

    Change-Id: Id0841aed2f0a8f0cfe8889c39150552e31ee5f96
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8580049
    Reviewed-by: Yang Guo <[email protected]>
    Reviewed-by: Chengzhong Wu <[email protected]>
    Commit-Queue: Chengzhong Wu <[email protected]>
    Cr-Commit-Position: refs/heads/main@{#110947}

Refs: v8/v8@785a2ea
@legendecas
legendecas marked this pull request as ready for review October 29, 2026 15:09
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@codecov

codecov Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.69%. Comparing base (502c117) to head (514db2e).
⚠️ Report is 9 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #66799      +/-   ##
==========================================
+ Coverage   90.66%   90.69%   +0.02%     
==========================================
  Files         797      797              
  Lines      278791   278773      -18     
  Branches    53620    53604      -16     
==========================================
+ Hits       252768   252820      +52     
+ Misses      16376    16302      -74     
- Partials     9647     9651       +4     

see 37 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.

@legendecas

Copy link
Copy Markdown
Member Author

Updated this PR to the stable branch of V8 15.7.

@richardlau richardlau added the semver-major PRs that contain breaking changes and should be released in the next major version. label Oct 30, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecas

legendecas commented Oct 30, 2026 •

Copy link
Copy Markdown
Member Author

@nodejs/v8-update CI is green. Please take a look, thanks

@legendecas

Copy link
Copy Markdown
Member Author

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecas

legendecas commented Oct 30, 2026 •

Copy link
Copy Markdown
Member Author
22:45:02 FAILED: [code=1] gen/metagen/instance-types.h gen/metagen/layouts.json 
22:45:02 python3 ../../tools/metagen/metagen.py --depfile gen/metagen/instance-types.h.d --driver ../../tools/metagen/harvest-driver.cc --v8-root ../.. --build-dir . --source-root ../../ --out gen/metagen --flags-from-target //:v8_base_without_compiler --flags-toolchain //build/toolchain/linux:clang_s390x --flags-dependency obj/v8_base_without_compiler.ninja --clang-resource-dir ../../../../../../../../../usr/lib/clang/20 --driver-mode=gcc --libclang-dir ../../third_party/llvm-libclang
22:45:02 Traceback (most recent call last):
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/bindings/python/clang/cindex.py", line 4502, in get_cindex_library
22:45:02     library = cdll.LoadLibrary(self.get_filename())
22:45:02               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
22:45:02   File "/usr/lib64/python3.11/ctypes/__init__.py", line 454, in LoadLibrary
22:45:02     return self._dlltype(name)
22:45:02            ^^^^^^^^^^^^^^^^^^^
22:45:02   File "/usr/lib64/python3.11/ctypes/__init__.py", line 376, in __init__
22:45:02     self._handle = _dlopen(self._name, mode)
22:45:02                    ^^^^^^^^^^^^^^^^^^^^^^^^^
22:45:02 OSError: /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/lib/libclang.so: ELF file data encoding not big-endian
22:45:02 
22:45:02 During handling of the above exception, another exception occurred:
22:45:02 
22:45:02 Traceback (most recent call last):
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/out.gn/s390x.release/../../tools/metagen/metagen.py", line 490, in <module>
22:45:02     sys.exit(main())
22:45:02              ^^^^^^
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/out.gn/s390x.release/../../tools/metagen/metagen.py", line 367, in main
22:45:02     cpp_res = cpp_hier.scan_cpp(v8_root, driver_path, flags, parse_cwd=parse_cwd)
22:45:02               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/metagen/cpp_hier.py", line 291, in scan_cpp
22:45:02     index = cindex.Index.create()
22:45:02             ^^^^^^^^^^^^^^^^^^^^^
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/bindings/python/clang/cindex.py", line 3280, in create
22:45:02     return Index(conf.lib.clang_createIndex(excludeDecls, 0))
22:45:02                  ^^^^^^^^
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/bindings/python/clang/cindex.py", line 260, in __get__
22:45:02     value = self.wrapped(instance)
22:45:02             ^^^^^^^^^^^^^^^^^^^^^^
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/bindings/python/clang/cindex.py", line 4474, in lib
22:45:02     lib = self.get_cindex_library()
22:45:02           ^^^^^^^^^^^^^^^^^^^^^^^^^
22:45:02   File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/bindings/python/clang/cindex.py", line 4510, in get_cindex_library
22:45:02     raise LibclangError(msg)
22:45:02 clang.cindex.LibclangError: /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/third_party/llvm-libclang/lib/libclang.so: ELF file data encoding not big-endian To provide the path to the directory containing libclang, you can use the environment variable LIBCLANG_LIBRARY_PATH or call Config.set_library_path(). Alternatively, you can specify the path of the library file using LIBCLANG_LIBRARY_FILE or Config.set_library_file().

Build failed on power9le and s390x /cc @nodejs/platform-s390 @nodejs/platform-ppc

@richardlau

Copy link
Copy Markdown
Member

@legendecas I think we need to mirror the change from a3fe991 / https://chromium-review.googlesource.com/c/v8/v8/+/8524366 in

gn gen -v "out.gn/$BUILD_ARCH_TYPE" --args="$GN_COMPILER_OPTS is_component_build=false is_debug=false v8_target_cpu=\"$TARGET_ARCH\" target_cpu=\"$TARGET_ARCH\" v8_enable_backtrace=true v8_use_metagen_instance_types=false ${GN_RUST_ARGS} $CC_WRAPPER"

i.e. change v8_use_metagen_instance_types=false to v8_use_metagen=false.

@legendecas

Copy link
Copy Markdown
Member Author

Hmm maybe a3fe991 is not enough. I'll take a look tomorrow.

@richardlau

Copy link
Copy Markdown
Member

Hmm maybe a3fe991 is not enough. I'll take a look tomorrow.

That only updates the gyp based build used by Node.js. The V8 CI runs V8's gn based build.

FWIW in https://ci.nodejs.org/job/node-test-commit-v8-linux/nodes=rhel8-s390x,v8test=v8test/7472/consoleFull we can see

02:44:39 WARNING at the command-line "--args":1:279: Build argument has no effect.
02:44:39 is_clang=true clang_base_path="/usr" clang_use_chrome_plugins=false treat_warnings_as_errors=false use_custom_libcxx=false clang_version="20" is_component_build=false is_debug=false v8_target_cpu="s390x" target_cpu="s390x" v8_enable_backtrace=true v8_use_metagen_instance_types=false rustc_version="1.88.0" rust_sysroot_absolute="/usr" rust_bindgen_root="/usr" cc_wrapper="ccache"
02:44:39                                                                                                                                                                                                                                                                                       ^----
02:44:39 The variable "v8_use_metagen_instance_types" was set as a build argument
02:44:39 but never appeared in a declare_args() block in any buildfile.
02:44:39 
02:44:39 To view all possible args, run "gn args --list <out_dir>"
02:44:39 
02:44:39 The build continued as if that argument was unspecified.
02:44:39 

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

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 Node.js builds or CI infrastructure. dependencies PRs that add, update, or configure Node.js dependencies. 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.

6 participants