|Swift Adds More Generics Support|
|Written by Kay Ewbank|
|Wednesday, 04 April 2018|
Swift 4.1 is now officially released. It contains updates to the core language, including more support for generics and new build options, as well as minor enhancements to the Swift Package Manager and Foundation.
Swift 4.1 adds more generics features to the language, furthering the goals set out in the Swift Generics Manifesto. This is a document that lays out the eventual goal for generics in Swift. The main thrust of the manifesto is that
"generics are used pervasively in a number of Swift libraries, especially the standard library. However, there are a number of generics features the standard library requires to fully realize its vision"
A number of generics-related proposals have been implemented in this release, starting with conditional conformances. These express the notion that a generic type will conform to a particular protocol only when its type arguments meet certain requirements.
The second improvement in this area is the addition of support for recursive constraints on associated types. This lifts restrictions on associated types in protocols. Instead, their constraints will be allowed to reference any protocol, including protocols that depend on the enclosing one (recursive constraints).
A third way that generics-related conformance has been improved is with the synthesis of equatable and hashable conformance. Developers have to write large amounts of boilerplate code to support equatability and hashability of complex types, and this proposal offers a way for the compiler to automatically synthesize conformance to Equatable and Hashable to reduce this boilerplate, in a subset of scenarios where generating the correct implementation is known to be possible.
Other generics improvements include making standard library index types hashable, and the introduction of Sequence.compactMap(_:) to replace the controversial version of a
Away from conformance, the new version provides more ways to configure your builds, including a new code size optimization and easier ways to specify the target environment and platform support. There's also a number of under-the-hood changes that are part of the effort to stabilize the ABI in Swift 5.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Wednesday, 04 April 2018 )|