Apple hat bekannt gegeben, dass der Quellcode des Build-Systems Swift Build, das in proprietĂ€ren integrierten Entwicklungsumgebungen wie Xcode und Swift Playground verwendet wurde, nun offen ist. Das System ist fĂŒr die Erstellung von Projekten in den Programmiersprachen Swift, C und Objective-C optimiert, kann jedoch auch mit anderen Sprachen verwendet werden. FĂŒr den Paketmanager Swift Package Manager wurde ein experimentelles Modul («âbuild-system swiftbuild») vorbereitet, das es ermöglicht, Swift Build als alternativen Motor zur Erstellung von Paketen zu nutzen. Der Code von Swift Build ist in der Programmiersprache Swift verfasst und unter der Apache 2.0 Lizenz lizenziert. Die Erstellung von Projekten fĂŒr Linux, macOS, iOS, Android, QNX und Windows wird unterstĂŒtzt.
Basierend auf den bereitgestellten Build-Regeln erstellt Swift Build einen Build-Plan und startet die Komponenten des Build-Prozesses. Das Projekt entwickelt sich mit Blick auf die Bereitstellung einer plattformĂŒbergreifenden Erstellung fĂŒr verschiedene Betriebssysteme und GerĂ€tetypen. Der Hauptzweck des Build-Systems wird als die Umwandlung der vom Benutzer bereitgestellten Eingabedaten, wie z.B. Projektbeschreibungen und Quellcode, in die resultierenden Artefakte, wie Bibliotheken und Anwendungen, beschrieben.
Das System wurde als Erweiterung ĂŒber eine Reihe von llbuild-Bibliotheken (Low-Level-Build) implementiert, die grundlegende Primitiven zur Arbeit mit AbhĂ€ngigkeitsgrafen, zur Festlegung des Formats von Build-Regeln, zur Nachverfolgung neu zu erstellender Objekte und zur Erstellung von Manifesten fĂŒr das Ninja-Toolset bereitstellen. Zu den erweiterten Funktionen von Swift Build gehören: die UnterstĂŒtzung der Integration mit dem Swift-Compiler fĂŒr eine effektive Koordination beim Erstellen von Projekten in Swift; die UnterstĂŒtzung fĂŒr den Bau verschiedener Produkttypen, einschlieĂlich Kommandozeilen-UtilitĂ€ten, GUI-Anwendungen und Bibliotheken; sowie die Optimierung des Build-Grafen zur Steigerung der Effizienz der Parallelisierung von Build-Prozessen in Swift und C.
Der Kern von Swift Build besteht aus dem SWBBuildService-Prozess, der nach der Initiierung eines Builds durch den Kunden gestartet wird. Dieser kann die swbuild-Utility, die Entwicklungsumgebung Xcode oder den Swift Package Manager sein. Die Interaktion zwischen dem SWBBuildService-Build-Service und dem Client-Prozess erfolgt ĂŒber den Austausch von serialisierten Nachrichten ĂŒber einen benannten Stream (Pipe). Auf der Client-Seite geschieht die Interaktion mit dem Build-System ĂŒber die SwiftBuild API oder die Command-Line-Utility swbuild.
Die FunktionalitÀt von Swift Build definiert eine Reihe von Frameworks, darunter:
- SWBLLBuild â eine Erweiterung zum Zugriff auf die FunktionalitĂ€t von llbuild;
- SWBUtil â Hilfsfunktionen wie die Implementierung von geordneten Listen;
- SWBCSupport â UnterstĂŒtzung fĂŒr C- und Objective-C-Code;
- SWBCore â Engines zur Verarbeitung von Makros, Einstellungen, Projektmodellen, Spezifikationen und Plattformen;
- SWBTaskConstruction â Logik zur Aufgabenstrukturierung;
- SWBTaskExecution â Organisation der AusfĂŒhrung von Build-Aufgaben;
- SWBBuildSystem â Planung und DurchfĂŒhrung von Build-Operationen, Verwaltung der Erstellung und AusfĂŒhrung von Aufgaben.
Quelle: opennet.ru
