Lansarea sistemului de compilare Bazel 1.0

Introdus eliberarea sculelor de asamblare deschise Bazel 1.0, dezvoltat de ingineri de la Google și folosit pentru a asambla majoritatea proiectelor interne ale companiei. Versiunea 1.0 a marcat tranziția la versiunea semantică a versiunilor și a fost, de asemenea, remarcabilă prin introducerea unui număr mare de modificări care au rupt compatibilitatea cu versiunea inversă. Cod proiect distribuit de licențiat sub Apache 2.0.

Bazel construiește proiectul rulând compilatoarele și testele necesare. Sistemul de compilare este conceput de la zero pentru a construi în mod optim proiecte Google, inclusiv proiecte foarte mari și proiecte care conțin cod în mai multe limbaje de programare, necesită testare extinsă și sunt construite pentru mai multe platforme. Acceptă construirea și testarea codului în Java, C++, Objective-C, Python, Rust, Go și multe alte limbi, precum și construirea de aplicații mobile pentru Android și iOS. Este acceptată utilizarea fișierelor de asamblare unice pentru diferite platforme și arhitecturi; de exemplu, un fișier de asamblare fără modificări poate fi utilizat atât pentru un sistem server, cât și pentru un dispozitiv mobil.

Printre caracteristicile distinctive ale Bazel se numără viteza mare, fiabilitatea și repetabilitatea procesului de asamblare. Pentru a obține o viteză mare de construire, Bazel utilizează în mod activ tehnicile de cache și paralelizare pentru procesul de construire. Fișierele BUILD trebuie să definească pe deplin toate dependențele, pe baza cărora se iau deciziile de reconstrucție a componentelor după ce se fac modificări (se reconstruiesc doar fișierele modificate) și paralelizarea procesului de asamblare. De asemenea, sculele asigură o asamblare repetabilă, de ex. rezultatul construirii unui proiect pe mașina dezvoltatorului va fi complet identic cu construirea pe sisteme terțe, cum ar fi serverele de integrare continuă.

Spre deosebire de Make și Ninja, Bazel folosește o abordare de nivel superior pentru construirea regulilor de asamblare, în care, în loc să definească legarea comenzilor la fișierele construite, sunt folosite blocuri mai abstracte gata făcute, cum ar fi „construirea unui fișier executabil în C++”, „construirea unei biblioteci în C++” sau „rularea unui test pentru C++”, precum și identificarea platformelor țintă și de construcție. În fișierul text BUILD, componentele proiectului sunt descrise ca o grămadă de biblioteci, fișiere executabile și teste, fără detalii la nivel de fișiere individuale și comenzi de apel ale compilatorului. Funcționalitate suplimentară este implementată prin mecanismul de conectare a extensiilor.

Sursa: opennet.ru

Adauga un comentariu