Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xcode 14.2/iOS 16.2 SDK Support? #17191

Closed
andrewtechhelp opened this issue Jan 11, 2023 · 25 comments
Closed

Xcode 14.2/iOS 16.2 SDK Support? #17191

andrewtechhelp opened this issue Jan 11, 2023 · 25 comments
Labels
question The issue is a question
Milestone

Comments

@andrewtechhelp
Copy link

andrewtechhelp commented Jan 11, 2023

Just wondering when Xcode 14.2/iOS 16.2 SDK support is going to be released? I thought it might have come out with the Visual Studio 17.4.4 update yesterday, but it wasn't listed in the release notes and there was no Visual Studio for Mac update yesterday so assuming it's not there yet. It was mentioned in #16659 when it was closed that there'd be an issue opened for Xcode 14.2, but I can't find an issue for it, so opening this instead.

I guess this also leads into a broader question I've had for a while that I thought I'd ask now. What's changed in recent years where there's now long delays between the release of an Xcode update and the release of Xamarin/.NET support for these updates?

Years ago Xamarin would advertise "Same Day Support" for when a new major version of iOS shipped (e.g. https://devblogs.microsoft.com/xamarin/xamarin-releases-same-day-support-for-ios-6/ and https://devblogs.microsoft.com/xamarin/ios-7-and-xamarin-ready-when-you-are/) where the Xamarin SDK would ship the same day that Apple shipped the final version of their tooling.

This year iOS 16.0 and Xcode 14.0 were released on September 12th but the Xamarin SDK for iOS 16 shipped on September 27th (about 2 weeks later) and the .NET MAUI 6.0 SDK for iOS 16 shipped on October 11th (about 4 weeks later).

Then iOS 16.1 was released on October 24th and Xcode 14.1 was released on November 1st. The Xamarin SDK and .NET MAUI 6.0/7.0 SDKs for iOS 16.1 shipped on December 13th (about 6 weeks later).

iOS 16.2 and Xcode 14.2 happened to be released that same day that Xamarin/.NET support for 16.1 was added (December 13th) and 4 weeks later there's still no support (although it's been Christmas and New Year so that's understandable).

But yea, I just don't really understand why there used to be same day support for major OS upgrades as something that was promoted as a selling point and now these days it's sometimes over a months wait for .1 releases. Has something changed on the Apple side where you had access to things in the past that you don't anymore? Is it that Xamarin not being a separate company anymore means that they can't move as quickly on these things as they used to? - Hoping there's some answer for this :)

@mlancione
Copy link

It would be great to get clarity on this issue from Microsoft.

@TonyLugg
Copy link

It would be nice if there were a page to go to that indicates the latest iOS/xcode version currently supported.

@beeradmoore
Copy link

@dalexsoto mentioned in the closing of this issue that there would be a new issue created to track Xcode 14.2 support. Not sure if that was an internal one or didn't get made at all yet. Either way I am sure there is work being done on it as you can see it in the net7.0 changes so it iwll just be a matter of time.

@TonyLugg
Copy link

TonyLugg commented Jan 13, 2023

@beeradmoore I think everyone realizes that there is always "work being done" to support the latest xcode/iOS. The Mac always wants to install the latest udpates. We need a place to look to see the latest version of xcode/iOS supported by Visual Studio 2022. Otherwise we are left wondering if we should install the latest, like the current 14.2 xcode, for each of MAUI and Xamarin.

@beeradmoore
Copy link

beeradmoore commented Jan 13, 2023

Agree 100%, also that cross reference dedicated page would be nice. I'm always scrolling through the releases tab looking for what is supported which is now a mess that net6 and net7 are all in there as well.

As for Xcode and updates, that's why I use Xcodes app so I can maintain multiple copies of Xcode. I have 14.2 downloaded and ready to roll for when the Xamarin update is out.

@TonyLugg
Copy link

Will check out the Xcodes app for sure (your link is broken). I tend to try to keep the Mac at the versions supported by VS, but the VS release notes aren't always clear as to what is supported.

@beeradmoore
Copy link

Link fixed, they apparently need the www in there -_-

@MichaelRumpler
Copy link

You're not the only one who's frustrated by the slow support. Even Miguel himself tweets sometimes in that direction.
image
https://twitter.com/migueldeicaza/status/1559787783820034050?s=20

@dalexsoto dalexsoto added the question The issue is a question label Jan 23, 2023
@dalexsoto dalexsoto added this to the Future milestone Jan 23, 2023
@dalexsoto
Copy link
Member

Hello Folks,

Thank you all for your comments we really look at them and we can definitely sympathize. As you can see by the activity in our repos we keep working on these and usually when a new Xcode shows up we start to work on it right away (for example the initial xcode14.2 PR, or the entire work put into supporting Xcode 14.0) but things have changed a lot in the last couple of years please do not take my words as a way to justify but as a window into how things are done today.

Before .NET 6 we only had to maintain Xamarin.iOS/Mac products which was a stack the we (the old Xamarin team) owned entirely top to bottom but with .NET 6+ now we build on top of the dotnet runtime and sdk teams which of course they have their processes and schedules and we gotta make sure that with any bumps we get in our dependencies they do not break us but this also means that as of today we have doubled the products we need to maintain (Xamarin and .NET for Apple platforms) not leaving anyone behind but also working on the latest tech in the ecosystem.

Then once we call our products good to ship we need to align to the Visual Studio shipping schedules for both Windows and Mac (which usually happen around once a month) but if you want to be part of it you have a hard deadline to be in and if for whatever reason you miss that deadline (i.e. Xcode GA shipping just a day after the deadline) then you need to be ready by the next service release train. This is understandable because shipping Visual Studio is a coordinated effort between a lot of teams inside the Developer Division at Microsoft.

And lastly we need to make all of the above work with Apple's unpredictable release schedule of Xcode, sometimes we get several betas, sometimes we get an straight RC release of Xcode (see https://xcodereleases.com for timelines) that sometimes we just get 1 week to react to the set of changes before it goes GA.

Going a little deeper on the last point to give an example, on the Xcode 14.0 release, the entire time that Apple shipped Xcode 14.0 Betas the macOS 13.0 SDK was part of the bundle but when they hit RC Apple reverted the macOS 13.0 SDK to v12.3, this is not an easy change because of the nature on how we build both Xamarin and .NET for Apple platforms products, we share the binding files so now we had to react to such a big change plus there was another thing that apple did in this RC version which was bumping the minimum required macOS to 12.5+ so this impacted our entire CI infrastructure as we had to update it and make sure that the required dependencies of our build were also not impacted by the update (as an example Apple pulled python in a minor macOS update). This last point really hindered our ability to release in a timely manner and as noted this particular release we shipped way later than expected.

This is a general overview on the things that need to align in order to have a release shipped to all of you, we are investing in ways to reduce our time to ship, for example less than a year ago our full test suite used to take around 12 hours and around 6hrs in PRs (partial test ran), this meant that we really had a 24hrs turnaround if we needed a change checked in into our release branches, today we are able to run our entire test suite at PR time in roughly 5 hrs and there is still room for improvement. We are also working in cutting time with downstream (for example MAUI) so we can test if any of our changes would break MAUI sooner than it is today.

I can speak on behalf of the entire macios team that we really sympathize and we are not currently happy with our shipping times and constrains, we are really listening to your feedback and working towards reducing our Xcode response times, I can't promise you that we can go back to the 24hrs turnaround but at least give you the option to manually upgrade while you wait the next version of Visual Studio to be released, this is something we are working out the details and hopefully we can have before the next Xcode major release.

Thanks a lot for your patience and hanging out with us we really appreciate you all taking the time to write us and we strive to serve you to the best we can.

@TonyLugg
Copy link

@dalexsoto Thank you for the detailed explanation, it certainly is a difficult endeavor for your team. There are still two things outstanding from this in my mind:

  1. We need a place to go to know what the latest supported version of xcode is.
  2. Conversion to MAUI has had numerous pain points, particularly UI things like DataTemplate element visibility just now working. As such I feel Xamarin Forms should continue to have onging updates for some time (not evolved) to support new versions of Android and iOS (and xcode) until such time that we feel MAUI is stable enough for us to complete the migriation.

@dalexsoto
Copy link
Member

@dalexsoto Thank you for the detailed explanation, it certainly is a difficult endeavor for your team. There are still two things outstanding from this in my mind:

  1. We need a place to go to know what the latest supported version of xcode is.

As for releases, you can find them here https://github.com/xamarin/xamarin-macios/releases anything listed there for both Xamarin and .NET X but probably we can be more explicit about it, I'll take a note and an action to myself to find a better place for this information.

  1. Conversion to MAUI has had numerous pain points, particularly UI things like DataTemplate element visibility just now working. As such I feel Xamarin Forms should continue to have onging updates for some time (not evolved) to support new versions of Android and iOS (and xcode) until such time that we feel MAUI is stable enough for us to complete the migriation.

This one I do not have a good answer and probably the best person to comment on it is our PM David Ortinau so feel free to email him: David.Ortinau at microsoft.com

@MichaelRumpler
Copy link

  1. We need a place to go to know what the latest supported version of xcode is.

Not only Xcode.

We also need to know if we can install a MacOS update on the build host and which iOS versions are supported to deploy and run our apps on. Both have been problems in the past. Now I always search for new versions before I install them.

@vincentcastagna
Copy link

vincentcastagna commented Jan 23, 2023

So, question remains : is Xcode 14.2 supported with VS 17.4.3 for mac and Xamarin iOS 16.1.1 ?

@mlancione
Copy link

@dalexsoto Thank you for that detailed explanation. I think what it reveals to me is that transparency and frequent updates are key with these updates.

Each XCode release should be treated like a Xamarin (or .net iOS) service interruption. Standard practices around a service interruption notice policy would really help in this regard (transparent immediate communication through a status page where the scope of the outage is explained and offer workarounds or resolution ETAs if possible).

I think the same is true regarding native platform compatibility parity. There should be a status page that lists all of the native features that are currently missing with Microsoft's current ETA on future support. For instance, RealityKit or any other Swift-only frameworks are not currently supported. Xamarin in the past had committed to supporting all native functionality. We don't know if that's still the case with Microsoft and that adds risk for new Apple SDKs going forward.

@beeradmoore
Copy link

So, question remains : is Xcode 14.2 supported with VS 17.4.3 for mac and Xamarin iOS 16.1.1 ?

@vincentcastagna, officially no (see the release for Xamarin.iOS 16.1.1).

Unofficially, apps may compile but there is no Xcode 14.2 features that you will have access to so IMO its better to stay on 14.1..

@TonyLugg
Copy link

officially no (see the release for Xamarin.iOS 16.1.1).

Those release notes are not clear as far as what we are looking for. I don't even care about the latest iOS, but if I install xcode 14.2 will my xamarin/MAUI builds work?

@beeradmoore
Copy link

Screenshot 2023-01-24 at 9 38 14 am

First line that isn't the heading mentions Xcode 14.1, which isn't very clear TBH. I usually go in to latest Xamarin.iOS release and ctrl+f for 14.2 and then 14.1 to see if we are there yet.

The super confusing ones are when say Xamarin.iOS gets say 14.2 support and if it were delayed for net6-ios and net7-ios so they are still on 14.1. Both are officially supported but changes depending what you are doing.

I think a little table somewhere would be nice, but there is a million other things going on so I understand why it isn't.

but if I install xcode 14.2 will my xamarin/MAUI builds work?

Only one way to find out for sure. In the past I've had Xcode updates work flawlessly, and I've had Xcode updates refuse to build my app. I have been burned many times before, which is why I use Xcodes app to manage my Xcode installs. IMO the only reason to update into unknown territory is if there is a known Xcode bug that has been fixed and you need that fix before Xamarin.iOS support is up.

@beeradmoore
Copy link

I've just started a repo for Xcode support matrix. If anyone has any better ways to layout the data I am all ears/PRs. I'll attempt to backfill the data a few versions and keep on top of it when new versions come out.

@andrewtechhelp
Copy link
Author

andrewtechhelp commented Jan 24, 2023

Hello Folks,

Thank you all for your comments we really look at them and we can definitely sympathize. As you can see by the activity in our repos we keep working on these and usually when a new Xcode shows up we start to work on it right away (for example the initial xcode14.2 PR, or the entire work put into supporting Xcode 14.0) but things have changed a lot in the last couple of years please do not take my words as a way to justify but as a window into how things are done today.

Before .NET 6 we only had to maintain Xamarin.iOS/Mac products which was a stack the we (the old Xamarin team) owned entirely top to bottom but with .NET 6+ now we build on top of the dotnet runtime and sdk teams which of course they have their processes and schedules and we gotta make sure that with any bumps we get in our dependencies they do not break us but this also means that as of today we have doubled the products we need to maintain (Xamarin and .NET for Apple platforms) not leaving anyone behind but also working on the latest tech in the ecosystem.

Then once we call our products good to ship we need to align to the Visual Studio shipping schedules for both Windows and Mac (which usually happen around once a month) but if you want to be part of it you have a hard deadline to be in and if for whatever reason you miss that deadline (i.e. Xcode GA shipping just a day after the deadline) then you need to be ready by the next service release train. This is understandable because shipping Visual Studio is a coordinated effort between a lot of teams inside the Developer Division at Microsoft.

And lastly we need to make all of the above work with Apple's unpredictable release schedule of Xcode, sometimes we get several betas, sometimes we get an straight RC release of Xcode (see https://xcodereleases.com for timelines) that sometimes we just get 1 week to react to the set of changes before it goes GA.

Going a little deeper on the last point to give an example, on the Xcode 14.0 release, the entire time that Apple shipped Xcode 14.0 Betas the macOS 13.0 SDK was part of the bundle but when they hit RC Apple reverted the macOS 13.0 SDK to v12.3, this is not an easy change because of the nature on how we build both Xamarin and .NET for Apple platforms products, we share the binding files so now we had to react to such a big change plus there was another thing that apple did in this RC version which was bumping the minimum required macOS to 12.5+ so this impacted our entire CI infrastructure as we had to update it and make sure that the required dependencies of our build were also not impacted by the update (as an example Apple pulled python in a minor macOS update). This last point really hindered our ability to release in a timely manner and as noted this particular release we shipped way later than expected.

This is a general overview on the things that need to align in order to have a release shipped to all of you, we are investing in ways to reduce our time to ship, for example less than a year ago our full test suite used to take around 12 hours and around 6hrs in PRs (partial test ran), this meant that we really had a 24hrs turnaround if we needed a change checked in into our release branches, today we are able to run our entire test suite at PR time in roughly 5 hrs and there is still room for improvement. We are also working in cutting time with downstream (for example MAUI) so we can test if any of our changes would break MAUI sooner than it is today.

I can speak on behalf of the entire macios team that we really sympathize and we are not currently happy with our shipping times and constrains, we are really listening to your feedback and working towards reducing our Xcode response times, I can't promise you that we can go back to the 24hrs turnaround but at least give you the option to manually upgrade while you wait the next version of Visual Studio to be released, this is something we are working out the details and hopefully we can have before the next Xcode major release.

Thanks a lot for your patience and hanging out with us we really appreciate you all taking the time to write us and we strive to serve you to the best we can.

Really appreciate the detailed response to this and the insight into the challenges and constraints you have. I'll be keen (when the details are worked out) to hear more about the manual upgrade option to mitigate the 'just missed the Visual Studio service release window deadline' challenge that can delay an otherwise ready to ship update.

I also second the point made above too about finding out if there plans for some of the newer SDKs that are Swift only - not because I specifically need anything that's in that bucket right now, but because I'm worried Apple will continue to put more and more stuff into that bucket in the future and eventually it will become a problem.

Anyway thanks again! Keen to see the Xcode 14.2/iOS 16.2 SDK soon :)

