Google desenvolupa el sistema de muntatge modular Soong per a Android

Google està desenvolupant un sistema de compilació Soong, dissenyat per substituir els scripts de compilació antics per a la plataforma Android, basat en l'ús de la utilitat make. Soong suggereix utilitzar declaratius simples descripcions regles per muntar mòduls, donat en fitxers amb l'extensió “.bp” (plans). El format del fitxer és proper al JSON i, si és possible, repeteix la sintaxi i la semàntica dels fitxers d'assemblatge Bazel. El codi està escrit a Go i es distribueix sota la llicència Apache 2.0.

Els fitxers de compilació de Soong no admeten declaracions condicionals ni expressions de ramificació, però només descriuen l'estructura del projecte, els mòduls i les dependències que s'utilitzen en la construcció. Els fitxers a construir es descriuen mitjançant màscares i s'agrupen en paquets, cadascun dels quals és una col·lecció de fitxers amb dependències associades. És possible definir variables. Les variables i propietats s'escriuen estrictament (el tipus de variables es selecciona dinàmicament en la primera assignació, i per a les propietats estàticament depenent del tipus de mòdul). Els elements complexos de la lògica de muntatge es traslladen als controladors, escrit en l'idioma Go.

Soong s'entrellaça amb un projecte més gran Cianotipo, dins del qual s'està desenvolupant un sistema de meta-assemblatge no vinculat a Android, que, a partir de fitxers amb descripcions declaratives de mòduls, genera scripts de muntatge. ninja (un reemplaçament de make), descrivint les ordres que s'han d'executar per construir i les dependències. En lloc d'utilitzar regles complexes o un llenguatge específic del domini per definir la lògica de compilació, Blueprint utilitza controladors específics del projecte en l'idioma Go (Soong és essencialment un conjunt de controladors similars per a Android).

Aquest enfocament permet que projectes grans i heterogenis, com Android, implementin elements complexos de lògica d'assemblatge en codi en un llenguatge de programació d'alt nivell, alhora que es manté la capacitat de fer canvis als mòduls relacionats amb l'organització de l'assemblatge i l'estructura del projecte mitjançant una sintaxi declarativa senzilla. . Per exemple, a Soong, la selecció dels indicadors del compilador la fa el controlador llvm.go, i l'aplicació de paràmetres específics de les arquitectures de maquinari la realitza el gestor art.go, però l'enllaç dels fitxers de codi es realitza al fitxer “.bp”.

cc_library {
...
srcs: ["generic.cpp"],
arc: {
braç: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Font: opennet.ru

Afegeix comentari