Comparing main...xcode27.0 · dotnet/macios · GitHub
Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: dotnet/macios
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: dotnet/macios
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: xcode27.0
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 20 commits
  • 658 files changed
  • 7 contributors

Commits on Jun 15, 2026

  1. [net11.0] Bump min macOS to 14.0, and iOS/tvOS to 13.0. Fixes #23784. (

    …#24420)
    
    Fixes #23784.
    
    This PR might be easiest to review commit-by-commit.
    
    (cherry picked from commit 782cd38)
    rolfbjarne authored and dalexsoto committed Jun 15, 2026
    Configuration menu
    Copy the full SHA
    f2f1769 View commit details
    Browse the repository at this point in the history
  2. [net11.0] Bump min Mac Catalyst to 17.0. Fixes #23784. (#24515)

    Fixes #23784.
    
    (cherry picked from commit 284b50c)
    rolfbjarne authored and dalexsoto committed Jun 15, 2026
    Configuration menu
    Copy the full SHA
    0810849 View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2026

  1. [xcode27.0] Backport #24420 and #24515 (#25691)

    This PR is a back port of
    782cd38
    and
    284b50c
    into the Xcode 27.0 branch so we can get a cleaner baseline VS .NET 11
    Branch
    dalexsoto authored Jun 16, 2026
    1 Configuration menu
    Copy the full SHA
    263e4a0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    36b315c View commit details
    Browse the repository at this point in the history
  3. [devops] Min macOS version os macOS 14, so don't try to test on earli…

    …er versions.
    
    (cherry picked from commit 7dbe221)
    rolfbjarne authored and dalexsoto committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    6d1a847 View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2026

  1. 6 Configuration menu
    Copy the full SHA
    24a74a7 View commit details
    Browse the repository at this point in the history

