Skip to content

[xcode27.1-net11.0] Update to Xcode 27.1 Release Candidate 1 - #26841

Merged
dalexsoto merged 7 commits into
xcode27.1-net11.0from
dev/alex/xc271-11
Oct 7, 2026
Merged

dalexsoto merged 7 commits into
xcode27.1-net11.0from
dev/alex/xc271-11

Conversation

@dalexsoto

@dalexsoto dalexsoto commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

dalexsoto and others added 6 commits October 6, 2026 13:12
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6b3f93ea-f8fc-4b5e-9890-f348ef749b6d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6b3f93ea-f8fc-4b5e-9890-f348ef749b6d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6b3f93ea-f8fc-4b5e-9890-f348ef749b6d
The iOS 27.1 simulator runtime shipped with Xcode 27.1 beta 1
(27A9269) supports only iPhone Duo. The existing selector requests
an iPhone 14 for recent iOS versions, so simctl rejects that pairing
with "Incompatible device" and SimulatorLoader throws
NoDeviceFoundException while Jenkins is still populating test tasks.

This blocked monotouch_ios, introspection, linker_ios, fsharp,
xcframework, and interdependent-binding-projects in all three attempts
of Azure DevOps build 15445909. The jobs failed before executing tests
or producing TestSummary.md, and retrying could not fix the incompatible
device/runtime selection.

Read ProductBuildVersion from the selected Xcode application's
Contents/version.plist using the existing network-disabled XML loader.
Pass that Xcode root into the selector from both Jenkins and
SimulatorLoaderFactory so both simulator discovery paths use the same
build-specific behavior. Report missing build metadata explicitly.

Select iPhone Duo only when the requested iOS runtime is 27.1 and the
Xcode build is exactly 27A9269. Preserve the existing selections for
other Xcode builds, other iOS versions, and tvOS instead of extending
this beta-specific workaround to later betas or releases.

CI failure: https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=15445909

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6d6aa9a2-9f36-43e8-851d-561fe78573e3
The introspection job in Azure DevOps build 15569683 for #26839 aborts
while attempting to create an iOS 16.0 simulator on macOS 27. The runtime
is not supported on that host with Xcode 27.1 RC; the missing test summary
is a consequence of the harness abort, not a separate test failure.
Switching to a compatible runtime also exposes genuine 17.0 simulator
API discrepancies and a missing native framework dependency.

Compatible minimum simulator runtimes
------------------------------------
Raise the configured minimum iOS and tvOS simulator versions from 16.0
to 17.0 in Make.config and regenerate the checked-in SdkVersions.cs.
Apple's Xcode requirements identify 17.0 as the lowest supported
simulator version for this Xcode, rather than the previously installed
18.4 runtime. Official iOS 17.0 (21A328) and tvOS 17.0 (21J353) runtimes
were imported and successfully booted locally.

This changes the extra-runtime installation defaults and the versions
used by xharness's minimum-runtime targets. It does not raise application
deployment minima: iOS and tvOS applications still support 15.0. Current
simulator targets remain iOS 27.1 and tvOS 27.0.

Preserve binding metadata for simulator-only API discrepancies
------------------------------------------------------------
Add a shared introspection predicate for the three
CMFormatDescriptionExtensionKeys properties HasAdditionalViews,
HasLeftStereoEyeView, and HasRightStereoEyeView. Apple's headers declare
them for 17.0, but their symbols are absent from the 17.0 simulators.
Use the same predicate for field existence/non-null checks and simulator
field availability so these test surfaces agree.

Skip only PHImageRequestOptions targetHDRHeadroom getter/setter and
PHLivePhotoRequestOptions preferHDR getter/setter on 17.0 simulators.
Keep PHImageRequestOptions preferHDR covered. All exceptions require a
simulator running exactly major/minor 17.0; later runtimes and physical
devices continue to validate these APIs. Do not change public binding
availability to accommodate incorrect simulator implementations.

Load the framework that implements LARight's category
---------------------------------------------------
LARight's authorizeWithLocalizedReason:inPresentationContext:completion:
selector is implemented by a LocalAuthenticationEmbeddedUI category.
A native probe confirmed the selector is absent until that framework is
loaded. Correct native dependency gathering instead of suppressing the
selector assertion or changing the binding.

