Repository navigation
Run WebAssembly applications using CoreCLR #134337
Copy link
Copy link
Open
Labels
EpicGroups multiple user stories. Can be grouped under a theme.Groups multiple user stories. Can be grouped under a theme.arch-wasmWebAssembly architectureWebAssembly architecturearea-VM-coreclrtrackingThis issue is tracking the completion of other related issues.This issue is tracking the completion of other related issues.
Milestone
Description
Goal
Run WebAssembly applications on CoreCLR in .NET 12.
Plan
R2R
Publish the WebAssembly template and other apps with full R2R by default in Release.
- Add WASM SDK support for R2R
- Enable browser composite ReadyToRun publishing in [wasm][coreclr] Enable composite ReadyToRun publishing #134618
- Split eager and lazy R2R code in draft testing R2r split #133595; review the partitioned R2R design in draft [Proposal] Partitioned R2R WASM modules #135544
- Fix generated P/Invoke support for customer libraries
- Validate Release publishing in macrobenchmarks
- Make R2R the default for Release publish
- Define Debug and Release native-linking modes
Performance
Reduce app size and startup time with PGO and lazy R2R loading.
- Establish macrobenchmark baselines, CPU profiles, and performance targets
- Add per-assembly and composite browser R2R microbenchmark lanes in Add CoreCLR WASM R2R performance lane performance#5297 and Add CoreCLR WASM composite R2R microbenchmark lane performance#5324
- Collect interpreter block-count PGO data in Interpreter block-count PGO for WebAssembly CoreCLR #132721
- Produce the browser WASM PGO profile package in [browser][coreCLR] R2R: Produce the WASM interpreter PGO profile package (optimization.browser-wasm.MIBC.Runtime) #132718 and consume it in the CoreLib R2R build in [browser][coreCLR] R2R: Consume the WASM PGO profile in the CoreLib R2R build #132717
- Enable WASM RyuJIT PGO in [browser][coreCLR] R2R: Enable PGO instrumentation for the WASM RyuJIT #130521
- Add PGO for R2R configurations
- Investigate the per-assembly R2R TensorPrimitives regression in [wasm][coreclr][R2R] TensorPrimitives.IndexOfMax<double> remains interpreted and ~18x slower #134559
- Reduce eager R2R code and startup download size using a Blazor startup profile
- Support and measure lazy R2R loading and reload
SDK
Ship CoreCLR WebAssembly packs and simplify the SDK for building and publishing apps.
- Build and publish CoreCLR WebAssembly packs, including correct workload runtime-pack resolution
- Port WASM R2R output naming to SDK Crossgen2 tasks in Port runtime PR dotnet/runtime#133111 R2R changes to SDK Crossgen tasks sdk#56395
- Remove the temporary in-repo Crossgen2Tasks shim once the updated SDK is in use in [wasm] Remove the in-repo Crossgen2Tasks shim for browser composite R2R once the SDK names wasm R2R outputs #135023
- Simplify the WASM SDK for CoreCLR, covering browser composite mode, IL and debug-data stripping, Blazor Router lazy loading, IL release after the lazy R2R complement loads, and validation of trimming, globalization, timezone removal, and optional components
- [browser][coreclr] Strip workload content #134074
- Set CoreCLR as the default runtime for Debug, Release, and CI
Diagnostics
Support debugging interpreted code, Hot Reload, and runtime diagnostics.
- Enable end-to-end debugging and complete debugger scenario coverage, including WebCIL/DAC compatibility
- Enable debugger-free Hot Reload in Enable debugger-free Hot Reload on CoreCLR browser WebAssembly #135496
- Enable Hot Reload with an attached debugger
- Enable R2R CPU profiling, tracing, crash dumps, and native exception symbolication
- Collect runtime and configuration telemetry using native runtime metadata, with producers and build IDs
The cDAC integration remains optional.
Testing
Test CoreCLR and full R2R across runtime, libraries, WebAssembly builds, Blazor, and developer tooling.
- Complete CoreCLR WebAssembly test infrastructure and coverage, including unblocking crossgen in the baseline SDK, reducing publishing costs, disabled browser runtime tests within the supported runtime configuration, and R2R library-test CI configuration
- Add browser R2R runtime-test outer-loop coverage in [wasm][CoreCLR] Add browser_wasm R2R_CG2 leg to runtime-coreclr outerloop #134960
- Move the full browser R2R library-test lane to libraries outerloop in Move full browser WASM R2R library tests to libraries outerloop #134920
- Provide builds and testing instructions, and validate first-party and third-party applications against agreed scenarios and pass criteria
Consumer and tooling integration
Integrate CoreCLR WebAssembly packs into consumers and tools with passing builds and checks.
- Integrate CoreCLR WebAssembly packs into consumer repositories
- Run ASP.NET Core WebAssembly trimming checks on CoreCLR in [ci] Use CoreCLR for WebAssembly trimming checks aspnetcore#69642
- Complete Visual Studio integration
- Complete VS Code integration
Mono removal
Stop shipping Mono WebAssembly packs.
WASI
Deliver the agreed WASI support.
- Define the supported WASI scope
- Enable WASI composite R2R publishing in [wasi] Enable CoreCLR WASI composite ReadyToRun publishing #133265
- Add WASI composite R2R runtime tests and library smoke CI in [wasi] Add CoreCLR ReadyToRun library and runtime test CI #134813
- Expand WASI library-test coverage beyond smoke in [wasi] Stand up CoreCLR-WASI library tests #130129
- Complete WASI SDK and Wasmtime integration within the agreed scope
Documentation and maintenance
Document migration and known issues.
- Publish migration guidance, breaking changes, known issues, and announcements
- Define ongoing ownership and maintenance costs for the runtime, SDK, tooling, and CI
Reactions are currently unavailable
Metadata
Metadata
Labels
EpicGroups multiple user stories. Can be grouped under a theme.Groups multiple user stories. Can be grouped under a theme.arch-wasmWebAssembly architectureWebAssembly architecturearea-VM-coreclrtrackingThis issue is tracking the completion of other related issues.This issue is tracking the completion of other related issues.
Type
Projects
- StatusShow more project fieldsNo status
Activity
dotnet-policy-service commentedon Sep 21, 2026
Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.
dotnet-policy-service commentedon Sep 21, 2026
Tagging subscribers to this area: @steveisok, @thaystg, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.
[-]Run WebAssembly applications on CoreCLR in .NET 12[/-][+]Run WebAssembly applications using CoreCLR[/+]dotnet-policy-service commentedon Sep 21, 2026
Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.
[PERF] Retire default Mono performance runs and builds on main (#134602)