Build-Werkzeug Bazel in Version 2.0 erschienen
Die als Major Release bezeichnete Version 2.0 des bei Google entstandenen Buil-Tools folgt nun dem Semantic Versioning.
![Bazel 2.0](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/8/1/4/7/0/4/bazel-40ff2b0a23271268.jpeg)
- Rainald Menge-Sonnentag
- Alexander Neumann
Das ursprünglich intern bei Google entwickelte und vor rund vier Jahren als Open-Source-Werkzeug freigegebene Build-Tool Bazel ist in Version 2.0 erschienen. Das neue Release erscheint nur etwas mehr als zwei Monate nach der Freigabe von Version 1.0. Mit ihr hatten die Entwickler allerdings festgelegt, fortan dem Semantic Versioning (SemVer) zu folgen, um deutlich anzuzeigen, dass Breaking Changes nur in Major Releases zu erwarten sind.
Demnach wird Bazel 2.0 als "Major Version" bezeichnet, die zudem einige Features enthält, die es nicht in die Version 1.0 geschafft hatten. Doch weisen die Entwickler in ihrer Ankündigung auch auf einige Inkompatibilitäten mit dem Vorgänger hin.
Neuerungen en detail
Das Laden von Paketen schlägt nun konsequent fehl, wenn es eine Glob-Auswertung mitbringt, die auf einen Symlink-Zyklus oder eine unendliche Symlink-Erweiterung stößt. Bisher scheiterte das Laden von Paketen mit solchen Glob-Auswertungen nur in einigen Fällen. Darüber hinaus lässt sich das --
disk_cache
-Flag nun auch zusammen mit dem gRPC-Remote-Cache verwenden, und die Laufzeitmetriken zum Erkennen von Eingaben einer Aktion werden jetzt als Parsezeit auf der CriticalPathComponent kategorisiert.
Der neues Flag --incompatible_remove_enabled_toolchain_types
erlaubt das Entfernen des PlatformConfiguration.enabled_toolchain_types
-Felds. Neu ist auch Proto v2 für aquery-Protokoll-Ausgabeformate. Es reduziert wohl die Ausgabegröße im Vergleich zur Version 1.0. Dieses Protokollformat ist anscheinend noch experimentell, mit weiteren Änderungen ist also zu rechnen.
Toolbau zu Bazel
Bazel ist wie Maven, Gradle und Make ein Buildwerkzeug. Der Name ist ein Anagram des intern beim Internetriesen verwendeten Build-Tools Blaze. Das in Java geschriebene Werkzeug zielt vor allem auf performante Builds sowie reproduzierbare und korrekte Resultate.
Bazel funktioniert plattformübergreifend und kann für die Mobilplattformen iOS und Android Pakete für die direkte Verwendung erstellen. Auf Seite der Programmiersprachen bietet es von Haus aus unter anderem Regeln für C, C++, Java, Objective-C, Go und Python. Darüber hinaus existieren einige externe Regelsätze, darunter solche für Scala, Haskell, JavaScript beziehungsweise Node.js sowie für das Zusammenspiel mit Docker und Kubernetes.
Die Neuerungen der Version 2.0 fasst die Ankündigung im Entwickler-Blog zusammen. Der Sourcecode des Tools ist auf GitHub zu finden. Eine Dokumentationsseite bietet Anleitungen zum Installieren des Werkzeugs unter Linux, macOS und Windows. (ane)