The Apple-supported open-source Swift programming language is set to stabilize in late 2018, with the release of version 5.
The fifth iteration of Swift, outlined on Tuesday in a roadmap published by Ted Kremenek, senior manager of languages and runtimes at Apple, aims to deliver application binary interface (ABI) stability for the Swift Standard Library.
Kremenek took over stewardship of Swift in January from Chris Lattner, who led the development of the language until he left for a job at Tesla (which lasted only six months).
Similar to an application programming interface (API), which defines how software programs can interact, an ABI defines how software programs can communicate with compiled binaries.
ABI stability means programs written in Swift will not have to be recompiled to accommodate language changes. It's a milestone that Kremenek considers to be a priority.
"ABI stability is an important inflection point for the maturity of the language, and it cannot be delayed any longer," he said in a post to the Swift Evolution mailing list.
ABI stability was initially planned for Swift 3, but has been pushed back. Once implemented, it will allow operating system vendors to embed a Swift Standard Library that will be forward-compatible with Swift 5 and beyond.
Swift's developers are also working toward stabilizing the module file format, which describes the public interfaces of a framework for the compiler. But they don't expect that to be completed for Swift 5.
Kremenek also said that full support for a new concurrency model will have to wait. "That is simply too large an effort to do alongside ABI stability," he said. "However, it is important that we start making progress on discussing the directions for concurrency and laying some of the groundwork."
Features that failed to make the deadline for inclusion in Swift 4 – due for public release this fall – are now planned for Swift 5, including standard library enhancements conditional conformances and recursive protocol requirements.
In addition, Swift's developers hope to deliver better string processing capabilities, better integration with Apple's Cocoa SDK, and an opt-in memory ownership model inspired by Cyclone and Rust.
Kremenek, however, has ruffled some feathers by raising the bar to contribute to Swift. Those who manage to create a language change proposal that elicits interest from the core Swift development team, are now required to implement the idea in code before the proposal gets formally reviewed.
On the Swift Evolution mailing list, Adrian Zubarev said he expected that requirement to make it difficult for people to contribute to Swift, because implementing new language features requires a high level of technical ability.
However, Erica Sadun, a well-known author of programming books, argues that the implementation requirement ensures that proposals have group support and technical merit, even if it might favor contributors affiliated with Apple.
"Finding those coders and convincing them this will be a great change means that proposals will naturally skew towards Apple-driven rather than wider community-driven," she said. "However, it does not exclude the latter, especially for passionate proposals that can find the coders to champion them." ®