Swift concurrency back deployment

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.

Doug

95 Likes