Swift 4.1 ist ein Minor-Update und als solches kompatibel zu Swift 4.0. Nichtsdestotrotz haben es einige nützliche Erweiterungen in das Release geschafft.
Highlights in Swift 4.1
Sechs Neuerungen in Swift 4.1 betreffen den Ausbau der Generics. So wurden etwa sogenannte Conditional Conformances eingeführt. Dadurch kann spezifiziert werden, dass ein generischer Type einem bestimmten Protokoll nur dann entspricht, wenn dessen Typen-Argumente gewisse Bedingungen erfüllen.
Das folgende Beispiel demonstriert die Funktionsweise:
extension Array: Equatable where Element: Equatable { static func ==(lhs: Array<Element>, rhs: Array<Element>) -> Bool { ... } }
Die Collection Array
implementiert das Protokoll Equatable
nur dann, wenn ihre Elemente selbst Equatable
sind.
Swift 4.1 führt außerdem erweiterte Möglichkeiten für Builds ein. So unterstützt der Compiler nun einen neuen Optimierungsmodus. Der Modus -Osize
kompiliert nicht mehr in Hinblick auf eine maximale Performance, sondern mit dem Ziel, die Größe des Codes minimal zu halten.
In der Kommandozeile kann der neue Modus einfach anstelle des üblichen -O
verwendet werden. In Xcode 9.3 existiert ein neues Build Setting für die Swift Compiler Code Generation:

Neue Build-Option in Xcode, Quelle: https://swift.org/blog/osize/
Der Swift Package Manager ist nun in der Lage, Abhängigkeiten in Package-Graphen aufzulösen, die unterschiedliche URL-Schemata wie ssh
oder http
verwenden. Zudem soll die Performance für Package-Graphen mit geteilten Abhängigkeiten deutlich gestiegen sein.
Weitere Verbesserungen in Swift 4.1 betreffen die Stabilisierung des ABI, Erweiterungen des Foundation Frameworks sowie ein Revamp des Playground QuickLook APIs.
Alle Neuerungen in Swift 4.1 sind in den Release Notes und in der aktualisierten Dokumentation nachzulesen. Bei einer Migration ist der Code-Migrator in Xcode 9.3 behilflich, mit dem sich viele Quellcode-Anpassungen automatisieren lassen. Zusätzlich steht ein ausführlicher Migration guide zur Verfügung.