Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
0dc3ce9
[xcode27.0] Bump to Xcode 27.0 Beta 1 and raise the iOS/tvOS minimum …
dalexsoto Jun 9, 2026
17c049b
[src] Remove redundant iOS/tvOS availability versions below the 15.0 …
dalexsoto Jun 9, 2026
60112d0
Auto-format source code
Jun 9, 2026
bee05bc
Bump mlaunch and fix some tests
dalexsoto Jun 10, 2026
01427aa
[CI] Run ./configure after provisioning in the simulator test stage
dalexsoto Jun 10, 2026
ea0c50d
[bgen] Update test expectations for the raised iOS/tvOS minimum
dalexsoto Jun 10, 2026
346df76
[xcode27.0] Fix simulator provisioning and ACTool tests for Xcode 27
dalexsoto Jun 11, 2026
04a736d
[xcode27.0] Make the simulator runtime fallback download deterministi…
dalexsoto Jun 11, 2026
dc4c6cf
[msbuild] Make inlined dlfcn native symbol references weak + dlsym fa…
dalexsoto Jun 11, 2026
f2412da
bump xharness
dalexsoto Jun 11, 2026
aeb10c4
[tests] Use an Apple TV 4K simulator device type for tvOS 27+
dalexsoto Jun 11, 2026
69bdf58
[tests] Skip x64 simulator test configurations on Xcode 27+
dalexsoto Jun 11, 2026
19afb2b
Auto-format source code
Jun 11, 2026
a44bb3a
[tests] Use Xcode 27 simulator device types in MLaunchTool
dalexsoto Jun 11, 2026
f4f20a0
bump xharness
dalexsoto Jun 11, 2026
e00f354
[bgen] Propagate simulator availability attributes to smart-enum fiel…
dalexsoto Jun 12, 2026
cb5ed27
[src] Fix introspection simulator availability for the raised iOS/tvO…
dalexsoto Jun 12, 2026
3921131
[tests] Await async cancellation in SecProtocolMetadataTest to avoid …
dalexsoto Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 9 additions & 9 deletions Make.config
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ NUGET_RELEASE_BRANCH=release/10.0.1xx
##
## Note that the prerelease identifier should be as short as possible, because otherwise
## the resulting package name can become too long for MSIs.
NUGET_HARDCODED_PRERELEASE_IDENTIFIER=xcode26.5
NUGET_HARDCODED_PRERELEASE_BRANCH=xcode26.5
NUGET_HARDCODED_PRERELEASE_IDENTIFIER=xcode27.0
NUGET_HARDCODED_PRERELEASE_BRANCH=xcode27.0

