Apple a annoncé la publication en open source du système de compilation Swift Build, utilisé dans ses environnements de développement intégrés propriétaires Xcode et Swift Playground. Ce système est optimisé pour la compilation de projets en Swift, C et Objective-C, mais peut également être utilisé avec d'autres langages. Un module expérimental (« --build-system swiftbuild ») a été développé pour le gestionnaire de paquets Swift (SWPM), permettant d'utiliser Swift Build comme moteur de compilation alternatif. Swift Build est écrit en Swift et distribué sous licence Apache 2.0. Linux, macOSIOS, Android, QNX et Windows.
Sur la base des règles de build fournies, Swift Build génère un plan de build et exécute les composants du processus de build. Le projet est développé dans le but de fournir un assemblage multiplateforme pour différents systèmes d'exploitation et types d'appareils. L'objectif principal d'un système de build est décrit comme la transformation des données d'entrée fournies par l'utilisateur, telles qu'une description de projet et un code source, en artefacts de sortie, tels que des bibliothèques et des applications.
Le système est implémenté en tant que module complémentaire à l'ensemble de bibliothèques llbuild (build de bas niveau), qui implémentent des primitives de bas niveau pour travailler avec le graphique de dépendances, définir le format des règles de build, suivre les objets reconstruits et créer des manifestes pour la boîte à outils Ninja. Parmi les fonctionnalités avancées de Swift Build figurent : la prise en charge de l'intégration avec le compilateur Swift pour une coordination efficace des projets de construction en langage Swift ; prise en charge de la création de divers types de produits, notamment des utilitaires de ligne de commande, des applications GUI et des bibliothèques ; optimisations du graphe de build pour améliorer l'efficacité de la parallélisation des processus de build du code dans les langages Swift et C.
Swift Build est basé sur le processus SWBBuildService, qui est démarré après le lancement de la build par un client, qui peut être l'utilitaire swbuild, l'environnement de développement Xcode ou le gestionnaire de packages Swift. L'interaction entre le service de build SWBBuildService et le processus client s'effectue en envoyant des messages sérialisés via un flux sans nom (pipe). Côté client, l'interaction avec le système de build s'effectue via l'API SwiftBuild ou via l'utilitaire de ligne de commande swbuild.
La fonctionnalité Swift Build définit un ensemble de frameworks tels que :
- SWBLLBuild est un module complémentaire permettant d'accéder aux fonctionnalités de llbuild ;
- SWBUtil - fonctions d'assistance telles que l'implémentation de listes ordonnées ;
- SWBCSupport - prise en charge du code C et Objective-C ;
- SWBCore - moteurs de traitement de macros, paramètres, modèles de projets, spécifications, plates-formes ;
- SWBTaskConstruction — logique de formation des tâches ;
- SWBTaskExecution — organisation de l’exécution des tâches d’assemblage ;
- SWBBuildSystem — création et planification des opérations d'assemblage, gestion de la création et de l'exécution des tâches.
Source: opennet.ru
