Google arendab Androidi jaoks Soongi modulaarset montaažisüsteemi

Google arendab ehitussüsteemi Soong, mis on mõeldud Androidi platvormi vanade ehitusskriptide asendamiseks, tuginedes utiliidi make kasutamisele. Soong soovitab kasutada lihtsat deklaratiivsust kirjeldused moodulite kokkupanemise reeglid, antud failides laiendiga “.bp” (plaanid). Failivorming on JSON-i lähedane ja võimalusel kordab koostefailide süntaksit ja semantikat Bazel. Kood on kirjutatud Go-s ja seda levitatakse Apache 2.0 litsentsi all.

Soong build failid ei toeta tingimuslauseid ja hargnevaid avaldisi, vaid kirjeldavad ainult projekti struktuuri, mooduleid ja ehitamisel kasutatavaid sõltuvusi. Ehitatavaid faile kirjeldatakse maskide abil ja rühmitatakse pakettideks, millest igaüks on failide kogum, millel on seotud sõltuvused. Muutujaid on võimalik defineerida. Muutujad ja omadused on rangelt tipitud (muutujate tüüp valitakse dünaamiliselt esmakordsel määramisel ja atribuutide puhul staatiliselt sõltuvalt mooduli tüübist). Montaažiloogika keerulised elemendid viiakse käitlejatesse, kirjutatud Go keeles.

Soong põimub suurema projektiga Plaan, mille raames arendatakse Androidiga mitteseotud metakoostesüsteemi, mis deklaratiivsete moodulite kirjeldustega failide põhjal genereerib montaažiskripte Ninja (make asendus), kirjeldades ehitamiseks käivitatavaid käske ja sõltuvusi. Selle asemel, et kasutada ehitusloogika määratlemiseks keerulisi reegleid või domeenispetsiifilist keelt, kasutab Blueprint projektipõhiseid käitlejaid Go-keeles (Soong on sisuliselt Androidi jaoks sarnaste töötlejate komplekt).

Selline lähenemine võimaldab suurte ja heterogeensete projektide (nt Android) puhul rakendada keerulisi montaažiloogika elemente koodis kõrgetasemelises programmeerimiskeeles, säilitades samal ajal võimaluse teha lihtsa deklaratiivse süntaksi abil muudatusi koostekorralduse ja projekti struktuuriga seotud moodulites. . Näiteks Soongis teeb kompilaatori lippude valiku töötleja llvm.go, ja riistvaraarhitektuuridele spetsiifiliste sätete rakendamist teostab töötleja art.go, kuid koodifailide linkimine toimub failis “.bp”.

cc_library {
...
srcs: ["generic.cpp"],
kaar: {
käsi: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Allikas: opennet.ru

Lisa kommentaar