Swift 5: Was bedeutet ABI Stability?

Der 25. März 2019 war für Apple Developer ein immens spannender Tag. Nicht nur hat Apple sein erstes Special Event für dieses Jahr abgehalten, es war auch der offizielle Startschuss für Swift 5. Zusammen mit Xcode 10.2 können wir heute alle Neuerungen und Änderungen von Swift 5 in der finalen Version nutzen.

In dieser Serie möchte ich euch nach und nach einige der meiner Meinung nach spannendsten und interessantesten Neuerungen von Swift 5 vorstellen und erklären, was es damit auf sich hat. Los geht es mit der sogenannten ABI Stability, die das größte und wichtigste Ziel bei der Entwicklung von Swift 5 darstellte. Doch was bedeutet ABI Stability eigentlich? Und welche Auswirkungen hat das für uns Entwickler?

ABI: Application Binary Interface

ABI steht für Application Binary Interface und definiert eine Schnittstelle zwischen zwei Programmen. Im Falle von Swift 5 bezieht sich diese Schnittstelle einerseits auf die von uns entwickelten Apps, andererseits auf die Betriebssysteme von Apple (macOS, iOS, watchOS und tvOS). Mit Swift 5 wurde diese ABI für Apples Betriebssysteme als stable deklariert. Doch was heißt das?

Es geht hierbei um die Kommunikation von mit Swift 5 entwickelten Apps und dem Betriebssystem, auf dem diese Anwendungen laufen. Das Erreichen der ABI Stability führt so zunächst einmal dazu, dass sowohl die Swift Runtime als auch die Swift Standard Library Teil der Betriebssysteme von Apple geworden sind. Das hat für uns App-Entwickler gleich einen großen Vorteil, den wir out of the box nutzen können: Unsere Apps werden kleiner. Sie müssen nicht länger die Swift Standard Library in der der App zugrundeliegenden Swift-Version enthalten und mit ausliefern. Stattdessen enthalten macOS, iOS und Co. alle entsprechenden Ressourcen, um in Swift programmierte Apps auf diesen Systemen ausführen zu können.

Der zweite und noch weitaus entscheidendere Vorteil der ABI Stability ist aber der, dass Apps, die heute in Swift 5 programmiert werden, ohne Probleme und weitere Anpassungen auch unter kommenden Swift-Versionen ausgeführt werden können. Das ist in gewisser Weise das Versprechen, dass uns Entwicklern durch die ABI Stability gegeben wird.

Wichtig: Wie geschrieben gilt die ABI Stability aktuell nur für die Plattformen von Apple. Für andere Betriebssysteme wie beispielsweise Linux oder Windows steht sie (noch) nicht zur Verfügung.

Swift und App-Target wachsen stärker zusammen

Viele von uns haben lange (wirklich sehr lange) darauf gewartet, dass eine solche ABI Stability in Swift Wirklichkeit wird. Sie sorgt dafür, dass wir nicht länger dazu gezwungen sind, möglichst schnell auf neue Swift-Versionen umzusteigen und damit nötige Anpassungen an unserem Code vornehmen zu müssen. Dass unsere Apps darüber hinaus auch weniger Speicherplatz in Anspruch nehmen, ist ein weiterer nicht von der Hand zu weisender Vorteil.

Ein Detail gibt es jedoch zu beachten: Da die Swift Runtime und die Swift Standard Library nun fester Bestandteil der Betriebssysteme von Apple sind, müssen wir gegebenenfalls das Target einer App hoch setzen, wenn wir die neuesten Sprach-Features von Swift nutzen möchten.

Hierzu ein erläuterndes (und rein hypothetisches) Beispiel: Irgendwann in naher (oder ferner) Zukunft erscheint (sehr wahrscheinlich) Swift 6. Die zugehörige Swift Runtime und Swift Standard Library wird aber nur von den neuesten Betriebssystemversionen von Apple unterstützt (zum Beispiel iOS 13, und natürlich rein hypothethisch). Möchte man in diesem Fall die eigene App aber auf Swift 6 umstellen und die neuesten Sprach-Features nutzen, zwingt uns das gleichermaßen dazu, als Mindestversion der App entsprechend iOS 13 festzulegen.

Meiner persönlichen Meinung nach ist das nicht allzu dramatisch, gerade da auf den Apple-Plattformen eine enorm hohe Update-Bereitschaft besteht und Geräte ja in der Regel über viele Jahre mit Updates versorgt werden. Die Vorteile, die die ABI Stability mit sich bringt, machen diesen Umstand in meinen Augen mehr als wett.

Fazit

Die ABI Stability ist ein großer Schritt für Swift 5 als Programmiersprache sowie für uns App-Entwickler. Swift ist damit da, wo es in einer perfekten Welt bereits mit Version 1 hätte sein sollen.

Daher gilt: Spätestens jetzt sollte man sich als Apple Developer definitiv mit der Programmierung mit Swift auseinandersetzen (zwar sage ich das in der Regel bei jedem neuen Major Release von Swift, doch es war noch nie so wahr wie heute 🙂 ).

Euer Thomas


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert