Apples Programmiersprache: Swift 5.0 besitzt nun ein stabiles ABI
Ein stabiles Application Binary Interface und Memory Safety sind die vermutlich wichtigsten Neuerungen vom nun veröffentlichten Swift 5.0.
![Programmiersprache: Apples Swift besitzt nun eine stabile ABI](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/6/2/7/4/0/8/swift-12db6767f547d4f2.jpeg)
- Alexander Neumann
Apple hat die Version 5.0 der Programmiersprache Swift veröffentlicht. Bei der neuen Version der Sprache haben sich die Entwickler primär um den Bau eines neuen stabilen Application Binary Interface (ABI) gekümmert. Zugunsten einer betriebssystemübergreifenden Kompatibilität von Swift Runtime, Libraries und Applikationen bricht die Sprache dadurch allerdings mit der Sourcekompatibilität zu Swift 4.2 und älteren Versionen, wobei das auch bei früheren Swift-Releases schon der Fall war.
Stabile ABI ein Meilenstein für Programmiersprachen
Ähnlich wie bei APIs, die definieren, wie Softwareprogramme interagieren, bestimmt eine ABI, wie Programme mit kompilierten Binärdateien kommunizieren. ABI-Stabilität bedeutet, dass Programme, die in Swift geschrieben sind, nicht neu kompiliert werden müssen, um Sprachänderungen unterzubringen.
Die Swift 5 ABI wurde nun für den Einsatz auf Apple Betriebssystemen für stabil erklärt. Infolgedessen sind die Swift-Bibliotheken jetzt in alle zukünftigen Versionen von macOS, iOS, tvOS und watchOS integriert. Die Anwendungen dafür werden infolgedessen einfacher zu erstellen und kleiner sein, da sie die Bibliotheken nicht mehr enthalten müssen. Darüber hinaus lassen sich ab Swift 5.0 auch Frameworks nutzen, die nicht an den Compiler gebunden sind, mit dem sie erstellt wurden.
Weitere Themen
Ein weiterer Schwerpunkt der neuen Programmiersprachenversion ist das Thema
Memory Safety. Swift stellt dazu exklusiven Zugriff auf eine Variable sicher. So lange diese als inout-Argument oder mit dem Schlüsselwort self innerhalb einer mutating-Methode modifiziert wird, darf nicht über einen anderen Namen auf sie zugegriffen werden. Damit sich darüber hinaus auch das bei Zugriffsverletzungen gelegentlich auftretende unvorhersehbare Verhalten des Compilers unterbinden lässt, sind die Maßnahmen zum Exclusivity Enforcement ab Swift 5 verbindlich.
Eine dynamische Diagnose zur Laufzeit soll auch typische Exklusivitätsverletzungen abfangen, die in Zusammenhang mit Eigenschaften von Klassentypen, statischen Eigenschaften oder globalen Variablen stehen und die sich nicht durch statische Diagnose beim Kompilieren ausräumen lassen. Swift 5 unterstützt zudem dynamisch aufrufbare Typen, die zur Verbesserung der Interoperabilität mit Sprachen wie Python, JavaScript und Ruby beitragen sollen.
Bei den Standardbibliotheken gab es vorrangig diese Änderungen: String ist nun mit UTF-8 kodiert, was in vielen Fällen zu schnellerem Code führen können soll. Dann ist von einer überarbeiteten Unterstützung für Raw-Text in String-Literalen die Rede, des Weiteren gibt es nun Result- und SIMD-Vektorypen in der Standardbibliothek. Und schließlich weist die Blog-Ankündigung auf Verbesserungen bei der String-Interpolation hin. Weitere Änderungen im Bibliotheksumfeld lassen sich in der Ankündigung begutachten.
Die Programmiersprache Swift wird natürlich auch einen großen Rahmen auf der neuen Entwicklerkonferenz heise MacDev einnehmen, die von 3. bis 5. Dezember 2019 in Karlsruhe stattfindet. Derzeit kann man sich mit Vorträgen und Workshops für die Konferenz bewerben, aus denen die Ausrichter – Mac & i, heise Developer und dpunkt.verlag – dann das Programm zusammenstellen.
Paketmanager und Migration
Der Swift Package Manager enthält eine Reihe neuer Funktionen, darunter die Spiegelung von Abhängigkeiten, zielspezifische Build-Einstellungen, benutzerdefinierte Deployment-Ziele und die Möglichkeit, Code-Coverage-Daten zu generieren. Zusätzlich bietet der Befehl swift run nun die Möglichkeit, Bibliotheken in eine REPL (read–eval–print loop) zu importieren, ohne eine ausführbare Datei erstellen zu müssen.
Um den Umstieg auf Swift 5 von früheren Versionen von Swift zu erleichtern, enthält Apples Entwicklungsumgebung Xcode 10.2, in das Swift 5 integriert ist, einen Code-Migrator, der viele der erforderlichen Quellcode-Änderungen automatisch verarbeiten kann. Apple hat zudem einen Migrationsleitfaden erarbeitet. Das Thema Module Stability, ursprünglich mal für Swift 5.0 vorgesehen, ist dann wohl ein zentrales von Swift 5.1.
Swift – fünf Jahre später
Die Programmiersprache Swift ist seit Dezember 2015 als Open-Source-Software verfügbar. Im Sommer zuvor hatte Apple angekündigt, die hauseigene Programmiersprache quelloffen bereitstellen zu wollen. Apple hatte Swift als Alternative zu Objective-C 2014 auf seiner Entwicklerkonferenz WWDC eingeführt. Obwohl sie kein offizieller Nachfolger ist, haben viele iOS- und OS-X-Entwickler die neue Sprache gerne angenommen. Das gilt auch für den Konzern IBM, der ein Cloud-Entwicklungsangebot auf Basis von Swift im Angebot führt. Die Version 2.2 war das erste Release nach der Öffnung der Quellen und Bekanntgabe des Linux-Supports, das im September 2016 erschienene Swift 3.0 war die erste quelloffene Hauptversion der Programmiersprache. Swift 4.0 erschien im Juli 2017.
Siehe hierzu auf heise Developer auch:
- Apple legt Betaversionen von Swift 5.0 und Xcode 10.2 vor
- Programmiersprache: Roadmap für Swift 5 vorgestellt
- Moderne Programmierung mit Swift, Teil 1
- Moderne Programmierung mit Swift, Teil 2
- Moderne Programmierung mit Swift, Teil 3
[Update; 26.03., 16:25 Uhr: In einer früheren Version war davon die Rede, dass Swift sich nicht binärkompatibel zu früheren Versionen verhält. Das bezog sich aber tatsächlich auf den Sourcecode von früheren Versionen.] (ane)