Uitgave van het Bazel 2.0-buildsysteem

Beschikbaar vrijgeven van open montagegereedschappen Bazel 2.0, ontwikkeld door ingenieurs van Google en gebruikt om de meeste interne projecten van het bedrijf samen te stellen. Bazel bouwt het project door de nodige compilers en tests uit te voeren. Het ondersteunt het bouwen en testen van code in Java, C++, Objective-C, Python, Rust, Go en vele andere talen, evenals het bouwen van mobiele applicaties voor Android en iOS. Projectcode gedistribueerd door gelicentieerd onder Apache 2.0.

Een significante versiewijziging omvat de toevoeging van wijzigingen die de achterwaartse compatibiliteit verbreken. Vanaf Bazel 2.0 zijn de volgende modi standaard ingeschakeld: “—incompatibel_remap_main_repo” (links op naam en via @ linken nu naar dezelfde repository), “—incompatibel_disallow_dict_lookup”_ (gebruik van niet-hashbare sleutels),
"--incompatibel_remove_native_maven_jar" en "--incompatibel_prohibit_aapt1". Andere veranderingen zijn onder meer:

  • In een team opvragen experimentele ondersteuning is verschenen voor een nieuwe editie van het “proto” uitvoerformaat (-output=proto), dat momenteel standaard is uitgeschakeld (-incompatibel_proto_output_v2) en een compactere presentatie van gegevens biedt;
  • De vlag "--incompatibel_remove_enabled_toolchain_types" toegevoegd om het veld PlatformConfiguration.enabled_toolchain_types te verwijderen;
  • Bescherming toegevoegd tegen het laden van pakketten die cyclische symbolische links gebruiken bij het laden van paden bij het uitbreiden ervan;
  • De mogelijkheid geïmplementeerd om de vlag “--disk_cache” te gebruiken met externe gRPC-caches;
  • Het Debian-pakket en het binaire installatieprogramma bevatten een verbeterde laag die ~/.bazelversion-bestanden en de omgevingsvariabele $USE_BAZEL_VERSION verwerkt;
  • Ter voorbereiding op de afschaffing van runfiles-manifestbestanden is de vlag "--experimental_skip_runfiles_manifests" toegevoegd.

Tot de onderscheidende kenmerken van Bazel behoren de hoge snelheid, betrouwbaarheid en herhaalbaarheid van het assemblageproces. Om een ​​hoge bouwsnelheid te bereiken, maakt Bazel actief gebruik van caching- en parallellisatietechnieken voor het bouwproces. BUILD-bestanden moeten alle afhankelijkheden volledig definiëren, op basis waarvan beslissingen worden genomen om componenten opnieuw op te bouwen nadat er wijzigingen zijn aangebracht (alleen gewijzigde bestanden worden opnieuw opgebouwd) en het assemblageproces parallel te laten lopen. Tooling zorgt ook voor herhaalbare montage, d.w.z. het resultaat van het bouwen van een project op de machine van de ontwikkelaar zal volledig identiek zijn aan het bouwen op systemen van derden, zoals continue integratieservers.

In tegenstelling tot Make en Ninja gebruikt Bazel een benadering op een hoger niveau voor het bouwen van assemblageregels, waarbij, in plaats van de binding van opdrachten aan de bestanden die worden gebouwd, te definiëren, meer abstracte, kant-en-klare blokken worden gebruikt, zoals “het bouwen van een uitvoerbaar bestand in C++”, “een bibliotheek bouwen in C++” of “een test uitvoeren voor C++”, evenals het identificeren van doel- en bouwplatforms. In het BUILD-tekstbestand worden de projectcomponenten beschreven als een reeks bibliotheken, uitvoerbare bestanden en tests, zonder details op het niveau van individuele bestanden en compileraanroepopdrachten. Extra functionaliteit wordt geïmplementeerd via het mechanisme voor het verbinden van extensies.

Het gebruik van afzonderlijke assemblagebestanden voor verschillende platforms en architecturen wordt ondersteund; één assemblagebestand zonder wijzigingen kan bijvoorbeeld worden gebruikt voor zowel een serversysteem als een mobiel apparaat. Het bouwsysteem is vanaf de basis ontworpen om Google-projecten optimaal te bouwen, inclusief zeer grote projecten en projecten die code in meerdere programmeertalen bevatten, uitgebreide tests vereisen en zijn gebouwd voor meerdere platforms.

Bron: opennet.ru

Voeg een reactie