Skip to content

Conversation

@kotlarmilos
Copy link
Member

@kotlarmilos kotlarmilos commented Nov 3, 2025

Description

This PR updates the MAUI iOS samples to use .NET 11 workloads and adds support for running with the CoreCLR interpreter.

Changes

Validation

Test run: https://dev.azure.com/dnceng/internal/_build/results?buildId=2862740&view=results

Out of scope

Device startup measurements are currently unreliable and may fail due to a device connection issue. This is a known issue and is being handled separately by the engineering team.

Contributes to dotnet/runtime#120054

Fixes #5054

@kotlarmilos kotlarmilos self-assigned this Nov 3, 2025
@kotlarmilos kotlarmilos added the enhancement New feature or request label Nov 3, 2025
@kotlarmilos kotlarmilos changed the title Add Maui iOS CoreCLR scenario benchmarks to the performance job pipeline [WIP] Add Maui iOS CoreCLR scenario benchmarks to the performance job pipeline Nov 3, 2025
@kotlarmilos kotlarmilos marked this pull request as ready for review November 28, 2025 15:08
@kotlarmilos kotlarmilos changed the title [WIP] Add Maui iOS CoreCLR scenario benchmarks to the performance job pipeline Add Maui iOS CoreCLR scenario benchmarks to the performance job pipeline Nov 28, 2025
@kotlarmilos kotlarmilos marked this pull request as draft December 10, 2025 12:55
@kotlarmilos kotlarmilos changed the title Add Maui iOS CoreCLR scenario benchmarks to the performance job pipeline Update MAUI iOS samples to .NET 11 workloads and add CoreCLR interpreter support Dec 16, 2025
@kotlarmilos
Copy link
Member Author

kotlarmilos commented Dec 16, 2025

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates MAUI iOS samples to use .NET 11 workloads and adds support for running with the CoreCLR interpreter. The changes temporarily disable certain MAUI scenarios until .NET 11 packages are available, update SDK and workload package versions, and introduce CoreCLR interpreter configuration options.

  • Removes the generic --nativeaot command-line argument in favor of MSBuild properties for more granular runtime and codegen control
  • Adds CoreCLR interpreter support for iOS benchmarks alongside existing Mono and NativeAOT configurations
  • Updates macOS/iOS SDK dependencies from version 18.5 to 26.1 with .NET 11 compatibility

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/scenarios/shared/precommands.py Removes deprecated --nativeaot argument and related command-line handling
src/scenarios/netios/pre.py Adds /p:TargetsCurrent=true workaround for .NET 11 workload availability
src/scenarios/mauiios/pre.py Adds /p:TargetsCurrent=true workaround with indentation issue in comment
src/scenarios/mauiblazorios/pre.py Adds /p:TargetsCurrent=true workaround for Blazor template
scripts/run_performance_job.py Adds --break-system-packages flag for pip on macOS to handle system Python restrictions
scripts/dotnet.py Generalizes SDK version detection to support major version increments (e.g., net10.0 → SDK 11.0)
scripts/channel_map.py Adds nativeaot11.0 channel mapping for .NET 11 NativeAOT builds
eng/pipelines/sdk-perf-jobs.yml Adds new CoreCLR interpreter job configuration for MAUI iOS scenarios
eng/performance/maui_scenarios_ios.proj Replaces --nativeaot with MSBuild properties, updates Xcode version, temporarily disables MAUI templates, contains typo in commented test command
eng/Version.Details.xml Updates macOS/iOS SDK dependencies from 18.5 to 26.1 versions with new commit SHA

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run()
RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run()
RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run()
break_system_packages = ["--break-system-packages"] if args.os_group == "osx" else []
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To double check, the new --break-system-packages will hopefully allow these calls to succeed on OSX because without it we get an error about the environment being externally managed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it fixes the failures in #5054

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason why we don't create a python environment (venv) and instead we use the global system python? cc: @LoopedBard3

