[browser][wasm] Prep changes ahead of emsdk bump#129383
Merged
Merged
Conversation
akoeplinger
approved these changes
Jun 14, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates .NET’s WASM/Browser infrastructure and runtime glue code, focusing on browser test provisioning updates and WASM runtime behavior adjustments (timers/keepalive and WASM_BIGINT-related export/link behavior).
Changes:
- Update WASM test browser provisioning by bumping Firefox/GeckoDriver versions and switching Linux Firefox downloads to
.tar.xz. - Fix/adjust runtime keepalive accounting around timers/GC dump timeouts and startup error paths.
- Modify CoreCLR WASM build/export behavior around
WASM_BIGINT(notably exported HEAP views) and corerun Node linking options; update WASM build/debug docs accordingly.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/mono/browser/runtime/startup.ts | Adjusts keepalive behavior on runtime initialization failure path. |
| src/mono/browser/runtime/scheduling.ts | Balances keepalive with timer rescheduling and adjusts timer tick bookkeeping order. |
| src/mono/browser/runtime/loader/exit.ts | Guards Node-only stream flushing to avoid running it outside Node. |
| src/mono/browser/runtime/diagnostics/dotnet-gcdump.ts | Balances keepalive when rescheduling/canceling GC dump stop timeout. |
| src/coreclr/runtime.proj | Introduces a target affecting WASM_BIGINT-related export selection for browser builds. |
| src/coreclr/hosts/corerun/CMakeLists.txt | Changes corerun Node link flags to explicitly disable WASM_BIGINT. |
| eng/testing/wasm-provisioning.targets | Switches Linux Firefox provisioning URL from .tar.bz2 to .tar.xz. |
| eng/testing/BrowserVersions.props | Bumps Firefox/GeckoDriver versions used in WASM test runs. |
| eng/native.wasm.targets | Expands exported Emscripten runtime methods (HEAP views) and gates HEAP64/HEAPU64 on a property. |
| docs/workflow/building/coreclr/wasm.md | Updates Node debugging launch args. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
4a68a47 to
2dde4e9
Compare
Member
Author
|
/ba-g known CI issues |
This was referenced Jun 15, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Split off from #129299
Summary
This PR carries the WASM changes that are independent of the upcoming Emscripten 5.0.6 / LLVM 23 toolchain bump, so they can be reviewed and merged on their own. Splitting them out keeps the toolchain-bump PR focused on the parts that actually require the new SDK.
What's included
1. Browser version bump — Firefox / GeckoDriver
eng/testing/BrowserVersions.props— Firefox125.0.1→140.11.0esr, GeckoDriver0.34.0→0.37.0eng/testing/wasm-provisioning.targets— Firefox archive.tar.bz2→.tar.xz(new Mozilla release format)Fully independent of the toolchain; just updates the browsers used for WASM testing.
2. Keepalive / timer balance fixes (runtime bug fixes)
src/mono/browser/runtime/scheduling.ts— balanceclearTimeoutwithruntimeKeepalivePop, and resetlastScheduledTimeoutIdbefore executing the timer ticksrc/mono/browser/runtime/diagnostics/dotnet-gcdump.ts—runtimeKeepalivePopwhen a pending GC-dump timeout is clearedsrc/mono/browser/runtime/startup.ts— remove a stray, unbalancedruntimeKeepalivePopon the error pathsrc/mono/browser/runtime/loader/exit.ts— only runflush_node_streamsunder NodeThese correct the runtime keepalive ref-count so the event loop can drain/exit properly; unrelated to the SDK version.
3. Disable
WASM_BIGINTfor corerun / Node (DWARF debugger workaround)src/coreclr/hosts/corerun/CMakeLists.txt— link corerun with-sWASM_BIGINT=0under Node withoutHEAP64/HEAPU64views are not exported when BigInt is offdocs/workflow/building/coreclr/wasm.md— update the Node debug-launch args