Weak-link LocalAuthenticationEmbeddedUI only for iOS SDKs 16 and newer
when the retained product assembly contains LocalAuthentication.LARight
and LocalAuthentication itself is included. Inspect the post-trim type
set so an LAContext-only application does not gain an unnecessary UI
dependency; LAPersistedRight correctly retains its LARight base.
Weak linkage preserves loading on older supported deployment targets.
Keep the product-assembly identity check out of LEGACY_TOOLS because
legacy mtouch's Application has no Profile member.

Regression coverage and RC device selection
------------------------------------------
Update the untrimmed iOS framework baseline and assert the UI dependency
is absent from the existing fully trimmed baseline. Add fully trimmed
fixtures retaining LARight, LAPersistedRight, or only LAContext, forwarding
AdditionalDefineConstants through MySimpleApp's shared project. Assert
LocalAuthentication remains linked in all three fixtures, preventing
the negative test from passing because the entire namespace disappeared.

Inspect every Mach-O slice and require exactly one LC_LOAD_WEAK_DYLIB
command for positive cases and no UI load command for negative cases.
Compare the load command using its unsigned representation.

Extend the existing iOS 27.1 iPhone Duo selection rule to Xcode RC build
27A9275, alongside beta build 27A9269. The RC runtime has the same device
restriction; retain the existing selection behavior for other versions.

These refinements address the independent rubberduck feedback from
Claude Sonnet 5.5 (max), GPT-6.1 Sol (max), and Grok 4.7 (xhigh), especially
trim-aware dependency scope and explicit weak-link/negative coverage.

Validation after the final refinements
--------------------------------------
Complete make all and make install succeeded, including legacy mtouch,
the .NET linker, assembly-preparer, and xharness.

All five targeted iOS native-link regression cases passed: existing None
and Full linking baselines plus LARight, LAPersistedRight, and LAContext
fixtures. A probe of the freshly compiled xharness assemblies verified
both 17.0 minimum targets and current RC iOS/tvOS device selection.

Freshly rebuilt full introspection suites completed successfully:
  iOS 17.0:       42 passed, 0 failed, 2 ignored
  iOS 27.1:       43 passed, 0 failed, 1 ignored
  tvOS 17.0:      41 passed, 0 failed, 2 ignored
  tvOS 27.0:      42 passed, 0 failed, 1 ignored
  macOS:          33 passed, 0 failed, 1 ignored
  Mac Catalyst:   40 passed, 0 failed, 3 ignored

These are completed NUnit summaries, not inferred launcher success:
241 passed, zero failed/inconclusive, and 10 existing ignored tests across
six configurations. Temporary validation simulators were removed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 09f69be7-9ee7-4614-99c1-1bb410e8d4a5
Copilot AI balanced review requested due to automatic review settings October 6, 2026 19:08
@dalexsoto
dalexsoto requested a review from rolfbjarne as a code owner October 6, 2026 19:08

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.

Copilot review overview

🔵 Needs a closer look

Simulator issues remain unresolved, and the new native bindings and framework linking need RC-backed validation.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity

Open (2)
What changed in this PR

Updates .NET 11 Apple-platform support to Xcode 27.1 RC1.

Changes:

  • Updates Xcode provisioning, iOS versions, and simulator selection.
  • Adds iOS 27.1 UIKit and camera bindings.
  • Adjusts framework linking and related tests.
File Description
tools/​devops/​automation/​templates/​variables/​common.yml Selects Beta channel.
tools/​common/​SdkVersions.cs Updates SDK and simulator versions.
tools/​common/​Frameworks.cs Weak-links authentication UI when needed.
tests/​xharness/​SimulatorLoaderFactory.cs Selects RC-compatible simulators.
tests/​xharness/​Jenkins/​Jenkins.cs Passes Xcode location to selector.
tests/​introspection/​iOSApiSelectorTest.cs Skips unavailable simulator selectors.
tests/​introspection/​ApiSimulatorAvailabilityTest.cs Applies shared field exclusions.
tests/​introspection/​ApiFieldTest.cs Applies shared field exclusions.
tests/​introspection/​ApiBaseTest.cs Defines simulator field exclusions.
tests/​dotnet/​UnitTests/​ProjectTest.cs Tests authentication framework linking.
tests/​dotnet/​MySimpleApp/​shared.csproj Supports test-specific constants.
tests/​dotnet/​MySimpleApp/​AppDelegate.cs Retains selected authentication types.
tests/​cecil-tests/​Documentation.KnownFailures.txt Records new documentation gaps.
src/​UIKit/​UIEnums.cs Adds iOS 27.1 enums.
src/​uikit.cs Adds UIKit bindings.
src/​avkit.cs Adds camera-direction bindings.
src/​avfoundation.cs Adds camera device types.
Make.versions Updates iOS package version.
Make.config Pins RC1 and simulator versions.
builds/​Versions-iOS.plist.in Registers iOS 27.1 support.

