Skip to content

deps: Bump V8 13.8.258.26 -> 14.6.202.10, simdutf 7.3.4 -> 8.1.0, fp16#43928

Merged
jwendell merged 1 commit intoenvoyproxy:mainfrom
jwendell:bump-v8
Mar 12, 2026
Merged

deps: Bump V8 13.8.258.26 -> 14.6.202.10, simdutf 7.3.4 -> 8.1.0, fp16#43928
jwendell merged 1 commit intoenvoyproxy:mainfrom
jwendell:bump-v8

Conversation

@jwendell
Copy link
Copy Markdown
Member

Bump V8 to 14.6.202.10 which converts JSDispatchTable from per-IsolateGroup to per-Isolate (commit 4d1e2794e), eliminating the race condition in concurrent Isolate creation that caused crashes in Wasm VM cloning.

Dependency updates required by V8 14.6:

  • simdutf 7.3.4 -> 8.1.0 (V8 now uses atomic simdutf functions)
  • fp16 updated to revision 3d2de1816 (matches V8 14.6 bundled version)

Workarounds for LLVM 18 toolchain compatibility (all marked with TODO(jwendell) for removal once LLVM is bumped to 19+):

  • std::atomic_ref polyfill: LLVM 18's libc++ does not provide std::atomic_ref (C++20 P0019R8). V8 14.6 and simdutf use it pervasively. A polyfill header is injected into both V8 and simdutf via patches/patch_cmds using reinterpret_cast<std::atomic*>.

  • consteval -> constexpr: clang 18 has bugs with consteval in certain template instantiation contexts (e.g. regexp-bytecodes-inl.h). All consteval occurrences in V8 are downgraded to constexpr, which is strictly more permissive and functionally safe.

  • ShuffleArray<>: clang 18 does not support default template argument deduction on alias templates without explicit <>.

Other V8 14.6 patch updates:

  • Remove @libcxx//:libc++ from V8 deps (Envoy uses its own toolchain)
  • Remove -latomic linker flag
  • Add -Wno-invalid-offsetof, -Wno-dangling-pointer, -Wno-dangling-reference
  • Add macros.h to fp16.BUILD for new fp16 revision

@repokitteh-read-only
Copy link
Copy Markdown

As a reminder, PRs marked as draft will not be automatically assigned reviewers,
or be handled by maintainer-oncall triage.

Please mark your PR as ready when you want it to be reviewed!

🐱

Caused by: #43928 was opened by jwendell.

see: more, trace.

@phlax
Copy link
Copy Markdown
Member

phlax commented Mar 12, 2026

dragonbox, highway and fast_float might also want to be updated - they were all picked/pinned to the version that v8 was using

@jwendell
Copy link
Copy Markdown
Member Author

dragonbox, highway and fast_float might also want to be updated - they were all picked/pinned to the version that v8 was using

Dep Status
V8 13.8.258.26 → 14.6.202.10 ✅
simdutf 7.3.4 → 8.1.0 ✅
fp16 Updated to match V8 14.6 ✅
fast_float 7.0.0 — already matches V8 14.6 ✅
dragonbox 6c7c925 — already matches V8 14.6 ✅
highway 1.2.0 — newer than V8 14.6's bundled version ✅
proxy_wasm_cpp_host beb8a4e (Jan 2026) — uses V8 14.4, compatible ✅

@jwendell jwendell force-pushed the bump-v8 branch 3 times, most recently from 081c67e to 85c450c Compare March 12, 2026 15:08
Bump V8 to 14.6.202.10 which converts JSDispatchTable from per-IsolateGroup
to per-Isolate (commit 4d1e2794e), eliminating the race condition in
concurrent Isolate creation that caused crashes in Wasm VM cloning.

Dependency updates required by V8 14.6:
- simdutf 7.3.4 -> 8.1.0 (V8 now uses atomic simdutf functions)
- fp16 updated to revision 3d2de1816 (matches V8 14.6 bundled version)

Workarounds for LLVM 18 toolchain compatibility (all marked with
TODO(jwendell) for removal once LLVM is bumped to 19+):

- std::atomic_ref polyfill: LLVM 18's libc++ does not provide
  std::atomic_ref (C++20 P0019R8). V8 14.6 and simdutf use it
  pervasively. A polyfill header is injected into both V8 and simdutf
  via patches/patch_cmds using reinterpret_cast<std::atomic<T>*>.

- consteval -> constexpr: clang 18 has bugs with consteval in certain
  template instantiation contexts (e.g. regexp-bytecodes-inl.h). All
  consteval occurrences in V8 are downgraded to constexpr, which is
  strictly more permissive and functionally safe.

- ShuffleArray<>: clang 18 does not support default template argument
  deduction on alias templates without explicit <>.

Other V8 14.6 patch updates:
- Remove @libcxx//:libc++ from V8 deps (Envoy uses its own toolchain)
- Remove -latomic linker flag
- Add -Wno-invalid-offsetof, -Wno-dangling-pointer, -Wno-dangling-reference
- Add macros.h to fp16.BUILD for new fp16 revision

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jonh Wendell <jwendell@redhat.com>
@jwendell jwendell marked this pull request as ready for review March 12, 2026 16:39
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Mar 12, 2026
@repokitteh-read-only
Copy link
Copy Markdown