# compute the alphanumeric version of branch names
NUGET_RELEASE_BRANCH_ALPHANUMERIC:=$(shell export LANG=C; printf "%s" "$(NUGET_RELEASE_BRANCH)" | tr -c '[a-zA-Z0-9-]' '-')
Expand Down Expand Up @@ -209,10 +209,10 @@ MACCATALYST_NUGET_VERSION_FULL=$(MACCATALYST_NUGET_VERSION_NO_METADATA)$(NUGET_B
-include $(TOP)/configure.inc

# Xcode version should have both a major and a minor version (even if the minor version is 0)
XCODE_VERSION=26.5
XCODE_URL=https://bosstoragemirror.blob.core.windows.net/internal-files/xcodes/Xcode_26.5.xip
XCODE_VERSION=27.0
XCODE_URL=https://bosstoragemirror.blob.core.windows.net/internal-files/xcodes/Xcode_27_beta.xip
ifndef NO_XCODE
XCODE_DEVELOPER_ROOT?=/Applications/Xcode_26.5.0.app/Contents/Developer
XCODE_DEVELOPER_ROOT?=/Applications/Xcode_27.0.0-beta.app/Contents/Developer
ifneq (OK,$(shell test -d $(abspath $(XCODE_DEVELOPER_ROOT)) && echo OK))
NO_XCODE=1
$(warning The required Xcode ($(XCODE_VERSION)) is not installed in $(XCODE_DEVELOPER_ROOT) - this directory does not exist. Any parts of the build that require Xcode will be disabled.)
Expand Down Expand Up @@ -290,14 +290,14 @@ MAX_TVOS_SIMULATOR_VERSION=$(TVOS_SDK_VERSION)
endif

# Minimum OS versions for running XI/XM apps.
MIN_IOS_SDK_VERSION=12.2
MIN_IOS_SDK_VERSION=15.0
MIN_MACOS_SDK_VERSION=12.0
MIN_TVOS_SDK_VERSION=12.2
MIN_TVOS_SDK_VERSION=15.0
MIN_MACCATALYST_SDK_VERSION=15.0

# Minimum OS versions for .NET 9 support
DOTNET_MIN_IOS_SDK_VERSION=12.2
DOTNET_MIN_TVOS_SDK_VERSION=12.2
DOTNET_MIN_IOS_SDK_VERSION=15.0
DOTNET_MIN_TVOS_SDK_VERSION=15.0
DOTNET_MIN_MACCATALYST_SDK_VERSION=15.0
DOTNET_MIN_MACOS_SDK_VERSION=12.0

Expand Down
8 changes: 4 additions & 4 deletions Make.versions
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
# IMPORTANT: There must be *no* managed API differences unless the two first
# numbers (major.minor) changes.

IOS_NUGET_OS_VERSION=26.5
TVOS_NUGET_OS_VERSION=26.5
MACOS_NUGET_OS_VERSION=26.5
MACCATALYST_NUGET_OS_VERSION=26.5
IOS_NUGET_OS_VERSION=27.0
TVOS_NUGET_OS_VERSION=27.0
MACOS_NUGET_OS_VERSION=27.0
MACCATALYST_NUGET_OS_VERSION=27.0

# The following are the OS versions we first supported with the current .NET version.
# These versions must *not* change with minor .NET updates, only major .NET releases.
Expand Down
4 changes: 4 additions & 0 deletions builds/Versions-MacCatalyst.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -68,6 +69,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>MacCatalystVersionMap</key>
Expand Down Expand Up @@ -132,6 +134,8 @@
<string>26.4</string>
<key>26.5</key>
<string>26.5</string>
<key>27.0</key>
<string>27.0</string>
</dict>
<key>RecommendedXcodeVersion</key>
<string>@XCODE_VERSION@</string>
Expand Down
18 changes: 2 additions & 16 deletions builds/Versions-iOS.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,6 @@
<dict>
<key>iOS</key>
<array>
<string>12.2</string>
<string>12.3</string>
<string>12.4</string>
<string>13.0</string>
<string>13.1</string>
<string>13.2</string>
<string>13.3</string>
<string>13.4</string>
<string>13.5</string>
<string>13.6</string>
<string>14.0</string>
<string>14.1</string>
<string>14.2</string>
<string>14.3</string>
<string>14.4</string>
<string>14.5</string>
<string>15.0</string>
<string>15.2</string>
<string>15.4</string>
Expand All @@ -46,6 +30,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -104,6 +89,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>RecommendedXcodeVersion</key>
Expand Down
2 changes: 2 additions & 0 deletions builds/Versions-macOS.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -66,6 +67,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>RecommendedXcodeVersion</key>
Expand Down
14 changes: 2 additions & 12 deletions builds/Versions-tvOS.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,6 @@
<dict>
<key>tvOS</key>
<array>
<string>12.2</string>
<string>12.3</string>
<string>12.4</string>
<string>13.0</string>
<string>13.2</string>
<string>13.3</string>
<string>13.4</string>
<string>14.0</string>
<string>14.2</string>
<string>14.3</string>
<string>14.4</string>
<string>14.5</string>
<string>15.0</string>
<string>15.2</string>
<string>15.4</string>
Expand All @@ -41,6 +29,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -94,6 +83,7 @@
<string>26.2</string>
<string>26.4</string>
<string>26.5</string>
<string>27.0</string>
</array>
</dict>
<key>RecommendedXcodeVersion</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "13.0"
"defaultValue": "15.0"
}
},
"defaultName": "iOSNotificationContentExtension1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "13.0"
"defaultValue": "15.0"
},
"extensionClassName": {
"type": "parameter",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "13.0"
"defaultValue": "15.0"
},
"deviceFamily": {
"type": "parameter",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "13.0"
"defaultValue": "15.0"
},
"deviceFamily": {
"type": "parameter",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "13.0"
"defaultValue": "15.0"
},
"deviceFamily": {
"type": "parameter",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "12.2"
"defaultValue": "15.0"
}
},
"defaultName": "tvOSApp1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"description": "Overrides SupportedOSPlatformVersion in the project file",
"replaces": "minOSVersion",
"datatype": "string",
"defaultValue": "12.2"
"defaultValue": "15.0"
}
},
"defaultName": "tvOSApp1"
Expand Down
2 changes: 1 addition & 1 deletion mk/xamarin.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Available versions can be seen here:
# https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.Tools.Mlaunch/versions
MLAUNCH_NUGET_VERSION=1.1.113
MLAUNCH_NUGET_VERSION=1.1.125
# https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/AppleDocReader/versions
ADR_NUGET_VERSION=1.0.0
12 changes: 9 additions & 3 deletions runtime/trampolines.m
Original file line number Diff line number Diff line change
Expand Up @@ -283,9 +283,15 @@
Method method = class_getInstanceMethod (cls, sel);
if (!method)
return NULL;
struct objc_method_description* m_desc;
m_desc = method_getDescription (method);
return m_desc ? m_desc->types : NULL;
// Read the method's Objective-C type encoding. We deliberately use method_getTypeEncoding
// instead of method_getDescription (method)->types: method_getTypeEncoding returns the same
// type-encoding string we previously read from the objc_method_description's 'types' field, but
// method_getDescription was marked deprecated in the Xcode 27 SDK (the <objc/runtime.h>
// annotation reads "first deprecated in macOS 11.0 - Use method_getName and
// method_getTypeEncoding"). The runtime is compiled with -Werror and -Wdeprecated-declarations,
// so a call to method_getDescription would break the build. Since we only ever consumed the
// 'types' field, method_getTypeEncoding is the exact, non-deprecated replacement.
return method_getTypeEncoding (method);
}

