Programmiersprache Swift: Team erarbeitet Ownership-Modell und Variadic Generics
(Bild: PaweĆ KuĆșniar (unter der GFDL))
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.
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 [1] 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 [2], die sich um den Inhalt auf swift.org kĂŒmmert, die fĂŒr die Dokumentation und das zugehörige Tooling zustĂ€ndige Documentation Workgroup [3] sowie die C++ Interoperability Workgroup [4], die fĂŒr ein besseres Zusammenspiel zwischen Swift und C++ sorgen soll.
FĂŒnf Schwerpunkte fĂŒr die sprachliche Weiterentwicklung
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 [5] 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 [6] 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 [7], sind bereits seit einiger Zeit fĂŒr Swift geplant [8]. 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.
Makros und das Zusammenspiel mit C++
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 [9].
Der letzte wichtige Bereich ist das Zusammenspiel zwischen Swift und C++, an dem eine eigene Arbeitsgruppe [10] 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.
Jenseits der Sprache
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 [11] einbeziehen.
Die Documentation Workgroup will zum einen das Erstellen von Dokumentation mit DocC [12] 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 [13].
(rme [14])
URL dieses Artikels:
https://www.heise.de/-7346791
Links in diesem Artikel:
[1] https://www.heise.de/news/Programmiersprache-Swift-erhaelt-Language-Workgroup-7143951.html
[2] https://www.swift.org/website/
[3] https://www.swift.org/documentation-workgroup/
[4] https://www.swift.org/cxx-interop-workgroup/
[5] https://www.heise.de/news/Programmiersprache-Swift-5-5-krempelt-die-Nebenlaeufigkeit-der-Sprache-um-6196960.html
[6] https://www.heise.de/news/Programmiersprache-Swift-5-5-krempelt-die-Nebenlaeufigkeit-der-Sprache-um-6196960.html
[7] https://www.heise.de/news/Programmiersprache-Python-3-11-erweitert-die-Fehlerbehandlung-und-die-Type-Hints-7319328.html
[8] https://www.heise.de/news/Programmiersprache-Wie-es-mit-Swift-weitergeht-4644156.html
[9] https://www.heise.de/hintergrund/Programmiersprache-Rust-Makros-Einfuehrung-in-ein-unverzichtbares-Werkzeug-7217990.html
[10] https://www.swift.org/cxx-interop-workgroup/
[11] https://swiftpackageindex.com/
[12] https://developer.apple.com/documentation/docc
[13] https://www.swift.org/blog/focus-areas-2023/
[14] mailto:rme@ix.de
Copyright © 2022 Heise Medien