Google dezvoltă un sistem modular de construcție Soong pentru Android

Compania Google dezvoltă un sistem de construire Soong, destinat să înlocuiască vechile scenarii de construire ale platformei Android, bazate pe utilizarea utilitatii make. Soong propune utilizarea unor descrieri ale cheilor reguli simple de construire a modulelor, definite în fișiere cu extensia „.bp” (blueprints). Formatul fișierelor este similar cu JSON și, pe cât posibil, repetă sintaxa și semantica fișierelor de construcție Bazel. Codul este scris în limbajul Go și este distribuit sub licența Apache 2.0.

Fișierele de construcție Soong nu suportă operatori condiționali și expresii pentru ramificare, ci descriu doar structura proiectului, modulele utilizate la construcție și dependențele. Fișierele care trebuie construite sunt descrise prin măști și grupate în pachete, fiecare dintre acestea reprezentând o colecție de fișiere cu indicații despre dependențele asociate. Este posibilă definirea variabilelor. Variabilele și proprietățile sunt strict tipizate (tipul variabilelor este ales dinamic la prima atribuire, iar pentru proprietăți static în funcție de tipul modulului). Elementele complexe ale logicii de construcție sunt externalizate în gestionari, scriți în limbajul Go.

Soong este interconectat cu un proiect mai general Blueprint, în care se dezvoltă un sistem de construire meta, independent de Android, care, pe baza fișierelor cu descrieri declarație ale modulelor, generează scenarii de construcție Ninja (înlocuitor pentru make), care descriu comenzile care trebuie executate pentru construcție și dependențele. În loc să aplice reguli complexe sau un limbaj orientat pe subiect pentru a defini logica de construcție, Blueprint utilizează gestionari specifice proiectelor de construcție scriși în limbajul Go (Soong este, în esență, un set de astfel de gestionari pentru Android).

Această abordare permite, pentru proiecte mari și diverse, cum ar fi Android, implementarea elementelor complexe ale logicii de construcție în cod scris într-un limbaj de programare de nivel înalt, menținând în același timp posibilitatea de a face modificări în module legate de organizarea construcției și structura proiectului printr-o sintaxă declarație simplă. De exemplu, în Soong, selecția flagurilor de compilare se face de către gestionarul llvm.go, iar aplicarea setărilor specifice arhitecturilor hardware este efectuată de gestionarul art.go, dar legarea fișierelor cu codul se face în fișierul „.bp”.

cc_library {
…
srcs: [„generic.cpp”],
arh: {
arm: {
srcs: [„arm.cpp“],
},
x86: {
srcs: [„x86.cpp“],
},
},
}

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster