What changed to make async/await available on older OSes?

I have read quite a number of posts on this forum that async/await will require macOS Monterey and there's nothing to be done about it. (And a later version of IOS too.)

But the latest Xcode beta seems to say otherwise?

  1. Is this true? Starting with Xcode 13.2 I can use async/await for a macOS app that will deploy to Big Sur?
  2. If it is true, can someone tell me what changed that made the seemingly impossible all of a sudden possible?

Hard work on the part of the various Swift teams, mainly @Douglas_Gregor AFAICT. You can read more about it in the other thread: Swift concurrency back deployment.

Essentially, they built an implementation of the concurrency runtime for older OSes, as well as ways to bundle a compatibility library into binaries that provides the missing pieces.

7 Likes

I’m sure there will be some sort of official announcement thread in due course

FWIW, I don't think back-deployment for concurrency was ever described as "impossible," just technically challenging and not guaranteed. IIRC the very first post on the matter said it was being explored but should not be expected.

6 Likes

I did say “seemingly.” :)

Seriously, one got the impression that it was always possible, but simply that it was not in the cards because there were just a lot of obstacles to overcome. At any rate, thrilled at the news, and very thankful for all the hard work that went into making it a reality.

Apple, like many other companies, avoids making public commitments to doing things that aren't already essentially done. We care a lot about having a good relationship with our developers, and the consequences of misleading you by promising something that doesn't end up happening would be very bad. So yes, we will always strive to be cautious in what we say about things that aren't yet shipping.

37 Likes