Google arendab Androidi jaoks modulaarset koostamisüsteemi Soong

Google arendab kokkupanekusüsteemi Soong, mille eesmärk on asendada vanad Androidi platvormi kogumise skriptid, mis põhinevad utiliitide make kasutamisel. Soong pakub võimalust kasutada lihtsaid deklaratiivseid kirjeldused kogumise reegleid, mis määratakse failides, millel on laiend «.bp» (blueprints). Failivorming on sarnane JSON-iga ja, kui võimalik, järgib see kogumisefailide süntaksit ja semantikat Bazel. 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, mis on kirjutatud Go keeles.

Soong on seotud laiemale projektile Blueprint, mille raames areneb Androidist sõltumatu ehitussüsteem, mis põhineb deklareerivate moodulite kirjeldustel, et luua ehitusstsenaariume Ninja (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 llvm.go, samas kui arhitektuurispetsiifilisi seadeid rakendatakse töötleja art.go, kuid koodifailide ühendamine toimub failis «.bp».

cc_library {

srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster