Skip to content

[perf][wasm] Stage Crossgen2 pack for CoreCLR R2R benchmarks - #133040

Merged
lewing merged 3 commits into
mainfrom
lewing-wasm-r2r-perf-artifact
Sep 2, 2026
Merged

[perf][wasm] Stage Crossgen2 pack for CoreCLR R2R benchmarks#133040
lewing merged 3 commits into
mainfrom
lewing-wasm-r2r-perf-artifact

Conversation

@lewing

@lewing lewing commented Sep 1, 2026

Copy link
Copy Markdown
Member

Summary

Stage the matching locally built, non-symbol Microsoft.NETCore.App.Crossgen2 package in the BrowserWasmCoreCLR performance artifact under staging/built-nugets.

This enables isolated Helix machines to resolve the same-build Crossgen2 pack when per-application browser-WASM benchmarks publish with PublishReadyToRun=true. The CoreCLR performance build enables BuildHostTools, and the pack subset permits browser builds with that explicit opt-in to run Microsoft.NETCore.App.Crossgen2.Host.sfxproj. The package selection excludes *.symbols.nupkg and fails if no matching non-symbol package is available. These changes apply only to BrowserWasmCoreCLR; Mono artifact behavior is unchanged.

End-to-end runtime-wasm-perf validation depends on the companion dotnet/performance change currently at commit 17449e9826d0ecc224e92a3ad854796b0be41219.

Validation

  • Parsed the changed XML and YAML build configuration.
  • Ran git diff --check and commit checks.
  • Simulated staging with matching non-symbol, symbols, and unrelated nupkgs; only the non-symbol Crossgen2 package was copied.
  • Evaluated the MSBuild project graph and confirmed:
    • browser CoreCLR with BuildHostTools=true includes Microsoft.NETCore.App.Crossgen2.Host.sfxproj;
    • browser CoreCLR without the opt-in excludes it;
    • Android remains excluded even with BuildHostTools=true.

Note

This pull request was generated with the assistance of GitHub Copilot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 6 pipeline(s).
10 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@lewing
lewing requested a review from kotlarmilos September 1, 2026 19:53
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c4188acf-cdd7-467f-818f-5a43eaaf9e3e
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c4188acf-cdd7-467f-818f-5a43eaaf9e3e

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.

🟢 Approval recommended

The changes are narrowly scoped to the CoreCLR browser-wasm perf pipeline and the updated conditions/staging logic are consistent with existing TargetsMobile semantics for TargetOS=browser.

Pull request overview

This PR updates the WASM performance build to produce and stage the host Crossgen2 pack alongside the CoreCLR browser-wasm performance artifact, enabling downstream R2R publishing on isolated machines using same-build assets.

Changes:

  • Allow building the Crossgen2 host pack when TargetOS=browser and BuildHostTools=true (even though browser sets TargetsMobile=true).
  • Add an optional pipeline step to copy the non-symbol Microsoft.NETCore.App.Crossgen2.*.nupkg into the staged built-nugets feed and fail if none is present.
  • Enable BuildHostTools=true for the CoreCLR browser-wasm perf build job and turn on Crossgen2 pack staging for its artifact.
File summaries
File Description
eng/Subsets.props Adjusts pack-building conditions so browser-wasm CoreCLR builds can produce the host Crossgen2 pack when opted in.
eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml Adds an opt-in step to stage only non-symbol Crossgen2 nupkgs into the perf artifact’s local feed.
eng/pipelines/performance/templates/perf-wasm-build-jobs.yml Opts the CoreCLR browser-wasm perf job into BuildHostTools and Crossgen2 pack staging.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Lite

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 6 pipeline(s).
10 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@lewing

lewing commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

dotnet/performance#5297 is the consuming side once this lands

@pavelsavara

Copy link
Copy Markdown
Member

is @radekdoulik doing the same thing in #131877 ?

@pavelsavara pavelsavara added arch-wasm WebAssembly architecture area-ReadyToRun and removed area-Build-mono labels Sep 2, 2026
@pavelsavara pavelsavara added this to the 12.0.0 milestone Sep 2, 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.

@lewing

lewing commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

/ba-g failures are not related

@lewing
lewing merged commit 399c3eb into main Sep 2, 2026
202 of 204 checks passed
@lewing
lewing deleted the lewing-wasm-r2r-perf-artifact branch September 2, 2026 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasm WebAssembly architecture area-ReadyToRun

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants