zurück zum Artikel

Build-Tool: Bazel 5.0 verÀndert den Umgang mit externen Dependencies

Maika Möbus

(Bild: nattaphol phromdecha/Shutterstock.com)

Das zweite LTS-Release fĂŒr Bazel ist erschienen. Es fĂŒhrt ein neues External-Dependency-System ein und erweitert seine Sprache Starlark um neue Funktionen.

Google hat das Build-Werkzeug Bazel in Version 5.0 veröffentlicht. Das Release bringt Long-term Support (LTS) und einige Neuerungen mit, darunter den experimentellen Einsatz des neuen External-Dependency-Subsystems Bzlmod. Die zum AusfĂŒhren von Bazel benötigte JDK-Version steigt auf OpenJDK 11 an, allerdings bleibt das Kompilieren von Binaries, die JDK 8 oder frĂŒher verwenden, weiterhin möglich.

Das Build- und Test-Tool Bazel soll Make, Maven und Gradle Ă€hneln und sich fĂŒr Java, C++, Android, iOS, Go und weitere Sprachplattformen eignen. Dabei soll es unter anderem dank lokalem und verteiltem Caching und paralleler AusfĂŒhrung fĂŒr schnelle und inkrementelle Builds sorgen sowie skalier- und erweiterbar sein. Es steht als Open Source unter Apache-2.0-Lizenz bereit.

Bazel kann von Targets anderer Projekte abhĂ€ngen, deren AbhĂ€ngigkeiten unter der Bezeichnung External Dependencies laufen. In Version 5.0 fĂŒhrt Bazel das neue External-Dependency-Subsystem mit dem Codenamen Bzlmod ein, um Nachteile des bisherigen Systems zu beheben, die sich offenbar nicht auf inkrementelle Weise lösen ließen.

Bzlmod ist standardmĂ€ĂŸig deaktiviert und lĂ€sst sich mit dem experimentellen Flag --experimental_enable_bzlmod aktivieren. Im Gegensatz zum alten System, das auf WORKSPACE basierte und sich um Repositorys drehte, stĂŒtzt es sich auf die MODULE.bazel-Datei und fokussiert sich auf Module. Details zum neuen System verrĂ€t die Dokumentation [1].

Die von Python 3 inspirierte Bazel-Sprache Starlark [2] hat einige neue Funktionen gewonnen, darunter das Nesting von def-Statements (Closures) und Lambda-AusdrĂŒcken (Anonymous Functions). Das neue Flag --incompatible_existing_rules_immutable_view soll die bestehenden Funktionen native.existing_rule und native.existing_rules effizienter gestalten, indem es unverĂ€nderliche, Dict-Ă€hnliche View-Objekte anstatt Ă€nderbarer Dicts ausgibt. Die Betreuung der Starlark-Rust-Bibliothek [3] ĂŒbernahm im letzten Jahr Meta, damals noch Facebook, in Absprache mit Google.

Neuerungen gibt es in Bazel 5.0 auch fĂŒr Java-Regeln: Sie verwenden nun Toolchain Resolution. Bisher fanden sie die Java-Toolchain sowie das JDK mittels der Kommandozeilenoptionen --javabase, --java_toolchain, --host_javabase und --host_java_toolchain. Die Neuerung soll der Einheitlichkeit innerhalb von Bazel sowie dem Verwenden mehrerer Plattformen zugutekommen.

Bazel 5.0 ist nach Bazel 4.0 das zweite Release mit Long-term Support (LTS). Jeder LTS-Branch soll neun Monate mit kritischen Bugfixes, aber keinen neuen Features versehen werden. Danach folgen zwei Jahre in der Maintenance-Phase, in der Fixes auf Security und BetriebssystemkompatibilitÀt beschrÀnkt sind.

Auf GitHub ist das Open-Source-Tool in der neuen Version zu finden [4]. Offiziell lĂ€sst sich Bazel unter Ubuntu Linux, macOS und Windows installieren. Daneben verwalten Community-Mitglieder [5] weitere Packages etwa fĂŒr Arch Linux oder FreeBSD.

Alle weiteren Informationen zu Bazel 5.0 sind dem Bazel-Blog zu entnehmen [6].

(mai [7])


URL dieses Artikels:
https://www.heise.de/-6334103

Links in diesem Artikel:
[1] https://docs.bazel.build/versions/5.0.0/bzlmod.html
[2] https://docs.bazel.build/versions/main/skylark/language.html
[3] https://www.heise.de/news/Konfigurationssprache-Facebook-stellt-Rust-Bibliothek-fuer-Starlark-vor-6015940.html
[4] https://github.com/bazelbuild/bazel/releases/tag/5.0.0
[5] https://docs.bazel.build/versions/5.0.0/install.html
[6] https://blog.bazel.build/2022/01/19/bazel-5.0.html
[7] mailto:mai@heise.de