Neuer Standard Swift (iOS/macOS): Was Entwickler erwartet
Das Apple-Team hat offiziell die Veröffentlichung von Swift 6 angekündigt – ein weiterer bedeutender Schritt in der Evolution der Programmiersprache für die Ökosysteme iOS, macOS, watchOS und tvOS. Die neue Version bringt grundlegende Änderungen bei der Speicherverwaltung, Nebenläufigkeit und Kompatibilität mit C++. Wir schauen uns an, was sich für Entwickler ändert und wie man sich auf die Migration vorbereitet.
Die wichtigsten Neuerungen in Swift 6
- Strenger Speichersicherheitsmodus (Strict Concurrency Checking) – Swift 6 führt eine obligatorische Prüfung auf Datenrennen zur Kompilierzeit ein. Alle nicht-Sendable Typen, die zwischen Tasks übergeben werden, lösen einen Build-Fehler aus. Dies erhöht die Stabilität von Multithread-Code erheblich.
- Erweiterte Unterstützung von Sendable – Das Protokoll Sendable wird nun automatisch auf die meisten Standardtypen (Int, String, Array, Dictionary) angewendet. Entwickler müssen ihre benutzerdefinierten Klassen explizit als @unchecked Sendable markieren, wenn es sich nicht um Value Types handelt.
- Verbesserter C++ Interop – Swift 6 ermöglicht den direkten Aufruf von C++-Funktionen und -Klassen ohne Wrapper in Objective-C. Dies ist besonders wichtig für Projekte, die Legacy-Code in C++ verwenden (z. B. Spiele-Engines oder Computer-Vision-Bibliotheken).
- Neue Möglichkeiten für iOS/macOS – Neue APIs für die Arbeit mit Core Data, SwiftUI und Combine wurden hinzugefügt. Die Compiler-Leistung wurde verbessert: Der Build großer Projekte ist um 15-20 % schneller.
Was bedeutet das für Entwickler?
Der Umstieg auf Swift 6 erfordert ein Refactoring des Codes, insbesondere wenn Sie häufig globale Variablen, Singletons oder Closures mit Erfassung veränderlicher Daten verwenden. Hier sind die wichtigsten Schritte:
- Ersetzen Sie alle Klassen, die zwischen Threads übergeben werden, durch Strukturen oder fügen Sie den Marker
@unchecked Sendablehinzu. - Verwenden Sie
actorzur Isolierung veränderlicher Zustände. Swift 6 machtactorfür den sicheren Zugriff auf gemeinsam genutzte Ressourcen obligatorisch. - Überprüfen Sie alle Closures, die an asynchrone Funktionen übergeben werden – sie müssen explizit als
@Sendablemarkiert sein. - Für Projekte mit C++-Code: Aktualisieren Sie die Bindings – Swift 6 konvertiert
std::stringautomatisch inStringundstd::vectorinArray.
Wann aktualisieren?
Swift 6 ist bereits in Xcode 16 verfügbar. Es wird empfohlen, mit dem Testen in Nebenästen zu beginnen, aber die Migration von Produktionsprojekten nicht zu erzwingen, bis Xcode 16.1 erscheint (voraussichtlich Ende 2024). Für Bildungszwecke und neue Projekte verwenden Sie Swift 6 sofort, um sich an die neuen Regeln zu gewöhnen.
Tipp von PythonLib
Wenn Sie gerade erst anfangen, Swift zu lernen, achten Sie auf das Modul Concurrency – es ist für die Apple-Zertifizierung obligatorisch geworden. Auf unserer Website haben wir eine Reihe von Lektionen zu Swift 6 vorbereitet, einschließlich der Migration von Swift 5.9 und der Analyse von Fehlern im Zusammenhang mit Sendable. Bleiben Sie dran für Updates!