Google arendab kokkupanekusüsteemi , mille eesmärk on asendada vanad Androidi platvormi kogumise skriptid, mis põhinevad utiliitide make kasutamisel. Soong pakub võimalust kasutada lihtsaid deklaratiivseid kogumise reegleid, failides, millel on laiend «.bp» (blueprints). Failivorming on sarnane JSON-iga ja, kui võimalik, järgib see kogumisefailide süntaksit ja semantikat . Kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi all.
Soongi kogumisefailid ei toeta tingimuslikke operaatorite ja väljendeid harunemise jaoks, vaid kirjeldavad ainult projekti struktuuri, kogumisse rakendatud mooduleid ja sõltuvusi. Kogumisse minevaid faile kirjeldatakse maskide kaudu ja need koondatakse pakettidesse, millest igaüks esindab kogumit faile koos seotud sõltuvuste näidustustega. Muutujate määramine on võimalik. Muutujad ja omadused on rangelt tüübitud (muutujate tüüp valitakse dünaamiliselt esimesel määramisel, omaduste jaoks statiliselt sõltuvalt mooduli tüübist). keerukamad kogumise loogika elemendid on paigutatud töötlejatesse, Go keeles.
Soong on seotud laiemale projektile , mille raames areneb Androidist sõltumatu ehitussüsteem, mis põhineb deklareerivate moodulite kirjeldustel, et luua ehitusstsenaariume (asendamine make'iga), mis kirjeldavad käske, mida tuleb täita ehitamiseks, ja sõltuvusi. Selle asemel, et rakendada keerulisi reegleid või ainepõhist keelt ehitusloogika määratlemiseks, kasutatakse Blueprintis ehitatavate projektide jaoks spetsiifilisi töötlejaid Go keeles (Soong on põhimõtteliselt komplekt sarnaseid töötlejaid Androidi jaoks).
Selline lähenemine võimaldab suurtele ja heterogeensetele projektidele, nagu Android, rakendada keerulisi ehitusloogika elemente kõrgetasemelises programmeerimiskeeles, samal ajal säilitades võimaluse teha lihtsa deklareeriva süntaksi abil muudatusi moodulites, mis puudutavad ehituse korraldust ja projekti struktuuri. Näiteks Soongis toimub kompilaatori lipu valik töötleja , samas kui arhitektuurispetsiifilisi seadeid rakendatakse töötleja , kuid koodifailide ühendamine toimub failis «.bp».
cc_library {
…
srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}
Allikas: opennet.ru
