Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 11, 2025

  • Update Directory.Build.props to set iOS/tvOS minimum version to 13.0
  • Update eng/native/build-commons.sh for iOS/tvOS deployment targets
  • Update src/native/libs/build-native.sh for iOS/tvOS deployment targets
  • Update src/tasks/AppleAppBuilder/Xcode.cs deployment target
  • Update src/tasks/MobileBuildTasks/Apple/AppleProject.cs default version
  • Update src/coreclr/tools/Common/Compiler/ObjectWriter/MachObjectWriter.cs minimum platform version
  • Update src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets minimum version
  • Update src/tasks/Crossgen2Tasks/Microsoft.NET.CrossGen.targets minimum version
  • Refactor src/coreclr/crossgen-corelib.proj to use Directory.Build.props properties
  • Update Directory.Build.props documentation to include all affected files
  • Verify all changes are consistent
  • Run code review
  • Run security scan

All iOS and tvOS minimum version references have been updated from 12.2 to 13.0 across 8 files. The crossgen-corelib.proj file now uses properties from Directory.Build.props instead of hardcoded values. Documentation updated to track all files that need synchronization.

Original prompt

This section details on the original issue you should resolve

<issue_title>Consider bumping minimum iOS / tvOS version to 13</issue_title>
<issue_description>Today our floor for iOS version support is 12.2.

<iOSVersionMin>12.2</iOSVersionMin>

Over at #116511 we are looking at implementing support for SHA-3 using CryptoKit.

While SHA-3 is Apple 26 and later, MD5/SHA-1/SHA-2 have been in CryptoKit since it was introduced in iOS 13.

If our iOS floor is iOS 13 (and tvOS) then we can implement SHA-3 with CryptoKit, and we can implement all of the other hash algorithms in terms of CryptoKit as well. This would substantially reduce the complexity of introducing SHA-3, as we won't have two different implementations of hash algorithms. The CommonCrypto one will just go away, and the SHA-3 implementations will just light up using if #available(iOS 26, etc, *).

This also benefits HMAC as well.</issue_description>

Comments on the Issue (you are @copilot in this section)

@vcsjones Any early feedback on this would be appreciated. If this is possible then great, but if we want to stick with 12.2 it's not a deal breaker, but knowing earlier will help figure out the t-shirt size between Medium and Large. @vitek-karas @davidortinau any idea of impact on MAUI? @vcsjones My understanding of this would be the following devices would not longer be "supported".
  1. iPhone 5s (2013)
  2. iPhone 6 / 6 Plus (2014)
  3. iPad Air gen 1 (2013)
  4. iPad mini 2 (2013) and iPad mini 3 (2014)</comment_new>
    <comment_new>@vitek-karas
    Adding @rolfbjarne - we need to align this with MAUI/iOS-SDK support policy, whichever way we go.</comment_new>
    <comment_new>@rolfbjarne
    Personally I wouldn't be opposed to this, but I think we need some numbers on how many users this would affect.

Another point is that iOS 12 is a bit weird, because it got updates from Apple way after iOS 13 and iOS 14 last got updates: https://endoflife.date/ios (last iOS 12 update was 23 Jan 2023).

CC @davidortinau any thoughts?</comment_new>
<comment_new>@akoeplinger
I think we're fine with bumping to iOS13 given the numbers for iOS12 today and when net11 will actually be released.</comment_new>
<comment_new>@akoeplinger
We got the thumbs up from David in an internal chat so we're good to go forward with this :)

When bumping you can generally follow all the places mentioned in

<PropertyGroup Label="SetOSTargetMinVersions">
<!--
Minimum target OS versions, keep in sync with:
- eng/native/configurecompiler.cmake
- eng/native/build-commons.sh
- eng/native/gen-buildsys.cmd
- src/native/libs/build-native.sh
- src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ObjectWriter/MachObjectWriter.cs
- src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
- src/mono/mono/tools/offsets-tool/offsets-tool.py
- src/mono/msbuild/apple/build/AppleBuild.targets
- src/installer/pkg/sfx/bundle/shared-framework-distribution-template-x64.xml
- src/installer/pkg/sfx/bundle/shared-framework-distribution-template-arm64.xml
- src/mono/msbuild/common/MonoAOTCompiler.props
- src/tasks/AppleAppBuilder/Xcode.cs
- src/tasks/MobileBuildTasks/Apple/AppleProject.cs
- https://github.com/dotnet/sdk repo > src/Installer/redist-installer/targets/GeneratePKG.targets
-->
<AndroidApiLevelMin>21</AndroidApiLevelMin>
<iOSVersionMin>12.2</iOSVersionMin>
<tvOSVersionMin>12.2</tvOSVersionMin>
<macOSVersionMin>12.0</macOSVersionMin>
<MacCatalystVersionMin>15.0</MacCatalystVersionMin>
</PropertyGroup>
</comment_new>


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits December 11, 2025 10:02
Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
Copilot AI changed the title [WIP] Update minimum iOS and tvOS version to 13 Bump minimum iOS/tvOS version from 12.2 to 13.0 Dec 11, 2025
Copilot AI requested a review from akoeplinger December 11, 2025 10:09
@akoeplinger
Copy link
Member

akoeplinger commented Dec 11, 2025

@copilot I found one more instance of 12.2 in src\coreclr\crossgen-corelib.proj. This file can be refactored to not use AppleMinOSVersion but instead just use the properties from Directory.Build.props since it's only used internally in the repo.

There are also more in these two files, but they were already using 13.0. Those can't use the properties from Directory.Build.props since they ship outside of the repo.

  • src\tasks\Crossgen2Tasks\Microsoft.NET.CrossGen.targets
  • src\coreclr\nativeaot\BuildIntegration\Microsoft.NETCore.Native.Unix.targets

