Apple’s Swift team has made public their release plan for Swift 3.1, expected to be available in the Spring of 2017 and source-compatible with Swift 3.0, writes Apple’s language and runtimes manager Ted Kremenek.
According to Kremenek, Swift 3.1 will be source compatible with Swift 3.0:
It is a strong goal that the vast majority of sources that built with the Swift 3.0 compiler continue to build with the Swift 3.1 compiler. The exception will be bug fixes to the compiler that cause it to reject code that should never have been accepted in the first place. These cases should be relatively rare in practice.
Specifically, Swift 3.1 will not have a compatibility flag as Swift 4 is expected to have, so it should work “out-of-the-box”. Furthermore, the concept of source compatibility for Swift 3.1 explicitly includes the Apple SDKs for macOS, iOS, etc., meaning that they can only include source compatible changes. All changes that break source compatibility will be carefully evaluated to weigh the benefits they bring against the source compatibility goal, explains Apple engineer Ewa Matejska. In particular, bug fixes in the compiler that might break some “fringe case” will be foreseeably accepted, while changes to existing APIs should provide significant benefits.
Swift 3.1 will also mark a change in the way snapshots are produced by attempting to make new snapshots available daily. This should provide a finer granularity for the Swift community to test new features and ensure more release regularity in comparison with previous releases.
Swift 3.1 will be branched on January 16, 2017 from master
. From that moment on, the master
branch will be devoted to Swift 4 development and there is no guarantee that any changes to master
could be part of the final Swift 3.1, although some notable change might still land in it based on the judgement of the release manager.
The scope of version 3.1 of Swift is deliberately limited to bringing a few enhancements to the core language and to the Swift Package Manager, as well as to improving the language support for Linux.