Lansarea sistemului de compilare Bazel 2.0

Disponibil eliberarea sculelor de asamblare deschise Bazel 2.0, dezvoltat de ingineri de la Google și folosit pentru a asambla majoritatea proiectelor interne ale companiei. Bazel construiește proiectul rulând compilatoarele și testele necesare. 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. Cod proiect distribuit de licențiat sub Apache 2.0.

O modificare semnificativă a versiunii implică adăugarea de modificări care încalcă compatibilitatea cu versiunea anterioară. Începând cu Bazel 2.0, următoarele moduri sunt activate în mod implicit: „—incompatible_remap_main_repo” (linkuri după nume și prin @ acum se leagă la același depozit), „—incompatible_disallow_dict_lookup”_(utilizarea cheilor nedisponibile),
„--incompatible_remove_native_maven_jar” și „--incompatible_prohibit_aapt1”. Alte modificări includ:

  • Într-o echipă acvariu A apărut suport experimental pentru o nouă ediție a formatului de ieșire „proto” (-output=proto), care este în prezent dezactivat implicit (-incompatible_proto_output_v2) și oferă o prezentare mai compactă a datelor;
  • S-a adăugat indicatorul „--incompatible_remove_enabled_toolchain_types” pentru a elimina câmpul PlatformConfiguration.enabled_toolchain_types;
  • S-a adăugat protecție împotriva încărcării pachetelor care utilizează legături simbolice ciclice la încărcarea căilor atunci când le extind;
  • Implementat capacitatea de a utiliza steag-ul „--disk_cache” cu cache-urile externe gRPC;
  • Pachetul Debian și programul de instalare binar include un strat îmbunătățit care gestionează fișierele ~/.bazelversion și variabila de mediu $USE_BAZEL_VERSION;
  • În pregătirea pentru deprecierea fișierelor manifest Runfiles, a fost adăugat flag „--experimental_skip_runfiles_manifests”.

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.

Este acceptată utilizarea fișierelor de asamblare individuale 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. Sistemul de compilare este proiectat 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.

Sursa: opennet.ru

Adauga un comentariu