@vincentcastagna
Copy link

@dalexsoto it makes perfect sense. And I don't believe you can have the same velocity as apple, I don't mind sticking with xcode 14.1 for a few weeks/months. Nevertheless, I would believe a small hint on the main readme with a small disclaimer of what is the most recent xcode's version compatible with xamarin iOS could be helpful and clearer for everyone.

@giuseppenovielli
Copy link

@dalexsoto it makes perfect sense. And I don't believe you can have the same velocity as apple, I don't mind sticking with xcode 14.1 for a few weeks/months. Nevertheless, I would believe a small hint on the main readme with a small disclaimer of what is the most recent xcode's version compatible with xamarin iOS could be helpful and clearer for everyone.

@dalexsoto Yes, i think, also a simple file .md as @beeradmoore already do -> https://github.com/beeradmoore/net-xcode

So for every framework (xamarin, .net), the last xcode version compatible.

@mlopezqkd
Copy link

In addition to displaying the currently supported Xcode version, it's also important to display the currently supported Mac OS version.

@rolfbjarne
Copy link
Member

We've released Xcode 14.2 support now:

Note that it may take some time until your IDE offers the upgrades.

However, if you're using:

VSMac:

  • .NET: a dotnet workload update should get the updated workloads.
  • Xamarin.iOS / Xamarin.Mac: you can download packages from the release page above and install them directly on your Mac (and then also update to Xcode 14.2).