Comment on lines +64 to +65
if (iOSVersion.Major == 27 && iOSVersion.Minor == 1 && (xcodeBuildVersion == "27A9269" || xcodeBuildVersion == "27A9275"))
return "com.apple.CoreSimulator.SimDeviceType.iPhone-Duo";
Comment thread Make.config
XCODE_URL=https://bosstoragemirror.blob.core.windows.net/internal-files/xcodes/Xcode_27.1_Release_Candidate.xip
ifndef NO_XCODE
XCODE_DEVELOPER_ROOT?=/Applications/Xcode_27.0.0.app/Contents/Developer
XCODE_DEVELOPER_ROOT?=/Applications/Xcode_27.1.0-rc.1.app/Contents/Developer
@dalexsoto dalexsoto added the ready-to-review This PR is ready to review/merge. label Oct 6, 2026
@vs-mobiletools-engineering-service2

This comment has been minimized.

After the Xcode 27.1 RC1 update, the .NET 11 iOS workload only accepts
27.1 as its target platform version, while libraries still defaulted to
27.0. This caused NETSDK1140 failures in referenced test libraries and
generated assembly-preparer projects, blocking the iOS test matrix.

Use 27.1 as the default for libraries too, since iOS 27.1 will include
Duo support. Keep Make.versions and SdkVersions in sync and adjust the
stable-release version assertion accordingly.

Restrict the iOS library-version exception in the stable-release scream
test to exactly 27.1, rather than accepting every version ending in .1.
Older or future versions must make the assertion fail again so that any
new library baseline requires an explicit decision.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a0652b1e-2c61-4656-b169-f2a8b4c338ea
Copilot AI balanced review requested due to automatic review settings October 6, 2026 21:50
@vs-mobiletools-engineering-service2

This comment has been minimized.

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.

Copilot review overview

🔵 Needs a closer look

New native bindings and simulator/linker behavior require validation with Xcode 27.1 RC1.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity

Open (2)
Previously missed (1)

In code that hasn't changed since last review

Medium severity Add iOS simulator coverage for weak-linking dependency cases

tests/​dotnet/​UnitTests/​ProjectTest.cs:4449

💡 Testing — Frameworks.Gather adds this dependency for iOS simulators too, but these cases and the existing iOS LinkedWithNativeLibraries cases only use ios-arm64. Consider adding iossimulator-arm64 cases to verify weak linking when LARight or LAPersistedRight survives trimming, and omission when only LAContext remains. This would cover the dependency against the simulator SDK as well.

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

⚠️ Warning ⚠️

Warning: The system requirements for the hash to compare against (4c702fb�(B) are different than for the current hash. Skipping API/generator comparison.�(B

✅ API diff vs stable

NET (empty diffs)

Pipeline on Agent
Hash: 4eb77486a6ce59ced2c527a7606cf77f7bc7f92e [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

🚀 [CI Build #4eb7748] Test results 🚀

Test results

✅ All tests passed on VSTS: test results.

🎉 All 269 tests passed 🎉

Tests counts

✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download
✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 5 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ introspection: All 7 tests passed. Html Report (VSDrops) Download
✅ linker (iOS): All 31 tests passed. Html Report (VSDrops) Download
✅ linker (MacCatalyst): All 31 tests passed. Html Report (VSDrops) Download
✅ linker (macOS): All 21 tests passed. Html Report (VSDrops) Download
✅ linker (tvOS): All 31 tests passed. Html Report (VSDrops) Download
✅ monotouch (iOS): All 25 tests passed. Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 25 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 20 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 25 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ sharpie: All 1 tests passed. Html Report (VSDrops) Download
✅ windows: All 3 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

macOS tests

✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Sequoia (15): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Tahoe (26): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Golden Gate (27): All 5 tests passed. Html Report (VSDrops) Download

Linux Build Verification

✅ Linux build succeeded

Pipeline on Agent
Hash: 4eb77486a6ce59ced2c527a7606cf77f7bc7f92e [PR build]

@dalexsoto
dalexsoto merged commit 05265fa into xcode27.1-net11.0 Oct 7, 2026
56 checks passed
@dalexsoto
dalexsoto deleted the dev/alex/xc271-11 branch October 7, 2026 01:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

copilot ready-to-review This PR is ready to review/merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants