Uitgave van het Bazel 1.0-buildsysteem

Geïntroduceerd vrijgeven van open montagegereedschappen Bazel 1.0, ontwikkeld door ingenieurs van Google en gebruikt om de meeste interne projecten van het bedrijf samen te stellen. Release 1.0 markeerde de overgang naar semantische releaseversies en viel ook op door de introductie van een groot aantal wijzigingen die de achterwaartse compatibiliteit verbraken. Projectcode gedistribueerd door gelicentieerd onder Apache 2.0.

Bazel bouwt het project door de nodige compilers en tests uit te voeren. 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. 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. 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.

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.

Bron: opennet.ru

Voeg een reactie