Swift 5.2 is now available in a beta version with improvements including smaller code size and more efficient memory use, alongside better error diagnostics.
Alongside the improvements to size and memory use, Swift 5.2 adds a new diagnostic architecture designed to improve the precision of error messages issued by Xcode. In earlier releases of Swift, the type checker used to guess the exact location of an error, and when it got it wrong this resulted in unclear error messages. The new diagnostic infrastructure works differently.
Instead of guessing where an error occurs, the type checker attempts to fix problems at the point where they are actually encountered, while remembering the fixes it has applied. The developers say this not only allows the type checker to pinpoint errors in more kinds of programs, it also allows it to surface more failures where previously it would simply stop after reporting the first error.
Swift 5.2 also adds a couple of minor language improvements, starting with the ability to call some types as though they were functions, making Swift’s support for functional programming stronger. Swift developers were already able to pass the instance methods of any types as functions, but the new support means types can be called as though they were functions.
The second language improvement is the ability to pass key paths as functions. This could be used instead of having to use a closure to extract data from a property. Instead of this, you can now pass that property’s key path directly.