Commits on Jun 18, 2026

  1. [xcode27.0] Baseline update for Xcode 27.0 Beta 1 (v2) (#25729)

    Baseline update to **Xcode 27.0 Beta 1**, and raise the iOS/tvOS minimum
    deployment target to **15.0**.
    
    This is a follow-up (v2) to #25665, brought in commit-by-commit and with
    the additional fixes needed to keep CI green.
    
    ## Xcode 27.0 Beta 1 bump
    
    * `XCODE_VERSION` 26.5 → 27.0, plus `XCODE_URL` / `XCODE_DEVELOPER_ROOT`
    (`Make.config`).
    * `*_NUGET_OS_VERSION` 26.5 → 27.0 for iOS/tvOS/macOS/Mac Catalyst
    (`Make.versions`).
    * `tools/common/SdkVersions.cs`, `builds/Versions-*.plist.in`,
    `eng/Version.Details.{props,xml}`, `mk/xamarin.mk`, the project
    templates, and the DevOps variables updated to match.
    
    ## Raise the iOS/tvOS minimum deployment target to 15.0
    
    `DOTNET_MIN_IOS_SDK_VERSION` / `DOTNET_MIN_TVOS_SDK_VERSION` 13.0 →
    15.0. This has a few cascading consequences:
    
    * **Removed redundant availability attributes.** Every hand-written
    `[SupportedOSPlatform ("ios<ver>")]` / `("tvos<ver>")` whose version is
    `<= 15.0` became redundant in the manual binding sources. Unlike the
    attributes bgen generates (which it strips automatically below the
    platform minimum), these literal attributes are emitted verbatim and
    made the cecil `ApiAvailabilityTest.AttributeConsistency` test fail.
    They've been stripped down to the bare platform marker (e.g.
    `[SupportedOSPlatform ("ios13.0")]` → `[SupportedOSPlatform ("ios")]`),
    leaving versions `> 15.0` and the macOS/Mac Catalyst attributes
    untouched.
    * **Minimum test simulator raised to 16.0.** Xcode 27 dropped the
    iOS/tvOS 15.x simulator runtimes, so the introspection tests now run
    against the 16.0 simulator as the minimum (see below).
    
    ## Simulator infrastructure for Xcode 27
    
    * **Download arm64 simulators instead of universal ones.** Xcode 27 no
    longer supports x64 simulators, so the universal variant is pointless;
    we now explicitly request `-architectureVariant arm64` and drop the
    x64-detection logic (`system-dependencies.sh`).
    * **Updated simulator device types.** Xcode 27 removed several device
    types (e.g. `iPhone-6s`, `iPhone-SE` 1st gen, `Apple-TV-1080p`); the
    simulator/device selection now uses still-supported types
    (`tests/xharness/SimulatorLoaderFactory.cs`,
    `tests/mtouch/MLaunchTool.cs`,
    `tests/xharness/Jenkins/TestVariationsFactory.cs`).
    
    ## Introspection simulator-availability fixes
    
    Running against the 16.0 simulator surfaced several APIs declared
    available at an early version that aren't actually present in those
    older simulator runtimes (they ship on device and/or in newer simulators
    only). The affected APIs were annotated with the appropriate
    simulator-availability attributes, verified against the actual simulator
    runtime binaries with `nm`:
    
    * **SafetyKit** Crash Detection (`SACrashDetectionEvent` /
    `SACrashDetectionManager` / `SAEmergencyResponseManager`) →
    `[SupportedSimulator ("ios16.4")]`.
    * **CoreMedia** HDR10+ (`kCMSampleAttachmentKey_HDR10PlusPerFrameData`,
    property and smart-enum member) → `[SupportedSimulator ("ios16.1")]` +
    `("tvos16.1")`.
    * **tvOS Metal** acceleration-structure / mesh / rasterization types →
    `[SupportedSimulator ("tvos16.1")]`.
    * **Metal** `MTLIOCompressionContext*` P/Invokes (present in 16.0,
    removed from 16.4) → versioned `[UnsupportedSimulator ("ios16.4")]` +
    `("tvos16.4")`.
    
    To make the versioned `[UnsupportedSimulator]` meaningful:
    
    * `tests/common/PlatformInfo.IsAvailableInSimulator` now treats a
    versioned `[UnsupportedSimulator ("ios18.0")]` as "unavailable starting
    with that simulator version" (mirroring the existing versioned
    `[SupportedSimulator]` handling). A bare platform name keeps its
    previous "unavailable on every simulator version" meaning.
    * `tools/common/DerivedLinkContext` now prefix-matches
    `[UnsupportedSimulator]` platform names and conservatively skips the
    simulator-inlining optimization for versioned entries, falling back to
    the (already weak + `dlsym`-guarded) runtime symbol lookup.
    
    Validated by running introspection on iOS 16.0/27.0 and tvOS 16.0/27.0
    simulators — all four configurations pass.
    
    ## Test & tooling fixes to keep CI green
    
    * **xtro-sharpie**: regenerated the API annotations against the new SDK.
    * **`TargetPlatformVersionLibrary` stays at 26.0.** The default
    *library* TPV is the first OS version of the current major .NET (.NET 10
    → 26.0) and must not change on minor/Xcode bumps; only the *executable*
    default follows the latest (→ 27.0). The `MajorTargetPlatformVersion`
    unit test was corrected to expect library major 26 / executable major 27
    (`tests/dotnet/UnitTests/ApplePlatformExtensions.cs`).
    * Misc test adjustments:
    `tests/cecil-tests/Documentation.KnownFailures.txt`,
    `tests/common/TestRuntime.cs`, `tests/bgen/BGenTests.cs`,
    `tests/sharpie/…/SdkDbTest.cs`, `tests/msbuild/…/ACToolTaskTest.cs`.
    * Auto-formatted source and trailing-whitespace cleanup.
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
    Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
    Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
    5 people authored Jun 18, 2026
    1 Configuration menu
    Copy the full SHA
    22c8c81 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f039d4b View commit details
    Browse the repository at this point in the history
  3. 6 Configuration menu
    Copy the full SHA
    bd8018e View commit details
    Browse the repository at this point in the history