static int
Expand Down
26 changes: 23 additions & 3 deletions scripts/generate-vs-workload/generate-vs-workload.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,30 @@
// So implement a custom version scheme for .NET 10 (in .NET 11 the inserted
// package name will be different, so we can use any version number we want,
// so we'll use the correct one).
//
// The scheme keeps the major fixed at 255 and uses the commit distance as the build component, and
// encodes the Xcode version into the minor component so the MSI version increases monotonically every
// time the Xcode major/minor increases (a newer Xcode must produce a higher MSI version), while staying
// just above the last bad version (255.220.39248) and below the MSI minor ceiling of 255.
//
// The minor bump is computed from the Xcode version as:
// minorVersionBump = (Xcode major - 26) * 10 + Xcode minor
// Xcode 26 is the first Xcode that uses Apple's year-based version numbers, so subtracting 26 gives 0
// for the 26.x series, 1 for 27.x, 2 for 28.x, etc. Multiplying by 10 and adding the (single-digit)
// Xcode minor yields a value that strictly increases with the Xcode version:
// 26.5 => 5 (MSI minor 225), 27.0 => 10 (230), 27.5 => 15 (235), 28.0 => 20 (240), ...
// The final MSI minor is 220 + minorVersionBump. For Xcode 27.x and 28.x (and any 26.x with a non-zero
// minor) this is > 220, so the version exceeds the 255.220.39248 baseline on the minor component alone,
// regardless of the build component (only Xcode 26.0 would map to exactly 220, where the build component
// would instead have to exceed 39248). The minor stays <= 255 across .NET 10's supported Xcode range
// (26-28; 28.9 => 249) and would first overflow the 255 ceiling at Xcode 29.6 (=> 256), which is one
// reason this scheme is .NET-10-only. This relies on the Xcode minor being a single digit, which has
// always held.
//
// Note: this was previously written as (26 - Xcode major), which is negative for Xcode 27 and later
// and threw in the System.Version constructor (it rejects negative components), breaking the build.
var minimumVersion = new Version (255, 220, 39248); // This is the last incorrect MSI version, we need to produce something higher than this.
// bump minor version according to current Xcode version:
// minor = minimumVersion.Minor + (26 - Major Xcode version) * 10 + (Minor Xcode version)
var minorVersionBump = int.Parse (new Version (26 - Version.Parse (xcodeVersion).Major, Version.Parse (xcodeVersion).Minor).ToString ().Replace (".", ""));
var minorVersionBump = (Version.Parse (xcodeVersion).Major - 26) * 10 + Version.Parse (xcodeVersion).Minor;
// just use the commit distance for the build version, our minor version will be higher than the minimum version, so we can use any build version.
var buildVersionBump = commitDistances [platform];
var msiVersion = new Version (minimumVersion.Major, minimumVersion.Minor + minorVersionBump, buildVersionBump);
Expand Down
4 changes: 2 additions & 2 deletions src/ARKit/ARSkeleton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

namespace ARKit {
public partial class ARSkeleton {
[SupportedOSPlatform ("ios14.0")]
[SupportedOSPlatform ("ios")]
[UnsupportedOSPlatform ("maccatalyst")]
[UnsupportedOSPlatform ("tvos")]
[DllImport (Constants.ARKitLibrary)]
static extern IntPtr /* NSString */ ARSkeletonJointNameForRecognizedPointKey (/* NSString */ IntPtr recognizedPointKey);

[SupportedOSPlatform ("ios14.0")]
[SupportedOSPlatform ("ios")]
[UnsupportedOSPlatform ("maccatalyst")]
[UnsupportedOSPlatform ("tvos")]
public static NSString? CreateJointName (NSString recognizedPointKey)
Expand Down
4 changes: 2 additions & 2 deletions src/AVFoundation/AVSpeechSynthesizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ namespace AVFoundation {
/// <include file="../../docs/api/AVFoundation/AVSpeechSynthesizer.xml" path="/Documentation/Docs[@DocId='T:AVFoundation.AVSpeechSynthesizer']/*" />
public partial class AVSpeechSynthesizer {
#if !XAMCORE_5_0
[SupportedOSPlatform ("tvos13.0")]
[SupportedOSPlatform ("ios13.0")]
[SupportedOSPlatform ("tvos")]
[SupportedOSPlatform ("ios")]
[SupportedOSPlatform ("maccatalyst")]
[SupportedOSPlatform ("macos")]
[BindingImpl (BindingImplOptions.Optimizable)]
Expand Down
Loading
Loading