Programmiersprache Swift: Team erarbeitet Ownership-Modell und Variadic Generics

Die Language Workgroup hat fünf wichtige Ziele für Swift abgesteckt, zu denen auch Makros, das Zusammenspiel mit C++ und erweiterte Nebenläufigkeit gehören.

Lesezeit: 4 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 10 Beiträge

(Bild: Paweł Kuźniar (unter der GFDL))

Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Das Swift-Team hat im Blog einen eine Ausblick auf die in nächster Zeit geplanten Ergänzungen für die Programmiersprache veröffentlicht. Dabei gibt es sowohl Pläne für die Sprache selbst als auch für die Werkzeuge und das Ökosystem.

Den Beitrag hat John McCall aus der im Juni eingerichteten Language Workgroup verfasst. In den vergangenen Monaten hat das Core Team von Swift vier zusätzliche Arbeitsgruppen ins Leben gerufen. Neben der für die Features der Programmiersprache verantwortliche Language Workgroup sind das die Website Workgroup, die sich um den Inhalt auf swift.org kümmert, die für die Dokumentation und das zugehörige Tooling zuständige Documentation Workgroup sowie die C++ Interoperability Workgroup, die für ein besseres Zusammenspiel zwischen Swift und C++ sorgen soll.

Die Langauge Workgroup konzentriert sich in nächster Zeit vor allem auf die Bereiche Nebenläufigkeit, Generics, Ownership, Makros und C++-Interoperabilität. Im Bereich der Concurrency hat Version 5.5 im September 2021 grundlegende Änderungen mitgebracht, darunter Aktoren, die sich ähnlich wie Klassen verhalten, aber veränderliche Werte vor externem Zugriff sichern. Die Datenisolierung in nebenläufigem Code will das Team nun vervollständigen und dabei einige Probleme beheben, die sich unter anderem im Umgang mit globalen Variablen ergeben. Potenziell sollen zudem neue Sprachfeatures Hürden im Umgang mit strikter Isolation verringern.

Das Thema Ownership steht seit einem Manifest im Jahr 2017 im Fokus. Dabei soll Swift von Sprachen mit strikten Ownership-Modellen wie Rust lernen. Für die nähere Zeit plant die Language Workgroup dass Entwicklerinnen und Entwickler explizite Kontrolle über die Ownership erhalten, um beispielsweise implizite Kopien zu verbieten. Dabei ist auch ein Borrowing-Konzept wie in Rust geplant, bei dem Werte nicht einfach weitergegeben oder kopiert, sondern quasi ausgeliehen werden, sodass es nur einen Besitzer gibt. Nicht kopierbare Typen sollen vor allem der Performance dienen, da sich ihre Lebenszeit kontrollieren lässt.

Variadic Generics, die Python im Oktober bekommen hat, sind bereits seit einiger Zeit für Swift geplant. Nun will das Team "tatsächlich" mit der Umsetzung beginnen, wobei es erwartet, dass die Umsetzung mehrere Jahre dauern wird. Zunächst steht an, das Sprachmodell, den Compiler und die Runtime-Infrastruktur darauf vorzubereiten.

Ein Beitrag von Oktober schlägt die Einführung von Makros vor, um in erster Linie Boilerplate Code zu verringern. Dabei will die Language Workingroup nicht auf das einfache System von C mit all seinen Problemen setzen, sondern zielt auf prozedurale Makros wie beispielsweise in Rust.

Der letzte wichtige Bereich ist das Zusammenspiel zwischen Swift und C++, an dem eine eigene Arbeitsgruppe arbeitet. Für die nähere Zukunft will sie die Pläne dazu veröffentlichen, wie sich C++-APIs aus Swift und Swift-APIs von C++-Code aufrufen lassen. Die C++ Interoperability Workgroup will zudem die derzeit noch als Prototypen verfügbaren Konzepte für die Interaktion zwischen den Sprachen stabilisieren.

Die Pläne sehen darüber hinaus unter anderem eine Verbesserung der Integration des Swift-Compilers in Build-Systeme vor. Außerdem will das Team den Paketmanager von Swift ausbauen und dabei auch Anbieter unabhängiger Paketsysteme für Swift wie den Swift Package Index einbeziehen.

Die Documentation Workgroup will zum einen das Erstellen von Dokumentation mit DocC vereinfachen und zum anderen für Pakete, die aus mehreren Libraries bestehen, die Dokumentation zusammenführen.

Weitere Pläne für die Programmiersprache unter anderem für die Website swift.org finden sich im Swift-Blog.

(rme)