<Sha>1dcfb6f8779c33b6f768c996495cb90ecd729329</Sha>
</Dependency>
<Dependency Name="Microsoft.MacCatalyst.Sdk.net10.0_18.5" Version="18.5.10824-net10-rc.2">
<Dependency Name="Microsoft.MacCatalyst.Sdk.net10.0_26.1" Version="26.1.10555-ci.net11-0">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you also update the maestro/darc feeds for these?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are two darc subscriptions for macios repo:

https://github.com/dotnet/macios (.NET 10.0.1xx SDK) ==> 'https://github.com/dotnet/performance' ('main')
  - Id: 47f1dd75-a07a-4071-a43a-0a3050de377c
  - Update Frequency: EveryBuild
  - Enabled: True
  - Batchable: False
  - Excluded Assets: []
  - PR Failure Notification tags: 
  - Source-enabled: False
  - Merge Policies:
    Standard
      ignoreChecks = []
  - Last Build: 20251215.11 (c60d1ae6ba4fd32ef99ccf94aca56e03c51eab86)
https://github.com/dotnet/macios (.NET 9.0.1xx SDK) ==> 'https://github.com/dotnet/performance' ('main')
  - Id: 764d9e7b-4353-484e-a756-e1d6d03fd0a9
  - Update Frequency: EveryBuild
  - Enabled: True
  - Batchable: False
  - Excluded Assets: []
  - PR Failure Notification tags: 
  - Source-enabled: False
  - Merge Policies:
    Standard
      ignoreChecks = []
  - Last Build: 20251008.10 (4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3)

Should I update 47f1dd75-a07a-4071-a43a-0a3050de377c to be .NET 11 and remove 764d9e7b-4353-484e-a756-e1d6d03fd0a9? I assume it isn't intended to have different subscriptions for the main branch.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, one other update should be made to the .NET 9 versions below these updated ones, adding in the CoherentParentDependency, something like updating the lines to these:

    <!-- Previous .NET iOS version(s) -->
    <!-- This is a subscription of the .NET 9 latest stable versions of our packages -->
    <Dependency Name="Microsoft.MacCatalyst.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.MacCatalyst.Sdk.net10.0_26.1">
      <Uri>https://github.com/dotnet/macios</Uri>
      <Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
    </Dependency>
    <Dependency Name="Microsoft.macOS.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.macOS.Sdk.net10.0_26.1">
      <Uri>https://github.com/dotnet/macios</Uri>
      <Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
    </Dependency>
    <Dependency Name="Microsoft.iOS.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.iOS.Sdk.net10.0_26.1">
      <Uri>https://github.com/dotnet/macios</Uri>
      <Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
    </Dependency>
    <Dependency Name="Microsoft.tvOS.Sdk.net9.0_26.0" Version="26.0.9754" CoherentParentDependency="Microsoft.tvOS.Sdk.net10.0_26.1">
      <Uri>https://github.com/dotnet/macios</Uri>
      <Sha>4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3</Sha>
    </Dependency>

With that update, we should be good to remove the 9.0 feed and update the 10.0 feed to 11.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

https://github.com/dotnet/macios (.NET 11.0.1xx SDK) ==> 'https://github.com/dotnet/performance' ('main')
  - Id: 47f1dd75-a07a-4071-a43a-0a3050de377c
  - Update Frequency: EveryBuild
  - Enabled: True
  - Batchable: False
  - Excluded Assets: []
  - PR Failure Notification tags: 
  - Source-enabled: False
  - Merge Policies:
    Standard
      ignoreChecks = []
  - Last Build: 20251215.12 (782cd38346496c32075b87baa9b6c5ffa0fa078c)

matouskozak
matouskozak previously approved these changes Dec 17, 2025
RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run()
RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run()
RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run()
break_system_packages = ["--break-system-packages"] if args.os_group == "osx" else []
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason why we don't create a python environment (venv) and instead we use the global system python? cc: @LoopedBard3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MAUI iOS scenarios fail to run performance measurements

4 participants