From 8022806e22aac95feb0de02fef49fa5d082ca45a Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Tue, 17 Feb 2026 11:14:09 -0800 Subject: [PATCH 1/8] Update BDN version to include associated BDN version. --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index da50f10c2bb..bda056fda26 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 10.0.0-rc.1.25555.107 10.0.0-rc.1.25555.107 10.0.0-rc.1.25555.107 - 0.16.0-custom.20260127.101 + 0.16.0-custom.20260217.100 10.0.0-rc.1.25555.107 11.0.0-prerelease.26064.3 From 240862c1f42ffb7a7d9a9c9ca4b336948ceb758c Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Tue, 17 Feb 2026 12:52:12 -0800 Subject: [PATCH 2/8] Wire --wasm-coreclr through run_performance_job to benchmarks_ci Pass --wasm-coreclr to benchmarks_ci.py when codeGenType is 'wasm' (non-AOT) so that BDN uses the CoreCLR runtime pack instead of Mono for WASM benchmarks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- scripts/run_performance_job.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index 3fad795a973..c4f015fd4de 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -560,7 +560,7 @@ def get_run_configurations( return configurations -def get_work_item_command(os_group: str, target_csproj: str, architecture: str, perf_lab_framework: str, internal: bool, wasm: bool, bdn_artifacts_dir: str): +def get_work_item_command(os_group: str, target_csproj: str, architecture: str, perf_lab_framework: str, internal: bool, wasm: bool, bdn_artifacts_dir: str, wasm_coreclr: bool = False): if os_group == "windows": work_item_command = [ "python", @@ -588,6 +588,8 @@ def get_work_item_command(os_group: str, target_csproj: str, architecture: str, if wasm: work_item_command += ["--run-isolated", "--wasm", "--dotnet-path", "$HELIX_CORRELATION_PAYLOAD/dotnet/"] + if wasm_coreclr: + work_item_command += ["--wasm-coreclr"] work_item_command += ["--bdn-artifacts", bdn_artifacts_dir] @@ -648,6 +650,7 @@ def run_performance_job(args: RunPerformanceJobArgs): mono_dotnet = is_mono and not is_aot wasm = args.runtime_type == "wasm" wasm_aot = wasm and is_aot + wasm_coreclr = wasm and args.codegen_type.lower() == "wasm" working_dir = os.path.join(args.performance_repo_dir, "CorrelationStaging") # folder in which the payload and workitem directories will be made work_item_dir = os.path.join(working_dir, "workitem", "") # Folder in which the work item commands will be run in @@ -1157,7 +1160,7 @@ def get_bdn_args_for_coreroot_dir(coreroot_dir: Optional[str]): def get_work_item_command_for_artifact_dir(artifact_dir: str): assert args.target_csproj is not None - return get_work_item_command(args.os_group, args.target_csproj, args.architecture, perf_lab_framework, args.internal, wasm, artifact_dir) + return get_work_item_command(args.os_group, args.target_csproj, args.architecture, perf_lab_framework, args.internal, wasm, artifact_dir, wasm_coreclr) work_item_command = get_work_item_command_for_artifact_dir(bdn_artifacts_directory) baseline_work_item_command = get_work_item_command_for_artifact_dir(bdn_baseline_artifacts_dir) From 99bca09210e65bd61b2bb56f1708e1367854957a Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Tue, 17 Feb 2026 12:54:24 -0800 Subject: [PATCH 3/8] Suppress CS9057 analyzer version mismatch for older SDKs The BDN 0.16.0-custom analyzer targets Roslyn 5.0.0.0, which is newer than the Roslyn shipped with .NET 9.0 SDK (4.12.0.0). Since TreatWarningsAsErrors is enabled, this breaks net9.0 builds. The analyzer simply won't load on older SDKs, which is benign. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Directory.Build.props | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index c40511c9dca..96647e856eb 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -15,6 +15,7 @@ $(NoWarn);NU1507 $(NoWarn);NETSDK1138 + $(NoWarn);CS9057 True 4 From be589979c8e8729dcff431d090e1609cb0086a99 Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Tue, 17 Feb 2026 14:22:18 -0800 Subject: [PATCH 4/8] Remove test-main.js requirement from WASM payload build BDN now provides its own test-main.js, so the payload build no longer needs to copy it from the runtime repo. This fixes the build failure when the file doesn't exist at src/mono/browser/test-main.js. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- scripts/build_runtime_payload.py | 23 ++++------------------- scripts/run_performance_job.py | 3 +-- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/scripts/build_runtime_payload.py b/scripts/build_runtime_payload.py index 1217d6deb57..402623bc57c 100644 --- a/scripts/build_runtime_payload.py +++ b/scripts/build_runtime_payload.py @@ -299,27 +299,15 @@ def build_monoaot_payload( def build_wasm_payload( browser_wasm_archive_or_dir: str, - payload_parent_dir: str, # wasm creates three payload directories - test_main_js_path: Optional[str] = None, - runtime_repo_dir: Optional[str] = None, + payload_parent_dir: str, ) -> None: - """Create the WASM payload directories (dotnet, built-nugets, wasm-data). + """Create the WASM payload directories (dotnet, built-nugets). The archive/directory layout is expected to contain a `staging/` folder with - `dotnet-latest` and `built-nugets` subfolders. We also copy the harness - `test-main.js` into `wasm-data/`. + `dotnet-latest` and `built-nugets` subfolders. """ - if test_main_js_path is None: - if runtime_repo_dir is None: - raise Exception("Please provide a path to the test-main.js or runtime repository") - test_main_js_path = os.path.join(runtime_repo_dir, "src", "mono", "browser", "test-main.js") - - if not os.path.exists(test_main_js_path): - raise Exception(f"test-main.js not found in expected location: {test_main_js_path}") - wasm_dotnet_dir = os.path.join(payload_parent_dir, "dotnet") wasm_built_nugets_dir = os.path.join(payload_parent_dir, "built-nugets") - wasm_data_dir = os.path.join(payload_parent_dir, "wasm-data") extract_archive_or_copy( browser_wasm_archive_or_dir, wasm_dotnet_dir, prefix="staging/dotnet-latest/" @@ -329,7 +317,4 @@ def build_wasm_payload( browser_wasm_archive_or_dir, wasm_built_nugets_dir, prefix="staging/built-nugets/" ) - os.makedirs(wasm_data_dir, exist_ok=True) - shutil.copy(test_main_js_path, os.path.join(wasm_data_dir, "test-main.js")) - - _set_permissions_recursive([wasm_dotnet_dir, wasm_built_nugets_dir, wasm_data_dir], mode=0o664) # rw-rw-r-- \ No newline at end of file + _set_permissions_recursive([wasm_dotnet_dir, wasm_built_nugets_dir], mode=0o664) # rw-rw-r-- \ No newline at end of file diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index c4f015fd4de..1a4fa5d4a91 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -442,7 +442,6 @@ def get_bdn_arguments( "--wasmEngine", javascript_engine_path, f"\\\"--wasmArgs={' '.join(wasm_args)}\\\"", "--cli", "$HELIX_CORRELATION_PAYLOAD/dotnet/dotnet", - "--wasmDataDir", "$HELIX_CORRELATION_PAYLOAD/wasm-data" ] if is_aot: @@ -788,7 +787,7 @@ def run_performance_job(args: RunPerformanceJobArgs): getLogger().info("Copying wasm bundle directory to payload directory") browser_wasm_dir = os.path.join(args.libraries_download_dir, "BrowserWasm") - build_wasm_payload(browser_wasm_dir, payload_dir, runtime_repo_dir=args.runtime_repo_dir) + build_wasm_payload(browser_wasm_dir, payload_dir) if args.javascript_engine == "v8": if args.browser_versions_props_path is None: From 6a97029d73c44a0bee9136cc14bc15707a6a82ea Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Wed, 18 Feb 2026 12:28:39 -0800 Subject: [PATCH 5/8] Make WasmOverridePacks.targets support both Mono and CoreCLR packs Use UseMonoRuntime property to conditionally resolve the runtime pack: - Mono (default): Microsoft.NETCore.App.Runtime.Mono.browser-wasm - CoreCLR (UseMonoRuntime=false): Microsoft.NETCore.App.Runtime.browser-wasm This prepares MicroBenchmarks.csproj for CoreCLR WASM support. BDN's auto-generated project resolves packs via RestoreAdditionalProjectSources pointing to built-nugets, so it needs the CoreCLR pack to be produced by the runtime build. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../build-common/WasmOverridePacks.targets | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/scenarios/build-common/WasmOverridePacks.targets b/src/scenarios/build-common/WasmOverridePacks.targets index a5bfb06a337..d1fd64323fd 100644 --- a/src/scenarios/build-common/WasmOverridePacks.targets +++ b/src/scenarios/build-common/WasmOverridePacks.targets @@ -1,4 +1,12 @@ + + + <_WasmRuntimePackPrefix Condition="'$(UseMonoRuntime)' != 'false'">Mono. + <_WasmRuntimePackPrefix Condition="'$(UseMonoRuntime)' == 'false'"> + <_WasmRuntimePackName>Microsoft.NETCore.App.Runtime.$(_WasmRuntimePackPrefix)$(RuntimeIdentifier) + + @@ -16,16 +24,16 @@ From 2ce16978723be60fadfcce22c53620a2d78a97f8 Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Wed, 18 Feb 2026 13:41:44 -0800 Subject: [PATCH 6/8] Install CoreCLR browser-wasm runtime pack into dotnet packs The BrowserWasm build artifact includes the CoreCLR runtime pack at staging/microsoft.netcore.app.runtime.browser-wasm/Release/ but it was never installed into the dotnet SDK's packs directory. Install it at packs/Microsoft.NETCore.App.Runtime.browser-wasm// so the SDK can resolve it when --wasm-coreclr is used (non-Mono WASM builds). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- scripts/build_runtime_payload.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/build_runtime_payload.py b/scripts/build_runtime_payload.py index 402623bc57c..81b3708045c 100644 --- a/scripts/build_runtime_payload.py +++ b/scripts/build_runtime_payload.py @@ -304,7 +304,11 @@ def build_wasm_payload( """Create the WASM payload directories (dotnet, built-nugets). The archive/directory layout is expected to contain a `staging/` folder with - `dotnet-latest` and `built-nugets` subfolders. + `dotnet-latest` and `built-nugets` subfolders, plus the CoreCLR runtime pack + at `microsoft.netcore.app.runtime.browser-wasm/Release/`. + + After extracting, the CoreCLR runtime pack is installed into the dotnet packs + directory alongside the Mono pack so the SDK can resolve either variant. """ wasm_dotnet_dir = os.path.join(payload_parent_dir, "dotnet") wasm_built_nugets_dir = os.path.join(payload_parent_dir, "built-nugets") @@ -317,4 +321,19 @@ def build_wasm_payload( browser_wasm_archive_or_dir, wasm_built_nugets_dir, prefix="staging/built-nugets/" ) + # Install the CoreCLR runtime pack into the dotnet packs directory. + # The Mono pack is already at packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm//; + # we mirror that layout for the CoreCLR variant so the SDK can find it. + mono_pack_parent = os.path.join(wasm_dotnet_dir, "packs", "Microsoft.NETCore.App.Runtime.Mono.browser-wasm") + if os.path.isdir(mono_pack_parent): + # Discover the version from the Mono pack directory (e.g. "11.0.0-ci") + versions = os.listdir(mono_pack_parent) + if versions: + pack_version = versions[0] + coreclr_pack_dest = os.path.join(wasm_dotnet_dir, "packs", "Microsoft.NETCore.App.Runtime.browser-wasm", pack_version) + extract_archive_or_copy( + browser_wasm_archive_or_dir, coreclr_pack_dest, prefix="staging/microsoft.netcore.app.runtime.browser-wasm/Release/" + ) + getLogger().info("Installed CoreCLR browser-wasm runtime pack version %s", pack_version) + _set_permissions_recursive([wasm_dotnet_dir, wasm_built_nugets_dir], mode=0o664) # rw-rw-r-- \ No newline at end of file From 68bbb100ad7e979e86dda0d8f594c3bd18a4d41b Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Wed, 18 Feb 2026 13:47:10 -0800 Subject: [PATCH 7/8] Setup testing. --- eng/pipelines/runtime-perf-jobs.yml | 328 ++++++++++++++-------------- 1 file changed, 164 insertions(+), 164 deletions(-) diff --git a/eng/pipelines/runtime-perf-jobs.yml b/eng/pipelines/runtime-perf-jobs.yml index 8aaa511998c..eb3927e4602 100644 --- a/eng/pipelines/runtime-perf-jobs.yml +++ b/eng/pipelines/runtime-perf-jobs.yml @@ -57,229 +57,229 @@ jobs: - template: /eng/pipelines/performance/templates/perf-build-jobs.yml@${{ parameters.runtimeRepoAlias }} parameters: perfBranch: ${{ parameters.perfBranch }} - - - ${{ if not(startswith(variables['Build.SourceBranch'], 'refs/heads/release')) }}: - # Build and run iOS Mono and NativeAOT scenarios - - template: /eng/pipelines/runtime-ios-scenarios-perf-jobs.yml - parameters: - runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} - performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - jobParameters: ${{ parameters.jobParameters }} - - # run android scenarios - Mono JIT - - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} - parameters: - jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} - buildConfig: release - runtimeFlavor: mono - platforms: - - windows_x64 - jobParameters: - runtimeType: AndroidMono - codeGenType: JIT - projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj - runKind: android_scenarios - isScenario: true - logicalMachine: 'perfpixel4a' + - ${{ if false }}: + - ${{ if not(startswith(variables['Build.SourceBranch'], 'refs/heads/release')) }}: + # Build and run iOS Mono and NativeAOT scenarios + - template: /eng/pipelines/runtime-ios-scenarios-perf-jobs.yml + parameters: runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - ${{ each parameter in parameters.jobParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} + jobParameters: ${{ parameters.jobParameters }} - # run android scenarios - Mono AOT + # run android scenarios - Mono JIT + - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} + parameters: + jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} + buildConfig: release + runtimeFlavor: mono + platforms: + - windows_x64 + jobParameters: + runtimeType: AndroidMono + codeGenType: JIT + projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj + runKind: android_scenarios + isScenario: true + logicalMachine: 'perfpixel4a' + runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} + performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # run android scenarios - Mono AOT + - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} + parameters: + jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} + buildConfig: release + runtimeFlavor: mono + platforms: + - windows_x64 + jobParameters: + runtimeType: AndroidMono + codeGenType: AOT + projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj + runKind: android_scenarios + isScenario: true + logicalMachine: 'perfpixel4a' + runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} + performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # run android scenarios - CoreCLR JIT + - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} + parameters: + jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + jobParameters: + runtimeType: AndroidCoreCLR + codeGenType: JIT + projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj + runKind: android_scenarios + isScenario: true + logicalMachine: 'perfpixel4a' + runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} + performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # run android scenarios - CoreCLR JIT Static Linking + - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} + parameters: + jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + jobParameters: + runtimeType: AndroidCoreCLR + codeGenType: JIT + linkingType: static + projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj + runKind: android_scenarios + isScenario: true + logicalMachine: 'perfpixel4a' + runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} + performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # run android scenarios - CoreCLR R2R + - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} + parameters: + jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + jobParameters: + runtimeType: AndroidCoreCLR + codeGenType: R2R + projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj + runKind: android_scenarios + isScenario: true + logicalMachine: 'perfpixel4a' + runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} + performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # run mono microbenchmarks perf job - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} parameters: jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} buildConfig: release runtimeFlavor: mono platforms: - - windows_x64 + - linux_x64 jobParameters: - runtimeType: AndroidMono - codeGenType: AOT - projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj - runKind: android_scenarios - isScenario: true - logicalMachine: 'perfpixel4a' + liveLibrariesBuildConfig: Release + runtimeType: mono + runKind: micro_mono + logicalMachine: 'perfviper' runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} performanceRepoAlias: ${{ parameters.performanceRepoAlias }} ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} - # run android scenarios - CoreCLR JIT + + # run mono interpreter perf job - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} parameters: jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} buildConfig: release - runtimeFlavor: coreclr + runtimeFlavor: mono platforms: - - windows_x64 + - linux_x64 jobParameters: - runtimeType: AndroidCoreCLR - codeGenType: JIT - projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj - runKind: android_scenarios - isScenario: true - logicalMachine: 'perfpixel4a' + liveLibrariesBuildConfig: Release + runtimeType: mono + codeGenType: 'Interpreter' + runKind: micro_mono + logicalMachine: 'perfviper' runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} performanceRepoAlias: ${{ parameters.performanceRepoAlias }} ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} - # run android scenarios - CoreCLR JIT Static Linking + # run mono aot microbenchmarks perf job - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} parameters: jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} buildConfig: release - runtimeFlavor: coreclr + runtimeFlavor: aot platforms: - - windows_x64 + - linux_x64 jobParameters: - runtimeType: AndroidCoreCLR - codeGenType: JIT - linkingType: static - projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj - runKind: android_scenarios - isScenario: true - logicalMachine: 'perfpixel4a' + liveLibrariesBuildConfig: Release + runtimeType: mono + codeGenType: 'AOT' + runKind: micro_mono + logicalMachine: 'perfviper' runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} performanceRepoAlias: ${{ parameters.performanceRepoAlias }} ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} - # run android scenarios - CoreCLR R2R + # run coreclr perfviper microbenchmarks perf job - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} parameters: jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} buildConfig: release runtimeFlavor: coreclr platforms: - - windows_x64 + - linux_x64 + - windows_x64 + - windows_x86 jobParameters: - runtimeType: AndroidCoreCLR - codeGenType: R2R - projectFile: $(Build.SourcesDirectory)/eng/testing/performance/android_scenarios.proj - runKind: android_scenarios - isScenario: true - logicalMachine: 'perfpixel4a' + liveLibrariesBuildConfig: Release + runKind: micro + logicalMachine: 'perfviper' runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} performanceRepoAlias: ${{ parameters.performanceRepoAlias }} ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} - # run mono microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} - parameters: - jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} - buildConfig: release - runtimeFlavor: mono - platforms: - - linux_x64 - jobParameters: - liveLibrariesBuildConfig: Release - runtimeType: mono - runKind: micro_mono - logicalMachine: 'perfviper' - runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} - performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - ${{ each parameter in parameters.jobParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - - - # run mono interpreter perf job - - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} - parameters: - jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} - buildConfig: release - runtimeFlavor: mono - platforms: - - linux_x64 - jobParameters: - liveLibrariesBuildConfig: Release - runtimeType: mono - codeGenType: 'Interpreter' - runKind: micro_mono - logicalMachine: 'perfviper' - runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} - performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - ${{ each parameter in parameters.jobParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # run mono aot microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} - parameters: - jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} - buildConfig: release - runtimeFlavor: aot - platforms: - - linux_x64 - jobParameters: - liveLibrariesBuildConfig: Release - runtimeType: mono - codeGenType: 'AOT' - runKind: micro_mono - logicalMachine: 'perfviper' - runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} - performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - ${{ each parameter in parameters.jobParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # run coreclr perfviper microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} - parameters: - jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} - buildConfig: release - runtimeFlavor: coreclr - platforms: - - linux_x64 - - windows_x64 - - windows_x86 - jobParameters: - liveLibrariesBuildConfig: Release - runKind: micro - logicalMachine: 'perfviper' - runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} - performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - ${{ each parameter in parameters.jobParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # run coreclr perfviper microbenchmarks perf job with NoR2R - - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} - parameters: - jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} - buildConfig: release - runtimeFlavor: coreclr - platforms: - - linux_x64 - - windows_x64 - jobParameters: - liveLibrariesBuildConfig: Release - runKind: micro - logicalMachine: 'perfviper' - runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} - performanceRepoAlias: ${{ parameters.performanceRepoAlias }} - r2rRunType: nor2r - additionalJobIdentifier: 'NoR2R' - ${{ each parameter in parameters.jobParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # run coreclr crossgen perf job - - ${{ if false }}: # Disabling as all crossgen jobs are failing at the moment - https://github.com/dotnet/performance/issues/4819 + # run coreclr perfviper microbenchmarks perf job with NoR2R - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} parameters: jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} buildConfig: release runtimeFlavor: coreclr platforms: + - linux_x64 - windows_x64 - - windows_x86 jobParameters: liveLibrariesBuildConfig: Release - projectFile: $(Build.SourcesDirectory)/eng/testing/performance/crossgen_perf.proj - runKind: crossgen_scenarios - isScenario: true - logicalMachine: 'perftiger_crossgen' # Update when re-enabling as PerfTiger is now fewer machines (or completely decommissioned) + runKind: micro + logicalMachine: 'perfviper' runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + r2rRunType: nor2r + additionalJobIdentifier: 'NoR2R' ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} + + # run coreclr crossgen perf job + - ${{ if false }}: # Disabling as all crossgen jobs are failing at the moment - https://github.com/dotnet/performance/issues/4819 + - template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }} + parameters: + jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }} + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + - windows_x86 + jobParameters: + liveLibrariesBuildConfig: Release + projectFile: $(Build.SourcesDirectory)/eng/testing/performance/crossgen_perf.proj + runKind: crossgen_scenarios + isScenario: true + logicalMachine: 'perftiger_crossgen' # Update when re-enabling as PerfTiger is now fewer machines (or completely decommissioned) + runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }} + performanceRepoAlias: ${{ parameters.performanceRepoAlias }} + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} From 09cd527561268d062d2e631d81ad5c7fe9c81fdc Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Wed, 18 Feb 2026 21:50:02 -0800 Subject: [PATCH 8/8] Update the WasmRuntimePackPrefix to support CoreCLR. --- src/scenarios/build-common/WasmOverridePacks.targets | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/scenarios/build-common/WasmOverridePacks.targets b/src/scenarios/build-common/WasmOverridePacks.targets index d1fd64323fd..a3d359241d8 100644 --- a/src/scenarios/build-common/WasmOverridePacks.targets +++ b/src/scenarios/build-common/WasmOverridePacks.targets @@ -1,9 +1,8 @@ - <_WasmRuntimePackPrefix Condition="'$(UseMonoRuntime)' != 'false'">Mono. - <_WasmRuntimePackPrefix Condition="'$(UseMonoRuntime)' == 'false'"> + Microsoft.NET.Sdk.WebAssembly sets UseMonoRuntime=true; Microsoft.NET.Sdk leaves it unset. --> + <_WasmRuntimePackPrefix Condition="'$(UseMonoRuntime)' == 'true'">Mono. <_WasmRuntimePackName>Microsoft.NETCore.App.Runtime.$(_WasmRuntimePackPrefix)$(RuntimeIdentifier)