Swift concurrency back deployment

So @Douglas_Gregor 's PR to allow the concurrency library for back deployment was merged :heart: but it's not clear to me how this will actually be used.

This looks to me like a build option that has to be specified when building Swift, and not something that could be used by a developer using Swift.

Is there any news on whether concurrency will in fact be back deployed to older OSes?

NOTE: I would like to request that this thread just discuss the technical details involved, and not descend into an unproductive discussion about what Apple should or should not do, or speculation about their motives :pray:


It's referred to as a "build-script option", which is new to me.


The PR you linked is one of dozens of changes needed to make this work, which have been landing over the last few weeks and span LLVM, Clang, and Swift.

The specific PR enabled the build of back-deployment versions of the Swift concurrency library. These are different versions of the shared libraries (libswift_Concurrency.dylib) that would have to be embedded in apps for those apps to run on older OS's, much like the embedded shared libraries one gets for the Swift standard library and overlays if you build an app with a deployment target that predates Swift being in the OS (e.g., iOS 11). But these are harder, because they need to work with older Swift runtimes and standard libraries.

Subsequent PRs have changed the way the compiler generates code for back-deployed binaries (because we currently require a Swift 5.5 runtime), fixed up the back-deployed versions of the shared libraries to work on older OSs, and added compatibility code to monkey-patch older Swift runtimes. Some things run (as of today), but others still crash.

You're certainly welcome to follow along on GitHub as we work through the issues, and ask questions if something you see there looks technically interesting, but we're not ready to commit to an answer to this:

Is there any news on whether concurrency will in fact be back deployed to older OSes?

because, as we said before, it's technically challenging and we're not 100% sure it'll work out.



In any case, thanks for the heads-up and your obviously continued work on that issue!

1 Like

Thanks for the detailed reply Doug :+1:

Is there any larger thread we can follow to track the progress?

There’s no thread per se. Work continues in the main GitHub repository, with a bunch of stuff having been recently merged. There are still known crashes at runtime, although most of the regression tests are successfully running now.

Terms of Service

Privacy Policy

Cookie Policy