Skip to content

[wasm] Bump helix V8 image and re-enable exnref CI legs (#129849)#130511

Merged
lewing merged 3 commits into
dotnet:mainfrom
pavelsavara:wasm-exnref-v8-helix-image-129849
Jul 11, 2026
Merged

[wasm] Bump helix V8 image and re-enable exnref CI legs (#129849)#130511
lewing merged 3 commits into
dotnet:mainfrom
pavelsavara:wasm-exnref-v8-helix-image-129849

Conversation

@pavelsavara

@pavelsavara pavelsavara commented Jul 10, 2026

Copy link
Copy Markdown
Member

Fixes #129849

Background

The exnref migration (#129851) exposed CI failures on the WASM legs.
#130142 fixed — wasm-feature-detect's exceptionsFinal() used atob.

Changes

Bump the Linux Helix WebAssembly image to an exnref-capable V8

  • ubuntu-26.04-helix-webassembly-amd64@sha256:73db6e43… (V8 15.2.47, verified locally by pulling the image and running d8). Previous pin baked V8 15.0.243.
  • Updated in eng/pipelines/coreclr/templates/helix-queues-setup.yml and eng/pipelines/libraries/helix-queues-setup.yml.
  • The Windows Helix digests and the azurelinux build container (V8 15.1.103) were already current, so they are unchanged.

Re-enable the CI legs disabled against this issue

  • eng/pipelines/common/templates/wasm-runtime-tests.yml — removed sendToHelix: false (Mono runtime tests run on Helix again).
  • eng/pipelines/runtime-linker-tests.yml — removed SkipTrimmingTestsRun=true (trimming tests execute on V8 again).
  • eng/pipelines/performance/runtime-wasm-perf.yml — restored the original pr: trigger (was pr: none).
  • eng/pipelines/runtime.yml — re-enabled the CoreCLR WasmTestOnV8 smoke scenario.

Harden the Chrome/V8 auto-updater

  • src/tasks/WasmBuildTasks/UpdateChromeVersions.cs — add a minimum-version guard so a Chrome-milestone-derived V8 can no longer silently downgrade the pinned *_V8Version below the exnref floor (15.1.103), which had already reverted the pins once via the automated bump. When the recomputed value would drop below the floor, the existing version is kept (mirroring the existing CDN-unavailable fallback).

…otnet#129849)

The ubuntu-26.04 helix-webassembly image now bakes V8 15.2.47, which supports --experimental-wasm-exnref. Bump the pinned digest and revert the two temporary workarounds (sendToHelix:false for Mono runtime tests, SkipTrimmingTestsRun=true for trimming tests) that were skipping V8 execution while the old V8 15.0.243 image was in use.
…or (dotnet#129849)

UpdateChromeVersions derives the V8 version from the Chrome milestone, which already reverted the pinned V8 below the exnref-capable floor (15.1.103) once. Add a minimum-version guard that keeps the existing V8 version whenever the recomputed value would drop below the floor, mirroring the existing CDN-unavailable fallback.
…et#129849)

With the atob feature-detection polyfill (dotnet#130142) covering both the Mono and CoreCLR loaders and an exnref-capable V8 now in the helix image and pinned in BrowserVersions.props, restore the perf wasm v8 PR trigger and the CoreCLR WasmTestOnV8 smoke scenario that were disabled while the engine could not run exnref.
@pavelsavara

Copy link
Copy Markdown
Member Author

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@pavelsavara pavelsavara added arch-wasm WebAssembly architecture os-browser Browser variant of arch-wasm labels Jul 10, 2026
@pavelsavara pavelsavara added this to the 11.0.0 milestone Jul 10, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the WebAssembly CI infrastructure to run standardized WASM exception handling (exnref) again by bumping the Linux Helix webassembly image digest to a V8 build that supports exnref, re-enabling previously-disabled V8-based CI legs, and hardening the Chrome→V8 auto-update task to prevent accidental downgrades below a known-good V8 floor.

Changes:

  • Bump ubuntu-26.04-helix-webassembly-amd64 Helix queue image digest in both CoreCLR and Libraries pipeline queue setup templates.
  • Re-enable V8 execution legs for WASM runtime tests, trimming tests, perf wrapper PR triggers, and the CoreCLR V8 smoke scenario.
  • Add a minimum V8 version guard (15.1.103) to the Chrome/V8 version updater task to prevent silent downgrades below the exnref-capable baseline.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/tasks/WasmBuildTasks/UpdateChromeVersions.cs Adds a minimum V8 floor and reuses a helper to keep the existing pinned V8 version when computed values would regress below the floor or when CDN artifacts are unavailable.
eng/pipelines/runtime.yml Re-enables the WasmTestOnV8 smoke scenario for CoreCLR WASM runs.
eng/pipelines/runtime-linker-tests.yml Removes the trimming-test skip flag so trimming tests execute on V8 again.
eng/pipelines/performance/runtime-wasm-perf.yml Restores PR triggering (with path filters) for the WASM perf wrapper pipeline.
eng/pipelines/libraries/helix-queues-setup.yml Updates the Linux Helix webassembly container digest for WASI / browser WASM / Firefox legs.
eng/pipelines/coreclr/templates/helix-queues-setup.yml Updates the Linux Helix webassembly container digest for CoreCLR browser WASM legs (public/internal).
eng/pipelines/common/templates/wasm-runtime-tests.yml Removes the sendToHelix: false override so Mono WASM runtime tests are sent to Helix again.

@pavelsavara pavelsavara marked this pull request as ready for review July 10, 2026 18:20
@pavelsavara

Copy link
Copy Markdown
Member Author

Looks good
List
Log

[20:02:27] info: Using js engine V8 from path /home/helixbot/.jsvu/bin/v8
[20:02:27] info: 15.2.47
[20:02:27] info: Loaded RemoteLoopServer.GenericHandler middleware
[20:02:27] info: Loaded NetCoreServer.GenericHandler middleware
warn: Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer[8]
      The ASP.NET Core developer certificate is not trusted. For information about trusting the ASP.NET Core developer certificate, see https://aka.ms/aspnet/https-trust-dev-cert
[20:02:28] warn: Cannot find symbols file dotnet.native.js.symbols
[20:02:28] info: 
                 
[20:02:28] info: Running /home/helixbot/.jsvu/bin/v8 
                 
[20:02:28] info: Warning: unknown flag --expose_wasm.
[20:02:28] info: Try --help for options
[20:02:28] info: Incoming arguments: --setenv=DOTNET_TEST_WEBSOCKETHOST=127.0.0.1:41087 --setenv=DOTNET_TEST_HTTPHOST=127.0.0.1:41087 --setenv=DOTNET_TEST_REMOTE_LOOP_HOST=127.0.0.1:41087 --setenv=DOTNET_TEST_SECUREWEBSOCKETHOST=127.0.0.1:37657 --setenv=DOTNET_TEST_SECUREHTTPHOST=127.0.0.1:37657 --setenv=DOTNET_TEST_HTTP2HOST=127.0.0.1:37657 --setenv=TZ=Europe/Berlin --setenv=XHARNESS_LOG_TEST_START=true --run WasmTestRunner.dll System.Runtime.InteropServices.JavaScript.Tests.dll -parallelThreads 1 -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing
[20:02:28] info: Application arguments: --run WasmTestRunner.dll System.Runtime.InteropServices.JavaScript.Tests.dll -parallelThreads 1 -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing
[20:02:28] info: console.info: Initializing dotnet version 11.0.0 commit hash 327668bb213301e79dee1c19961055f74c686ec4
[20:02:28] info: Using threadless Xunit runner
[20:02:28] info: Discovering: System.Runtime.InteropServices.JavaScript.Tests.dll (method display = ClassAndMethod, method display options = None)
[20:02:30] info: Discovered:  System.Runtime.InteropServices.JavaScript.Tests.dll (found 184 of 187 test cases)
[20:02:30] info: Starting:    System.Runtime.InteropServices.JavaScript.Tests.dll


[20:02:38] info: WASM EXIT 0
[20:02:38] info: Process v8 exited with 0

@lewing

lewing commented Jul 11, 2026

Copy link
Copy Markdown
Member

/ba-g x86 failure unrelated

@lewing lewing merged commit 508ea61 into dotnet:main Jul 11, 2026
226 of 233 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasm WebAssembly architecture area-Infrastructure-mono os-browser Browser variant of arch-wasm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[browser] Use the new version of V8 with exnref

3 participants