Frigivelse af Bazel 2.0 montagesystemet

Ledig frigivelse af åbne montageværktøjer Bazel 2.0, udviklet af ingeniører fra Google og brugt til at samle de fleste af virksomhedens interne projekter. Bazel bygger projektet ved at køre de nødvendige compilere og tests. Det understøtter bygning og test af kode i Java, C++, Objective-C, Python, Rust, Go og mange andre sprog, samt opbygning af mobilapplikationer til Android og iOS. Projektkode distribueret af licenseret under Apache 2.0.

En væsentlig versionsændring involverer tilføjelse af ændringer, der bryder bagudkompatibiliteten. Fra og med Bazel 2.0 er følgende tilstande aktiveret som standard: "—incompatible_remap_main_repo" (links ved navn og via @ nu link til det samme lager), "—incompatible_disallow_dict_lookup"_(brug af unhashable nøgler),
"--incompatible_remove_native_maven_jar" og "--incompatible_prohibit_aapt1". Andre ændringer omfatter:

  • I et hold forespørgsel eksperimentel support er dukket op for en ny udgave af "proto"-outputformatet (-output=proto), som i øjeblikket er deaktiveret som standard (-incompatible_proto_output_v2) og giver en mere kompakt præsentation af data;
  • Tilføjede flaget "--incompatible_remove_enabled_toolchain_types" for at fjerne feltet PlatformConfiguration.enabled_toolchain_types;
  • Tilføjet beskyttelse mod indlæsning af pakker, der bruger cykliske symbolske links ved indlæsning af stier, når de udvides;
  • Implementeret muligheden for at bruge "--disk_cache" flaget med eksterne gRPC caches;
  • Debian-pakken og det binære installationsprogram inkluderer et forbedret lag, der håndterer ~/.bazelversion-filer og miljøvariablen $USE_BAZEL_VERSION;
  • Som forberedelse til udfasningen af ​​runfiles manifestfiler er flaget "--experimental_skip_runfiles_manifests" blevet tilføjet.

Blandt de karakteristiske træk ved Bazel er monteringsprocessens høje hastighed, pålidelighed og repeterbarhed. For at opnå høj byggehastighed bruger Bazel aktivt caching og paralleliseringsteknikker til byggeprocessen. BUILD-filer skal fuldt ud definere alle afhængigheder, på grundlag af hvilke der træffes beslutninger om at genopbygge komponenter efter ændringer er foretaget (kun ændrede filer genopbygges) og parallelisere monteringsprocessen. Værktøj sikrer også gentagelig montage, dvs. Resultatet af at bygge et projekt på udviklerens maskine vil være fuldstændig identisk med byggeriet på tredjepartssystemer, såsom kontinuerlige integrationsservere.

I modsætning til Make og Ninja bruger Bazel en tilgang på et højere niveau til at bygge assemblerregler, hvor der i stedet for at definere bindingen af ​​kommandoer til de filer, der bygges, bruges mere abstrakte færdiglavede blokke, såsom at "bygge en eksekverbar fil i C++", "opbygge et bibliotek i C++" eller "køre en test for C++", samt identificere mål- og byggeplatforme. I BUILD-tekstfilen beskrives projektkomponenterne som en flok biblioteker, eksekverbare filer og tests, uden detaljering på niveau med individuelle filer og kompileringskommandoer. Yderligere funktionalitet er implementeret gennem mekanismen til tilslutning af udvidelser.

Brugen af ​​enkelt assembly filer til forskellige platforme og arkitekturer er understøttet; for eksempel kan en assembly fil uden ændringer bruges til både et serversystem og en mobil enhed. Byggesystemet er designet fra bunden til optimalt at bygge Google-projekter, herunder meget store projekter og projekter, der indeholder kode på flere programmeringssprog, kræver omfattende test og er bygget til flere platforme.

Kilde: opennet.ru

Tilføj en kommentar