Uh oh!
There was an error while loading. Please reload this page.
[browser] atob polyfil for feature detection in V8 - #130142
Conversation
Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara |
There was a problem hiding this comment.
Pull request overview
This PR adjusts the browser/wasm JavaScript loader’s polyfill initialization to add an atob fallback for shell (V8/d8) scenarios used during engine feature detection, and updates various V8 invocation scripts/comments to stop passing --experimental-wasm-exnref.
Changes:
- Split/rename polyfill initialization into “early” vs “loader” phases and add an
atobpolyfill for shell environments. - Remove
--experimental-wasm-exnreffrom V8/Node invocation in wasm sample and generated run-v8 script. - Update pipeline comments referencing the Helix V8 limitation.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/native/libs/Common/JavaScript/loader/run.ts | Renames the loader polyfill entrypoint call to initPolyfillsLoader(). |
| src/native/libs/Common/JavaScript/loader/polyfills.ts | Adds shell atob polyfill and renames polyfill init functions. |
| src/native/libs/Common/JavaScript/loader/dotnet.ts | Switches early polyfill initialization to initPolyfillsEarly(). |
| src/mono/sample/wasm/wasm.mk | Removes --experimental-wasm-exnref from sample run commands. |
| src/mono/sample/wasm/console-v8/Wasm.Console.V8.Sample.csproj | Removes --experimental-wasm-exnref from the V8 XHarness run command. |
| src/mono/browser/build/BrowserWasmApp.targets | Updates generated run-v8.sh to no longer pass --experimental-wasm-exnref. |
| eng/pipelines/runtime-linker-tests.yml | Updates comment wording about Helix V8 “exnref” support. |
| eng/pipelines/performance/runtime-wasm-perf.yml | Updates comment wording about V8 “exnref” support. |
| eng/pipelines/common/templates/wasm-runtime-tests.yml | Updates comment wording about V8 “exnref” support. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
lewing
commented
Jul 6, 2026
/ba-g untracked failures are unrelated |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
exnref is no longer experimental in current V8 versions, so the flag is unrecognized and produces warnings. Remove it from all remaining runner templates, test execution targets, the Node sample, and docs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
pavelsavara
commented
Jul 10, 2026
/ba-g unrelated failures |
Uh oh!
There was an error while loading. Please reload this page.
…30511) 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).
Co-authored-by: Larry Ewing <lewing@gmail.com>
…30511) 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).
No description provided.