Google ontwikkelt een modulaire bouwsysteem Soong voor Android

Het bedrijf Google werkt aan een bouwsysteem Soong, dat de oudere bouwscenario's van het Android-platform moet vervangen, die gebaseerd zijn op het gebruik van de make-tool. Soong stelt voor om eenvoudige declaratieve beschrijvingen van de bouwregels van modules vast te stellen in bestanden met de extensie '.bp' (blueprints). Het bestandformaat lijkt op JSON en probeert zoveel mogelijk de syntaxis en semantics van bouwbestanden Bazelna te volgen. De code is geschreven in de programmeertaal Go en wordt verspreid onder de Apache 2.0-licentie.

Bouwbestanden Soong ondersteunen geen voorwaardelijke operatoren of uitdrukkingen voor takken, maar beschrijven uitsluitend de projectstructuur, de bij de bouw gebruikte modules en afhankelijkheden. Te bouwen bestanden worden beschreven met behulp van maskers en gegroepeerd in pakketten, waarbij elk pakket een verzameling bestanden met de bijbehorende afhankelijkheden weergeeft. Het is mogelijk om variabelen te definiëren. Variabelen en eigenschappen zijn strikt getypeerd (het type van de variabelen wordt dynamisch gekozen bij de eerste toewijzing, terwijl de eigenschappen statisch worden gekozen afhankelijk van het type module). Complexe elementen van de bouwlogica zijn ondergebracht in handlers, geschreven in de programmeertaal Go.

Soong is verweven met het bredere project Blueprint, waarin een niet-gebonden meta-bouwsysteem voor Android wordt ontwikkeld, dat op basis van bestanden met declaratieve module beschrijvingen, bouwscenario's vormt Ninja (de vervanging voor make), die de commando's beschrijven die moeten worden uitgevoerd voor de bouw en de afhankelijkheden. In plaats van gebruik te maken van complexe regels of domeingerichte talen voor de bouwlogica, gebruikt Blueprint specifieke projecthandlers geschreven in de programmeertaal Go (Soong is in wezen een set van dergelijke handlers voor Android).

Deze aanpak maakt het voor grote en heterogene projecten, zoals Android, mogelijk om complexe elementen van de bouwlogica in code in een high-level programmeertaal te implementeren, terwijl het tegelijkertijd mogelijk blijft om met behulp van een eenvoudige declaratieve syntaxis wijzigingen aan te brengen in modules die gerelateerd zijn aan de organisatie van de bouw en de projectstructuur. Bijvoorbeeld, in Soong wordt de keuze van compilerflags uitgevoerd door de handler llvm.go, terwijl de toepassing van specifieke instellingen voor hardware-architecturen wordt uitgevoerd door de handler art.go, maar de koppelingsbestanden met de code worden uitgevoerd in het bestand «.bp».

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

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster