Swift 5 is coming. This time, iOS developers will be happy to know, ABI stability will be a major focus, and evolution proposals require implementation before the core Swift team reviews them.
The Swift 5 release will provide ABI stability for the Swift Standard Library. ABI stability enables OS vendors to embed a Swift Standard Library and runtime in the OS that is compatible with applications built with Swift 5 or later. Progress towards achieving ABI stability will be tracked at a high level on the ABI Dashboard.
ABI stability is only one of two pieces needed to support binary frameworks. The second half is module stability (see “The Big Picture” of the ABI Stability Manifesto for more information). While we’d like to support this for Swift 5, it will be a stretch goal, and may not make it in time.
The need to achieve ABI stability in Swift 5 will guide most of the priorities for the release.
As Kremenek notes, ABI stability “focuses mostly on getting a bunch of low-level implementation details of the language finalized,” things like API resilience and a Cyclone/Rust-inspired memory ownership model. The team will also finalize implementation for conditional conformances and recursive protocols.
Elsewhere, Swift 5 will have further tweaks to
Strings. At WWDC, the team surfaced tweaks for Swift 4 that made text processing easier and more readable. The Swift crew will also start work on a true concurrency model so future iterations of Swift don’t have the same headaches and system-breaking tweaks we saw when the language went from version 2.2 to 3.
Though ABI stability is huge, it’s also something we’ve heard before. Leading into Swift 4, ABI stability was in the works, with an ABI dashboard being added to the swift.org website. If you visit that page, you’ll see a lot of work that still has to be done. With Swift 5, ABI stability is a requirement for the release, so expect many (if not all) of those remaining cells to be filled by late 2018, when Swift 5 is slated for release.