If you're working with VS Windows:

  • We recommend waiting until VS Windows offers the upgrade, because a corresponding update might be required on the Windows side as well. This depends on the release schedule of VS Windows, so there's not much we can do to speed this up.
  • For Xamarin.iOS you can still upgrade the Mac part and try to ignore any request from the IDE to downgrade. This may or may not work (it usually does, especially for minor releases like this one), but you can always downgrade if it doesn't work.

Note that it's possible [1] to have multiple versions of Xcode installed simultaneously, if you:

  • Download Xcode manually instead of installing it through the App Store
  • Rename Xcode.app to something else once it's extracted from the downloaded xip file (say Xcode_14.2.app)
  • Move it to your directory of choice (/Applications) for instance.
  • Caveat: don't move/rename Xcode.app after you've opened it once, I've seen it getting confused in that case, and things fail in horribleinteresting ways.

Example layout for my machine:

$ ls -lad /Applications/Xcode*
lrwxr-xr-x  1 rolf  admin  30 Jan  9 12:26 /Applications/Xcode.app -> /Applications/Xcode_14.2.0.app
drwxr-xr-x  3 rolf  staff  96 Mar  3  2022 /Applications/Xcode_13.3.0.app
drwxr-xr-x  3 rolf  staff  96 Aug 27 23:42 /Applications/Xcode_14.0.0.app
drwxr-xr-x  3 rolf  staff  96 Oct 22 15:44 /Applications/Xcode_14.1.0.app
drwxr-xr-x  3 rolf  staff  96 Nov 17 04:12 /Applications/Xcode_14.2.0.app

This is highly recommended if you want to try out a new Xcode version, but you're unsure if it works, because you can very easily switch back and forth between them by doing both of these:

  • Executing sudo xcode-select -s /Applications/Xcode_<version>.app
  • Select the Xcode version in VS's preferences.

[1] if you have enough hard disk space...

@beeradmoore
Copy link

VS4Mac just got its v17.4.4 update and it didn't come with 16.2. I really hope I am not installing all Xamarin.iOS updates manually going forwards.

@andrewtechhelp
Copy link
Author

VS4Mac just got its v17.4.4 update and it didn't come with 16.2. I really hope I am not installing all Xamarin.iOS updates manually going forwards.

So they've added the Stable version of Xcode 14.2 support to the most recent Visual Studio 17.5 Previews for Windows and Mac. They release new minor releases of Visual Studio every 3 months. The 17.4 release came out in November in early November which would put 3 months in early February. So I reckon we'll see VS 17.5 in the stable channel in the next fortnight which'll include the Xcode 14.2 support.

@ghost ghost locked as resolved and limited conversation to collaborators Mar 3, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
question The issue is a question
Projects
None yet
Development

No branches or pull requests

10 participants