Commits on Jun 19, 2026

  1. [dotnet] Add new mlaunch 1.1.127 assemblies to SignList.xml (#25745)

    The mlaunch bump from 1.1.113 to 1.1.127 (Xcode 27.0 Beta 1 baseline,
    #25729) added new assemblies to mlaunch.app/Contents/MonoBundle: the
    Microsoft.Testing.Platform managed assembly + localized satellites, and
    a few architecture-specific (R2R) runtime assemblies under
    .xamarin/<rid>/ (System.ComponentModel, System.Private.Xml.Linq,
    System.Text.Encodings.Web, System.Threading and System.Xml.Linq).
    
    These new files are not classified in SignList.xml, so the MicroBuild
    signing step in the "Prepare .NET Release" stage fails with "unknown
    files which should be signed" (HandleUnmappedFiles=fail).
    
    Add the 7 new assemblies as FirstParty so they are signed, consistent
    with the rest of the mlaunch.app MonoBundle content.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    dalexsoto and Copilot authored Jun 19, 2026
    9 Configuration menu
    Copy the full SHA
    e03c1c7 View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2026

  1. Configuration menu
    Copy the full SHA
    d2a641f View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2026

  1. 🤖 Merge 'main' => 'xcode27.0' (#25775)

    Automated merge of `main` into `xcode27.0`.
    
    Created by the code-radiator workflow.
    
    Supersedes #25728 which was closed due to a manual merge that occurred
    after the PR was created.
    
    
    
    
    > Generated by [Code
    Radiator](https://github.com/dotnet/macios/actions/runs/27982144344) ·
    949.7 AIC · ⌖ 152.3 AIC · ⊞ 33.5K ·
    [◷](https://github.com/search?q=repo%3Adotnet%2Fmacios+%22gh-aw-workflow-id%3A+code-radiator%22&type=pullrequests)
    
    <!-- gh-aw-agentic-workflow: Code Radiator, engine: copilot, version:
    1.0.60, model: claude-sonnet-4.5, id: 27982144344, workflow_id:
    code-radiator, run:
    https://github.com/dotnet/macios/actions/runs/27982144344 -->
    
    <!-- gh-aw-workflow-id: code-radiator -->
    <!-- gh-aw-workflow-call-id: dotnet/macios/code-radiator -->
    dalexsoto authored Jun 23, 2026
    6 Configuration menu
    Copy the full SHA
    3cb20df View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d52b839 View commit details
    Browse the repository at this point in the history

Commits on Jun 24, 2026

  1. [xcode27.0] Update to Xcode 27.0 Beta 2 and make sharpie aware of any…

    …AppleOS (#25786)
    
    This PR updates the `xcode27.0` branch to **Xcode 27.0 Beta 2** and
    teaches Objective Sharpie and xtro-sharpie about the new `anyAppleOS`
    availability meta-platform introduced in the Xcode 27 SDK.
    
    ## Xcode 27.0 Beta 2
    
    - Bump `XCODE_URL` and `XCODE_DEVELOPER_ROOT` in `Make.config` to Xcode
    27.0 Beta 2.
    - Regenerate the xtro-sharpie API baselines
    (`tests/xtro-sharpie/api-annotations-dotnet/*.todo` / `*.ignore`) to
    match the Beta 2 SDK.
    
    ## `anyAppleOS` availability support
    
    The Xcode 27 SDK introduces a new clang availability meta-platform,
    `anyAppleOS` (used as `API_AVAILABLE(anyappleos(x))`), meaning
    "available on every Apple OS". It's already used by
    `Accessibility.framework` (`AXSettings.h`).
    
    Sharpie parses the SDK headers with upstream llvm.org libclang, which
    doesn't understand `anyAppleOS` and reports it as an unknown platform.
    This made `AUTO_SANITIZE=1 make all` fail in `tests/xtro-sharpie` with:
    
    ```
    SHARPIE0000: An unexpected error occurred: Unsupported clang availability platform: 'anyAppleOS'
    ```
    
    Changes:
    
    - **`AvailabilityBaseAttribute`** now expands `anyAppleOS` into the
    Apple platforms macios ships (iOS, macOS, Mac Catalyst, tvOS), all
    sharing the same version, instead of throwing. `GetPlatforms` is an
    iterator so the common path no longer allocates a single-element array
    per availability attribute.
    - **`ObjectiveCBinder`** suppresses the spurious "unknown platform
    'anyAppleOS'" clang warning, since we now understand the platform
    ourselves.
    - The **xtro classifier** (`Helpers.IsAvailable`/`IsDeprecated`) treats
    `anyappleos` as the platform currently being checked, so APIs decorated
    with it are correctly considered available on every platform.
    - Added a Sharpie on-disk test
    (`tests/sharpie/Tests/AvailabilityAnyAppleOS.h`).
    
    ## Introspection
    
    In Xcode 27, a few CarPlay types (`CPButton`, `CPContactCallButton`,
    `CPContactDirectionsButton`, `CPContactMessageButton`,
    `CPTravelEstimates`) gained an undocumented `NSCopying` conformance that
    isn't declared in the public headers. This intermittently failed
    `iOSApiProtocolTest.Copying` (the conformance is only detected when the
    CarPlay framework happens to be loaded in the simulator). These types
    are added to the existing `NSCopying` "conformance not in headers" skip
    list, matching how the same types are already handled for `NSCoding` and
    `NSSecureCoding`.
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    dalexsoto and Copilot authored Jun 24, 2026
    8 Configuration menu
    Copy the full SHA
    fecf9e0 View commit details
    Browse the repository at this point in the history
  2. 🤖 Merge 'main' => 'xcode27.0' (#25789)

    Automated merge of `main` into `xcode27.0`.
    
    Created by the code-radiator workflow.
    
    
    
    
    > Generated by [Code
    Radiator](https://github.com/dotnet/macios/actions/runs/28054587077) ·
    905.7 AIC · ⌖ 120.2 AIC · ⊞ 33.5K ·
    [◷](https://github.com/search?q=repo%3Adotnet%2Fmacios+%22gh-aw-workflow-id%3A+code-radiator%22&type=pullrequests)
    
    <!-- gh-aw-agentic-workflow: Code Radiator, engine: copilot, version:
    1.0.60, model: claude-sonnet-4.5, id: 28054587077, workflow_id:
    code-radiator, run:
    https://github.com/dotnet/macios/actions/runs/28054587077 -->
    
    <!-- gh-aw-workflow-id: code-radiator -->
    <!-- gh-aw-workflow-call-id: dotnet/macios/code-radiator -->
    dalexsoto authored Jun 24, 2026
    6 Configuration menu
    Copy the full SHA
    61b3932 View commit details
    Browse the repository at this point in the history
  3. [devops] Run macOS tests on macOS Golden Gate 🌉 (#25784)

    ---------
    
    Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
    Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Alex Soto <alex@soto.dev>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    4 people authored Jun 24, 2026
    6 Configuration menu
    Copy the full SHA
    9eab067 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    a1dc308 View commit details
    Browse the repository at this point in the history

Commits on Jun 25, 2026

  1. 🤖 Merge 'main' => 'xcode27.0' (#25810)

    > [!CAUTION]
    > Protected files were modified in this change.
    > This pull request is in `request_review` mode and requires explicit
    human scrutiny before merge.
    >
    > Protected files: `README.md`
    
    
    
    Automated merge of `main` into `xcode27.0`.
    
    Created by the code-radiator workflow.
    
    No conflicts - clean merge.
    
    
    
    
    > Generated by [Code
    Radiator](https://github.com/dotnet/macios/actions/runs/28126888934) ·
    151 AIC · ⌖ 27.9 AIC · ⊞ 8.4K ·
    [◷](https://github.com/search?q=repo%3Adotnet%2Fmacios+%22gh-aw-workflow-id%3A+code-radiator%22&type=pullrequests)
    
    <!-- gh-aw-agentic-workflow: Code Radiator, engine: copilot, version:
    1.0.63, model: claude-sonnet-4.5, id: 28126888934, workflow_id:
    code-radiator, run:
    https://github.com/dotnet/macios/actions/runs/28126888934 -->
    
    <!-- gh-aw-workflow-id: code-radiator -->
    <!-- gh-aw-workflow-call-id: dotnet/macios/code-radiator -->
    dalexsoto authored Jun 25, 2026
    6 Configuration menu
    Copy the full SHA
    8a9f8b9 View commit details
    Browse the repository at this point in the history
  2. [ARKit] Bind new Xcode 27 APIs and deprecations (#25809)

    Resolve the ARKit xtro todos (iOS-ARKit.todo, iOS-ARKitCore.todo and
    MacCatalyst-ARKit.todo) for Xcode 27:
    
    * Bind new iOS 27 members: ARFrame.MetadataObjects, the TrackingObjects
    property on ARWorldTrackingConfiguration and ARGeoTrackingConfiguration,
    ARFaceTrackingConfiguration.EnvironmentTexturingEnabled and
    ARReferenceObject.UsdzFile.
    * Add ARTrackable conformance to ARObjectAnchor, which resolves both the
    missing protocol conformance and the new isTracked selector.
    * Mark the legacy ARReferenceObject members (resourceGroupName,
    rawFeaturePoints, referenceObjectsInGroupNamed:bundle:,
    exportObjectToURL:previewImage:error:,
    referenceObjectByApplyingTransform:,
    referenceObjectByMergingObject:error:, the
    ARReferenceObjectArchiveExtension field) and
    ARSession.CreateReferenceObject as [Deprecated] in iOS 27.
    * ARKit isn't built for Mac Catalyst, so the new selectors can't be
    bound there; add them to MacCatalyst-ARKit.ignore (sorted) and delete
    the now resolved todo files.
    * Add ARObjectAnchor introspection version-gates for its iOS 27
    ARTrackable conformance and isTracked selector (mirroring the
    ARImageAnchor pattern), and register the new undocumented members in the
    cecil documentation known-failures.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    dalexsoto and Copilot authored Jun 25, 2026
    5 Configuration menu
    Copy the full SHA
    01c8e70 View commit details
    Browse the repository at this point in the history
  3. [AudioToolbox] Bind new Xcode 27 AudioToolbox APIs. (#25811)

    Bind the missing AudioToolbox APIs reported by xtro-sharpie:
    
    * AUReverbRoomType.OutdoorGeneral (kReverbRoomType_OutdoorGeneral = 24)
    on iOS, tvOS, macOS and Mac Catalyst.
    * AUHeadTrackingBinauralRenderer (an AUAudioUnit subclass) and its three
    readonly properties (HeadTracking, Disabled, DeviceUID) on iOS.
    
    AUHeadTrackingBinauralRenderer re-exposes the base AUAudioUnit
    designated initializer as an [Internal] init plus a manual Create
    factory (guarded for iOS-only), mirroring AVCaptureEventSound, so it
    satisfies both the introspection DesignatedInitializer test and the
    cecil NoConstructorsWithOutErrorArguments test.
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
    3 people authored Jun 25, 2026
    6 Configuration menu
    Copy the full SHA
    2a22784 View commit details
    Browse the repository at this point in the history
Loading