MTC Blog

MobileTechCon | 12. - 15. September 2016, Berlin
19
Jul

Swift

Seit Dezember 2015 steht Apples Programmiersprache Swift Open Source zur Verfügung. Aktuell wird an der neuen Major-Version Swift 3.0 gearbeitet, deren Release noch für dieses Jahr geplant ist. Die größte Änderung an der kommenden Version: ihre fehlende Abwärtskompatibilität mit Swift 2.2. Wir blicken auf Geschichte, Eigenschaften und Zukunft der Sprache.

Apples hauseigene Programmiersprache Swift wurde 2014 ursprünglich als Alternative zu Objective-C eingeführt. Laut den Analysten von RedMonk war Swift bereits nach einem halben Jahr, im Sommer 2015, die am schnellsten wachsende Programmiersprache: „Swift is growing faster than anything else we track.“  Swift war gelungen, was noch keiner anderen Sprache in der Geschichte der RedMonk „Programming Language Rankings“ gelungen war: Schon innerhalb des ersten Jahres ihres Bestehens konnte die Programmiersprache die Top 20 knacken.

Offiziell soll Swift zwar Objective-C nicht ersetzen, wird von OS-X- und iOS-Entwicklern aber gut angenommen – und ist langsam, aber sicher dabei, Objective-C zu überflügeln. Ein Grund dafür ist die Kombination von Leistung und Effizienz kompilierter Sprachen mit der Einfachheit und Interaktivität gängiger Skriptsprachen.

Seit der Veröffentlichung Ende 2014 arbeitet Apples Entwickler-Team an der Weiterentwicklung der sowohl in der OS-X- als auch der der iOS-Entwicklung zum Einsatz kommenden Programmiersprache.

 

Swift wird Open Source

Im Sommer 2015 folgte dann der Paukenschlag, denn Apple hatte verkündet, Swift künftig auch Open Source zur Verfügung zu stellen. Ein Versprechen, dass dann im Dezember 2015 wahr gemacht wurde:  Der Quellcode von Apples Programmiersprache liegt seitdem unter der Apache-2.0-Lizenz offen. Entwickler haben damit die Möglichkeit, Swift frei zu verwenden und zu modifizieren – auch für kommerzielle Projekte. Der Code steht auf GitHub zur Verfügung und unterstützt neben allen bekannten Apple-Plattformen, wie OS X, iOS, watchOS und tvOS, auch Linux und Ubuntu. Zu den verfügbaren Komponenten gehören der Swift Compiler, drei Core Libraries, der Package Manager, LLDB Debugger und REPL sowie Build Tools. Gleichzeitig hat Apple die Webseite Swift.org gestartet, die ausführliche Informationen über die Entwicklung mit Swift als Open-Source-Sprache bereitstellt. Zusätzlich finden sich dort technische Dokumentationen und Tutorials, Links zum Herunterladen des Swift-Quellcodes und Community-Richtlinien.

We are excited by this new chapter in the story of Swift. After Apple unveiled the Swift programming language, it quickly became one of the fastest growing languages in history. Swift makes it easy to write software that is incredibly fast and safe by design. Now that Swift is open source, you can help make the best general purpose programming language available everywhere.

Wie man unter anderem ein API mithilfe von Swift baut und wie man dieses auf dem Server zum Laufen bringt, erklärt Tom Harvey (Ve Interactive) in seiner Session „Swift on the Server“ auf der MobileTech Conference im September.

Apple erhofft sich seinerseits durch die Offenlegung, dass die Community zu neuen Funktionen und zur Optimierung von Swift beitragen wird – und natürlich, dass Swift auch auf anderen Plattformen Einzug hält.

 

Swift 2.2

Im März 2016 erschien Swift 2.2 mit einer Reihe neuer Features und Verbesserungen, darüber hinaus wurden Änderungen an der Standardbibliothek der Sprache vorgenommen und einzelne Sprachmerkmale als deprecated eingestuft. Damit wurde bereits der Weg zur neuen Major-Version geebnet. Die Änderungen in Swift 2.2 reichen von einfachen Bugfixes bis hin zu Änderungen an der Standardbibliothek der Sprache.

So stehenden Swift-Nutzern erstmals Operatoren für Tupel-Vergleiche zur Verfügung. Mit der Ausnahme von inout, var und let können zudem nun alle Schlüsselwörter als Parametername verwendet werden; darüber hinaus hält in Swift 2.2 neben neuen Constraints für AnySequence.init mit #if swift auch eine neue Build-Konfigurationsoption Einzug in die Sprache.

Des Weiteren wurden mit Swift 2.2 mehrere Sprachmerkmale als deprecated eingestuft und somit aufs sprichwörtliche Abstellgleis gestellt. Dieses Schicksal hat u. a. die Operatoren ++ und –, die bereits mit Swift 3.0 endgültig entfernt werden, ereilt. Auch für die aus C bekannten For-Schleifen hat offenbar schon bald das letzte Stündlein geschlagen, gleiches gilt für die var-Parameter, die aufgrund ihrer geringen Nützlichkeit und der Verwechslungsgefahr mit inout zu deprecated-Kandidaten wurden.

 

