Build-Tool Bazel ist reif für Version 1.0
Das von Google initiierte Build-Werkzeug Bazel markiert mit dem 1.0-Release in doppelter Hinsicht Stabilität.
Das ursprünglich intern bei Google entwickelte und vor vier Jahren als Open-Source-Werkzeug freigegebene Build-Tool Bazel ist in Version 1.0 erschienen. Die wichtige "1" vor dem Komma zeigt zum einen einen stabilen Reifegrad für den produktiven Einsatz an und zum anderen soll es künftig weniger Inkompatibilitäten bei frischen Releases geben. Daher setzen die Entwickler ab sofort auf Semantic Versioning (SemVer), um deutlich anzuzeigen, dass Breaking Changes nur in Major Releases zu erwarten sind.
Neuerungen für den Versionssprung
Das 1.0-Release bringt darüber hinaus einige Neuerungen sowie Deprecations, also überholte Funktionen mit. Unter anderem lässt sich für den Parameter genrule
, der allgemeine Regeln als nutzerdefinierte Kommandozeilenbefehle definiert, neben Bash über cmd_bash
neuerdings PowerShell über cmd_ps
und Windows-Batch über cmd_bat
festlegen.
Mit dem Flag --experimental_allow_tags_propagation
überträgt Bazel Tags an die Anforderungen für die Ausführung. Die entsprechenden Tags sollten je nach Typ der Anforderung no-
, requires-
, supports-
, block-
, disable-
oder cpu:
als Präfix verwenden.
Im Zusammenspiel mit der Compilerinfrastruktur Clang ab Version 6.0 kann Bazel 1.0 nun ThinLTO-Build auf Linux mit features=thin_lto
anstoßen. Der Modus soll die verbesserte Performance zur Laufzeit durch Link Time Optimization (LTO) mit weniger Speicherbedarf und Geschwindigkeitsverlust beim Kompilieren erreichen. Unter Android gilt nun das AAPT2 (Android Asset Packaging Tool) als Standardwerkzeug zur Paketierung. Wer weiterhin AAPT verwenden möchte, kann das Flag --android_aapt=aapt
verwenden.
Toolbau zu Bazel
Bazel ist wie Maven, Gradle und Make ein Buildwerkzeug. Google hatte das Tool vor vier Jahren als Open-Source-Projekt freigegeben. Der Name ist ein Anagram des intern beim Internetriesen verwendeten Buildtools Blaze. Das Werkzeug ist in Java geschrieben und 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.
Weitere Details zum 1.0-Release lassen sich dem Bazel-Blog entnehmen. Trotz SemVer dürfte es auch künftig recht häufig zu Breaking Changes kommen: Der Beitrag verspricht lediglich, dass zwischen zwei Major Releases mindestens drei Monate liegen sollen. Der Sourcecode des Tools ist auf GitHub zu finden. Eine Dokumentationsseite bietet Anleitungen zum Installieren des Werkzeugs unter Linux, macOS und Windows. (rme)