Please update the two files files and then add of the paths to Directory.Build.props so we don't forget them next time

@akoeplinger
Copy link
Member

@copilot ignore the custom setup instructions, you don't need to build for the task. just modify the files

…roperties and update documentation

Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Dec 11, 2025

@copilot ignore the custom setup instructions, you don't need to build for the task. just modify the files

Updated in commit ac2157b. The crossgen-corelib.proj file now uses $(iOSVersionMin), $(tvOSVersionMin), $(macOSVersionMin), and $(MacCatalystVersionMin) properties from Directory.Build.props instead of hardcoded values. Also added src/coreclr/crossgen-corelib.proj and marked the external files in the Directory.Build.props comment list.

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 pull request bumps the minimum iOS and tvOS version from 12.2 to 13.0 to enable simplified implementation of SHA-3 and other hash algorithms using Apple's CryptoKit framework, which was introduced in iOS 13. The change updates version numbers across 8 files and refactors one file to use centralized version properties instead of hardcoded values.

Key changes:

  • Updated minimum iOS/tvOS version from 12.2 to 13.0 in Directory.Build.props and across all native build scripts, task files, and CoreCLR components
  • Refactored src/coreclr/crossgen-corelib.proj to use properties from Directory.Build.props instead of hardcoded version numbers, improving maintainability
  • Updated documentation to include external files that need synchronization

Reviewed changes

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

Show a summary per file
File Description
Directory.Build.props Updated iOS/tvOS minimum version properties to 13.0 and expanded documentation to list external files
eng/native/build-commons.sh Updated CMAKE_OSX_DEPLOYMENT_TARGET to 13.0 for iOS/tvOS simulator and device builds
src/native/libs/build-native.sh Updated CMAKE_OSX_DEPLOYMENT_TARGET to 13.0 for iOS/tvOS simulator and device builds
src/tasks/AppleAppBuilder/Xcode.cs Updated CMAKE_OSX_DEPLOYMENT_TARGET to 13.0 for non-macOS platforms
src/tasks/MobileBuildTasks/Apple/AppleProject.cs Updated default minimum OS version to 13.0 for non-macCatalyst platforms
src/tasks/Crossgen2Tasks/Microsoft.NET.CrossGen.targets Updated AppleMinOSVersion to 13.0 for iOS/tvOS platforms
src/coreclr/tools/Common/Compiler/ObjectWriter/MachObjectWriter.cs Updated MinimumPlatformVersion hex value to 0x0D_00_00 (13.0.0) for iOS/tvOS platforms
src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets Updated AppleMinOSVersion to 13.0 for iOS/tvOS platforms
src/coreclr/crossgen-corelib.proj Refactored to use version properties from Directory.Build.props, splitting iOS and tvOS into separate conditions

@akoeplinger akoeplinger changed the title Bump minimum iOS/tvOS version from 12.2 to 13.0 Bump minimum iOS/tvOS version from 12.2 to 13.0 and MacCatalyst from 15.0 to 15.2 Dec 11, 2025
- src/mono/msbuild/common/MonoAOTCompiler.props
- src/tasks/AppleAppBuilder/Xcode.cs
- src/tasks/MobileBuildTasks/Apple/AppleProject.cs
- src/tasks/Crossgen2Tasks/Microsoft.NET.CrossGen.targets (external)
Copy link
Member

Choose a reason for hiding this comment

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

It is not clear what "(external)" means here

Copy link
Member

Choose a reason for hiding this comment

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

Delete it?

Copy link
Member

@akoeplinger akoeplinger Dec 11, 2025

Choose a reason for hiding this comment

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

it decided to add that based on my explanation that these targets are used/shipped outside of the repo (i.e. can't use the properties from the root Directory.Build.props). let me remove it

Copy link
Member

Choose a reason for hiding this comment

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

We should add a note here that we need to update the Crossgen targets in the dotnet/sdk repo.

Copy link
Member

Choose a reason for hiding this comment

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

@jkoritzinsky how are these copies kept in sync? maybe we should automate that rather than needing to remember

Copy link
Member

Choose a reason for hiding this comment

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

I'll add the note in a separate PR so we can unblock other PRs

external isn't useful and Microsoft.NETCore.Native.Unix.targets was duplicated
@akoeplinger
Copy link
Member

/ba-g known infra timeouts on tvOS

@akoeplinger akoeplinger merged commit e741300 into main Dec 13, 2025
160 of 164 checks passed
@akoeplinger akoeplinger deleted the copilot/bump-ios-tvos-version-13 branch December 13, 2025 08:50
rolfbjarne added a commit to rolfbjarne/runtime that referenced this pull request Jan 6, 2026
* Mac Catalyst 15.0 is macOS 12.0, which is the min macOS version, so this way the min Mac Catalyst version matches the min macOS version.
* Most of the bump to 15.2 was done in dotnet#122436, but that pull request doesn't explain why.
* However, it seems to stem from dotnet#122010, which bumps to 15.2 in one place, to work around a linker warning, because we were compiling for 15.2 somewhere.
* Compiling for 15.2 started in dotnet#101342, which seems like a mistake, because:
    * The pull request description says it's bumping to 15.0, not 15.2
    * A comment for the line in question says it's 15.0, not 15.2.
    * My guess is that it's a typo, becuse the min iOS version was bumped to iOS 12.2, and thus a half-corrected copy-paste ended up bumping Mac Catalyst to 15.2 instead of 15.0 in one place.
    * https://github.com/dotnet/runtime/pull/101342/changes#diff-194ced50b86c5e2b046ca63ed5a07b792fbd198c4b234a5c187be5d5ff0d398fR252
@github-actions github-actions bot locked and limited conversation to collaborators Jan 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consider bumping minimum iOS / tvOS version to 13

6 participants