Apple has announced it is on track to release Swift 3.1 in the spring of 2017, corresponding to some point between March and June.
Swift 3.1 is intended to be source compatible with Swift 3.0 and will contain a few enhancements to the core programming language.
Improvements will also be made to the Swift Package Manager, Swift on Linux, compiler, and Standard Library.
Swift 3.1 development should conclude around January 16, 2017 for major changes, at which point Apple's focus will turn to the development of Swift 4.
Swift is Apple's open source programming language for macOS, iOS, watchOS, tvOS, and Linux. Swift 3.0 was released in September with major improvements and refinements to the core language and Standard Library, major additions to the Linux port of Swift, and the first official release of the Swift Package Manager.
Top Rated Comments
There have been some mis-steps. Some of them are:
* The ABI is not defined yet so you can't make a pure Swift shared object library. This was one of the goals for Swift 3 but they blew it by spending too much time implementing WIBNI features suggested on Swift Evolution.
* An obsession with catching every error at compile time. This leads to nannying constructs in the language that are sometimes more trouble than they are worth. The prime example is access modifiers for object properties and methods. They are a complete mess in Swift 3.
* Old World snobbery leads to deprecating or perhaps just frowning on features that have been immensely useful in the past. The protocol oriented programming fascism - I mean fashion - is particularly annoying because it leads to people recommending highly convoluted opaque POP code to implement ideas that were quite naturally expressible with classes purely on the basis that Dave Abrahams gave a really cool talk at WWDC 2015 using one example cherry picked for the purpose. Also removal of ++ and -- on the grounds that "some people don't understand them" was pretty bad.
* The generics system is an overcomplicated clusterfsck.
* Frequent code breaking changes. At some point developers are going to get really pissed off at having to refactor all their code every time a new release of Swift comes out. This is in complete contrast to Objective-C where there's a good chance that a 64 bit program written for OS X 10.5 will still compile and run today. It doesn't help that each release of Xcode only targets one version of Swift (or exceptionally two, if you are lucky).
Fortunately, the first and last bullet points will go away at some point soon, in fact the last point is probably almost irrelevant already. The fourth point is being addressed slowly, but I think there will always be a problem with points 2 and 3. There's no shortage of people coming on Swift Evolution and saying "I keep making mistake x because of feature y, therefore feature y should be removed".
Anyway, despite all of the above, Swift is still a really nice language in which to write code. and the open sauce means it should get a bit more traction outside of the Apple ecosphere.
Another point is that Swift was designed to help write safe, stable software. That's why it's picky about types, nils, and so on. It may be trickier to learn, at first, than Java, but it's easier to make something stable, and harder to get into the strange and mysterious crashes and undefined behavior that you can fall into with Java (or Objective-C)... thus making it easier to write actual software (not just code).