atviro surinkimo įrankių išleidimas , kurią sukūrė „Google“ inžinieriai ir kuri buvo naudojama daugumai įmonės vidinių projektų kurti. „Bazel“ tvarko projektų kūrimą, vykdo reikiamus kompiliatorius ir testus. Ji palaiko kodo kūrimą ir testavimą Java, C++, Objective-C, Python, Rust, Go ir daugeliu kitų kalbų, taip pat mobiliųjų programėlių kūrimą. Android ir iOS. Projekto kodas licencijuota pagal Apache 2.0.
Reikšmingas versijos pakeitimas apima pakeitimų, kurie pažeidžia atgalinį suderinamumą, pridėjimą. Pradedant nuo 2.0 versijos Bazel, pagal numatytuosius nustatymus įjungti šie režimai: „—incompatible_remap_main_repo“ (nuorodos pagal pavadinimą ir per @ dabar nukreipia į tą pačią saugyklą), „-incompatible_disallow_dict_lookup“_ (nemaišomų raktų naudojimas),
„---nesuderinamas_remove_native_maven_jar“ ir „---incompatible_prohibit_aapt1“. Kiti pakeitimai apima:
- Komandoje atsirado eksperimentinis palaikymas naujam „proto“ išvesties formato leidimui (-output=proto), kuris šiuo metu yra išjungtas pagal numatytuosius nustatymus (-incompatible_proto_output_v2) ir suteikia kompaktiškesnį duomenų pateikimą;
- Pridėta žyma „--incompatible_remove_enabled_toolchain_types“, kad būtų pašalintas laukas PlatformConfiguration.enabled_toolchain_types;
- Pridėta apsauga nuo pakuočių, kurios įkeliant kelius juos plečiant naudoja ciklines simbolines nuorodas, įkėlimo;
- Įdiegta galimybė naudoti žymą „--disk_cache“ su išorinėmis gRPC talpyklomis;
- Pakuotėje, skirtoje Debian ir dvejetainių failų diegimo programoje yra patobulintas sluoksnis, kuris tvarko ~/.bazelversion failus ir $USE_BAZEL_VERSION aplinkos kintamąjį;
- Ruošiantis nutraukti vykdymo failų aprašo failų naudojimą, buvo pridėta vėliavėlė „--experimental_skip_runfiles_manifests“.
Tarp išskirtinių „Bazel“ savybių yra didelis surinkimo proceso greitis, patikimumas ir pakartojamumas. Kad pasiektų didelę kūrimo spartą, „Bazel“ kūrimo procesui aktyviai naudoja talpyklos ir lygiagretinimo būdus. BUILD failai turi visiškai apibrėžti visas priklausomybes, kurių pagrindu priimami sprendimai po pakeitimų atstatyti komponentus (atkuriami tik pakeisti failai) ir sugretinti surinkimo procesą. Įrankiai taip pat užtikrina pakartotinį surinkimą, t.y. Projekto kūrimo kūrėjo kompiuteryje rezultatas bus visiškai identiškas trečiųjų šalių sistemoms, pvz., nuolatinio integravimo serveriams.
Skirtingai nei Make ir Ninja, Bazel naudoja aukštesnio lygio metodą, kad sukurtų surinkimo taisykles, kai užuot apibrėžęs komandų susiejimą su kuriamais failais, naudojami abstraktesni paruošti blokai, pvz., „vykdomojo failo kūrimas C++“, „bibliotekos kūrimas C++“ arba „C++ testavimo vykdymas“, taip pat tikslinių ir kūrimo platformų nustatymas. Tekstiniame faile BUILD projekto komponentai aprašomi kaip bibliotekų, vykdomųjų failų ir testų krūva, nedetalizuojant atskirų failų ir kompiliatoriaus iškvietimo komandų. Papildomos funkcijos įgyvendinamos naudojant plėtinių prijungimo mechanizmą.
Palaikomas atskirų surinkimo failų naudojimas skirtingoms platformoms ir architektūroms, pavyzdžiui, vienas surinkimo failas be pakeitimų gali būti naudojamas tiek serverio sistemai, tiek mobiliajam įrenginiui. Sukūrimo sistema sukurta nuo pat pradžių, kad būtų galima optimaliai kurti „Google“ projektus, įskaitant labai didelius projektus ir projektus, kuriuose yra kodas keliomis programavimo kalbomis, kuriuos reikia išbandyti ir kurie yra sukurti kelioms platformoms.
Šaltinis: opennet.ru
