Apple teatas Swift Build'i ehitusüsteemi avatud koodi esitamisest, mis kasutatakse omandiõigusega integreeritud arenduskeskkondades nagu Xcode ja Swift Playground. Süsteem on optimeeritud projektide ehitamiseks Swift, C ja Objective-C keeltes, kuid seda saab kasutada ka teiste keeltega. Swift Paketihalduri jaoks on loodud katsemodule («—build-system swiftbuild»), mis võimaldab kasutada Swift Build'i alternatiivse mootorrattana pakettide ehitamiseks. Swift Build kood on kirjutatud Swift keeles ja avaldatud Apache 2.0 litsentsi alusel. Toetatakse projektide ehitamist Linuxi, macOS, iOS, Androidi, QNX ja Windowsi jaoks.
Swift Build koostab edastatud ehitusreeglite alusel ehitusplaani ja alustab ehitusprotsessi komponente. Projekt areneb silmas pidades mitme platvormi ehitamise tagamist erinevatele operatsioonisüsteemidele ja seadmetele. Ehitusüsteemi peamine eesmärk on muuta kasutaja esitatud sisendandmed, nagu projekti kirjeldus ja allikakood, tulemuseks olevateks artefaktideks, nagu teegid ja rakendused.
Süsteem on rakendatud täiendusena llbuild (madalama taseme ehitamine) teekide komplektile, mis rakendab madala taseme primitiive sõltuvusgraafiga töötamiseks, ehitussäästereeglite formaadi määratlemiseks, uuesti ehitatavate objektide jälgimiseks ja Ninja tööriistade jaoks manifestide loomiseks. Swift Build'i juhuks on toodud: integreerimise tugi Swift kompilaatoriga, et tõhusalt koordineerida projektide ehitamist Swift keeles; erinevat tüüpi toodete ehitamise toetus, sealhulgas käsurea utiliidid, GUI rakendused ja teegid; ehitusgraafi optimeerimine, et suurendada kodeerimise ehitamisprotsesside efektiivset paralleelset töötlemist Swift ja C keeltes.
Swift Buildi alus on protsess SWBBuildService, mis käivitatakse pärast kliendi algatatud ehitust, milleks võib olla utiliit swbuild, arenduskeskkond Xcode või Swift Package Manageri paketihaldur. Suhtlus ehitusservise SWBBuildService ja kliendi protsessi vahel toimub serialiseeritud sõnumite saatmise teel anonüümses torus (pipe). Kliendi poolel toimub suhtlus ehitus süsteemiga SwiftBuild API või käsurea utiliidi swbuild kaudu.
Swift Buildi funktsionaalsus määrab raamistikute komplekti, nagu:
- SWBLLBuild — liides llbuildi funktsionaalsusele;
- SWBUtil — abifunktsioonid, nagu järjestatud loendite rakendamine;
- SWBCSupport — C ja Objective-C koodi tugi;
- SWBCore — makrode, seadete, projektimudelite ja platvormide töötlemise mootori;
- SWBTaskConstruction — ülesannete loomise loogika;
- SWBTaskExecution — ehitusülesannete täitmise korraldamine;
- SWBBuildSystem — ehitusoperatsioonide planeerimine ja korraldamine, ülesannete loomise ja täitmise juhtimine.
Allikas: opennet.ru