CC @envoyproxy/dependency-shepherds: Your approval is needed for changes made to (bazel/.*repos.*\.bzl)|(bazel/dependency_imports\.bzl)|(api/bazel/.*\.bzl)|(.*/requirements\.txt)|(.*\.patch).
envoyproxy/dependency-shepherds assignee is @RyanTheOptimist

🐱

Caused by: #43928 was ready_for_review by jwendell.

see: more, trace.

Copy link
Copy Markdown
Member

@phlax phlax left a comment

Choose a reason for hiding this comment

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

lgtm, thanks @jwendell

Comment thread bazel/repositories.bzl
"grep -rl 'std::atomic_ref' src/ include/ --include='*.h' --include='*.cc' | grep -v atomic_ref_polyfill | xargs -r sed -i '1s!^!#include \"src/base/atomic_ref_polyfill.h\"\\n!'",
# TODO(jwendell): Remove consteval->constexpr workaround once the LLVM toolchain is
# bumped. Clang 18 has bugs with consteval in template contexts (fixed in clang 19+).
"find ./src -type f \\( -name '*.h' -o -name '*.cc' \\) -exec sed -i 's/consteval/constexpr/g' {} \\;",
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.

these will be pain to rework in bzlmod - no patch_cmds

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Mar 12, 2026
@jwendell jwendell merged commit 3cb0d8f into envoyproxy:main Mar 12, 2026
29 of 30 checks passed
bmjask pushed a commit to bmjask/envoy that referenced this pull request Mar 14, 2026
envoyproxy#43928)

Bump V8 to 14.6.202.10 which converts JSDispatchTable from
per-IsolateGroup to per-Isolate (commit 4d1e2794e), eliminating the race
condition in concurrent Isolate creation that caused crashes in Wasm VM
cloning.

Dependency updates required by V8 14.6:
- simdutf 7.3.4 -> 8.1.0 (V8 now uses atomic simdutf functions)
- fp16 updated to revision 3d2de1816 (matches V8 14.6 bundled version)

Workarounds for LLVM 18 toolchain compatibility (all marked with
TODO(jwendell) for removal once LLVM is bumped to 19+):

- std::atomic_ref polyfill: LLVM 18's libc++ does not provide
std::atomic_ref (C++20 P0019R8). V8 14.6 and simdutf use it pervasively.
A polyfill header is injected into both V8 and simdutf via
patches/patch_cmds using reinterpret_cast<std::atomic<T>*>.

- consteval -> constexpr: clang 18 has bugs with consteval in certain
template instantiation contexts (e.g. regexp-bytecodes-inl.h). All
consteval occurrences in V8 are downgraded to constexpr, which is
strictly more permissive and functionally safe.

- ShuffleArray<>: clang 18 does not support default template argument
deduction on alias templates without explicit <>.

Other V8 14.6 patch updates:
- Remove @libcxx//:libc++ from V8 deps (Envoy uses its own toolchain)
- Remove -latomic linker flag
- Add -Wno-invalid-offsetof, -Wno-dangling-pointer,
-Wno-dangling-reference
- Add macros.h to fp16.BUILD for new fp16 revision

Signed-off-by: Jonh Wendell <jwendell@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: bjmask <11672696+bjmask@users.noreply.github.com>
fishcakez pushed a commit to fishcakez/envoy that referenced this pull request Mar 25, 2026
envoyproxy#43928)

Bump V8 to 14.6.202.10 which converts JSDispatchTable from
per-IsolateGroup to per-Isolate (commit 4d1e2794e), eliminating the race
condition in concurrent Isolate creation that caused crashes in Wasm VM
cloning.

Dependency updates required by V8 14.6:
- simdutf 7.3.4 -> 8.1.0 (V8 now uses atomic simdutf functions)
- fp16 updated to revision 3d2de1816 (matches V8 14.6 bundled version)

Workarounds for LLVM 18 toolchain compatibility (all marked with
TODO(jwendell) for removal once LLVM is bumped to 19+):

- std::atomic_ref polyfill: LLVM 18's libc++ does not provide
std::atomic_ref (C++20 P0019R8). V8 14.6 and simdutf use it pervasively.
A polyfill header is injected into both V8 and simdutf via
patches/patch_cmds using reinterpret_cast<std::atomic<T>*>.

- consteval -> constexpr: clang 18 has bugs with consteval in certain
template instantiation contexts (e.g. regexp-bytecodes-inl.h). All
consteval occurrences in V8 are downgraded to constexpr, which is
strictly more permissive and functionally safe.

- ShuffleArray<>: clang 18 does not support default template argument
deduction on alias templates without explicit <>.

Other V8 14.6 patch updates:
- Remove @libcxx//:libc++ from V8 deps (Envoy uses its own toolchain)
- Remove -latomic linker flag
- Add -Wno-invalid-offsetof, -Wno-dangling-pointer,
-Wno-dangling-reference
- Add macros.h to fp16.BUILD for new fp16 revision

Signed-off-by: Jonh Wendell <jwendell@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Envoy Data-plane pods crash on first auth/ratelimit policy deployment

3 participants