Repository navigation
[browser][CoreCLR] Enable non-AOT WBT relinking and rebuild coverage - #135018
Merged
radekdoulik merged 1 commit intoOct 1, 2026
Merged
Conversation
Enable 23 previously Mono-only methods while preserving Mono theory rows. Track CoreCLR generated artifacts and validate compiler/linker rebuild decisions without relying on incidental object equality. Keep ReferenceNewAssembly gated pending its incremental trimmed-publish asset fix. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 4 pipeline(s). 12 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
|
Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara |
Contributor
|
Tagging subscribers to this area: @dotnet/runtime-infrastructure |
lewing
approved these changes
Oct 1, 2026
3 of 16 tasks
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.
CoreCLR browser-wasm supports per-app native relinking, but several Wasm.Build.Tests still exclude it through coarse Mono-only categories. Enable the verified non-AOT cases in 23 methods, while preserving the existing Mono test inputs and leaving product code unchanged.
The enabled coverage includes P/Invoke ABI and platform filtering, native-library names, invariant globalization/timezone, the Bug49588 relinking regression, template marshal-IL generation, main arguments, satellite resources, Blazor clean/DllImport/publish/Razor-library scenarios, and incremental native rebuilds.
Implementation
aot: truevariants out of this CoreCLR port:RunAOTCompilationdoes not currently select managed AOT on CoreCLR, so adding those inputs would largely duplicate coverage. CoreCLR's separatePublishReadyToRuntests are unchanged.Coverage
The CI row counts were verified from a test assembly built with
ContinuousIntegrationBuild=true. Local builds include additional implicit Debug rows. These numbers describe test selection, not a new CI execution.All 84 newly enabled CoreCLR rows passed locally. Native linking was observed in 70 rows; the remaining 14 intentionally cover no-relink variants within mixed test methods.
Remaining exclusions
NativeRelinkFailsWithInvariantandBuildWithUndefinedNativeSymbolretain method-level Mono gates. Other Mono-only AOT/generator/profiler cases, auto-layout diagnostics, the Windows-specific temp-path test, and the memory test are unchanged.ReferenceNewAssemblyRebuildTest.ReferenceNewAssemblyalso remains Mono-only. Its four attempted CoreCLR rows exposed an incremental trimmed-publish bug:System.Text.RegularExpressions.dllis produced by the linker but omitted from WebCIL/published assets and boot configuration because build candidates were restricted using the previous trimmed closure. This needs a separate product fix; the test was not weakened by cleaning between publishes or pre-rooting the assembly.Validation
Validated on macOS/arm64 with Chrome
154.0.8037.58, SDK12.0.100-alpha.1.26471.108, and matching locally built12.0.0-devruntime, Crossgen2, and workload packages.git diff --checkpassed.The existing Mono Blazor publish row labeled
aot: truedoes not actually forward AOT to publish; this pre-existing behavior is preserved, not counted as an AOT compilation.Local build and test commands
Build the browser runtime and required host Crossgen2 package:
After preparing and installing the matching local workload packages, run a selected method through the repository's WBT entry point:
That method selected zero rows before enablement and passed both Debug/Release rows afterward. The full enabled set used the same generated runner, selecting exact methods with
RSP_FILE="-method <fully-qualified-method> -parallel none"in separate processes to bound disk usage.CI selection was checked by rebuilding with
-p:ContinuousIntegrationBuild=true -p:ArchiveTests=false -p:InstallWorkloadForTesting=falseand evaluating the compiled data providers.Linux/Windows behavioral execution and the full Mono/no-WebCIL matrix were not rerun locally. No CI was triggered during local validation.
Note
This pull request description was generated with GitHub Copilot.