Swift 2.3

Swift in Version 2.3 wurde am 12. Juni 2016 veröffentlicht (https://swift.org/blog/swift-2-3/) und ist lediglich ein Minor Update von Swift 2.2. Der Hauptunterschied der Versionen liegt darin, dass Swift 2.3 dafür vorgesehen ist, mit Apples macOS 10.12, iOS 10, watchOS 3 und den tvOS 10 SDKs zusammengeführt zu werden. Darüber hinaus werden mit Version 2.3 die entsprechende LLVM- und Clang-Versionen aktualisiert, damit sie zu denen im Swift 3 Compiler passen.

 

Swift 3.0 Release-Prozess

Swift 3.0 ist die kommende Major-Version der Programmiersprache. Sie soll, so erklärt Ted Kremenek in einem Blogpost, fundamentale Änderungen der Sprache selbst sowie der Swift-Standard-Library enthalten – und dementsprechend nicht abwärtskompatibel zur aktuellen Swift-Version 2.2 bzw. 2.3 sein.

Außerdem ist Swift 3.0 das erste Release, das mit dem neuen Swift Package Manager daherkommt. Zwar befindet sich der noch in einer frühen Entwicklungsphase, unterstützt aber bereits die Entwicklung und Distribution von Cross-Plattform-Swift-Packages. Ebenso umfasst die neue Version auch die Swift Core Libraries.

Für den Release-Prozess sind eine Reihe Developer Previews vorgesehen, die „qualified and converged builds of Swift 3“ zur Verfügung stellen sollen. User können so mithilfe von möglichst stabilen Swift-Binaries, die rund alle vier bis sechs Wochen erscheinen sollen, die neue Version testen und mögliche Bugs melden.

Alle Sprach- und API-Änderungen für Swift 3.0 durchlaufen den Swift-Evolution-Prozess; über Source-breaking-Änderungen an der Sprache soll zudem auf einer Fall-zu-Fall-Basis entschieden werden. Aktuell steht der erste Developer-Preview-Branch swift-3.0-preview-1-branch zur Verfügung; sobald der letzte Preview-Branch erstellt wird, soll Swift 3.0 als „GM“ erklärt werden.

Mehr Informationen zum Release-Prozess und den einzelnen Entwicklungs-Branches für Swift 3.0 fasst der zugehörige Blogpost zusammen. Eine Übersicht über die bereits implementierten Änderungen steht auf GitHub zur Verfügung.

 

ABI-Stabilität wird erst mal verschoben

ABI-Stabilität sollte eines der größten Ziele für die neue Major-Version von Swift sein. Mitte Mai 2016 gab Swift-Erfinder Chris Lattner in der Swift Evolution Mailing List bekannt, dass dieses Feature erst mal verschoben wird. Grund dafür ist laut Lattner, dass einige Features, die für das Erreichen der ABI-Stabilität nötig sind, nicht rechtzeitig vervollständigt werden können:

it is also clear at this point that some of the loftier goals that we started out with aren’t going to fit into the release – including some of the most important generics features needed in order to lock down the ABI of the standard library.

Die ABI-Stabilität sollte, so erklärt Sergio De Simone, eigentlich dazu dienen, dass mit zukünftigen Versionen von Swift kompilierte Applikationen und Libraries mit Binärcode interagieren können, der mit Swift 3.0 kompiliert wurde. In anderen Worten: die ABI-Stabilität garantiert nicht nur ein gewisses Maß an Binär-Kompatibilität, sondern ermöglicht auch, dass die Swift-Standard-Library nicht länger mit Binaries ausgespielt werden muss. Außerdem können Third-Parties so leichter Binär-Libraries verteilen.

 

Preview 1 von Swift 3.0 veröffentlicht

Die erste Entwickler-Preview der Version 3.0 von Swift erschien am 13. Juni 2016. Diese vergleichsweise stabile Version von Apples quelloffener Sprache wird wie angekündigt eine „source-breaking“ Veröffentlichung und demnach nicht abwärtskompatibel zu Swift 2.2 bzw. 2.3 sein.

Doch nicht nur deswegen sollte der Migration Guide konsultiert werden: Viele syntaktische Verfeinerungen und eine Menge an Veränderungen – vor allem den Import von Objective-C-APIs betreffend – können ebenfalls eine Herausforderung darstellen. Hilfreich dürfte es außerdem sein, sich einen Überblick über die aktualisierte Dokumentation und die neu implementierten Swift Evolution Proposals zu verschaffen. Eine Übersicht darüber bietet der oben genannte Ankündigungspost im Swift-Blog.

Die Developer Preview 1 steht seit Mitte Juni 2016 als Teil der Xcode 8 Beta 1 sowie für Ubuntu 14.04 bzw. 15.10 zum Download bereit.