Veröffentlichung des Bazel 1.0 Build-Systems

Eingereicht von Freigabe offener Montagewerkzeuge Bazel 1.0, entwickelt von Ingenieuren von Google und verwendet, um die meisten internen Projekte des Unternehmens zusammenzustellen. Release 1.0 markierte den Übergang zur semantischen Release-Versionierung und zeichnete sich auch durch die Einführung einer großen Anzahl von Änderungen aus, die die Abwärtskompatibilität beeinträchtigten. Projektnummer vertrieben von lizenziert unter Apache 2.0.

Bazel erstellt das Projekt, indem er die erforderlichen Compiler und Tests ausführt. Das Build-System ist von Grund auf darauf ausgelegt, Google-Projekte optimal zu erstellen, einschließlich sehr großer Projekte und Projekte, die Code in mehreren Programmiersprachen enthalten, umfangreiche Tests erfordern und für mehrere Plattformen erstellt wurden. Es unterstützt das Erstellen und Testen von Code in Java, C++, Objective-C, Python, Rust, Go und vielen anderen Sprachen sowie das Erstellen mobiler Anwendungen für Android und iOS. Die Verwendung einzelner Assembly-Dateien für verschiedene Plattformen und Architekturen wird unterstützt; beispielsweise kann eine Assembly-Datei ohne Änderungen sowohl für ein Serversystem als auch für ein mobiles Gerät verwendet werden.

Zu den besonderen Merkmalen von Bazel zählen die hohe Geschwindigkeit, Zuverlässigkeit und Wiederholbarkeit des Montageprozesses. Um eine hohe Build-Geschwindigkeit zu erreichen, nutzt Bazel aktiv Caching- und Parallelisierungstechniken für den Build-Prozess. BUILD-Dateien müssen alle Abhängigkeiten vollständig definieren, auf deren Grundlage Entscheidungen getroffen werden, Komponenten nach vorgenommenen Änderungen neu zu erstellen (nur geänderte Dateien werden neu erstellt) und den Montageprozess zu parallelisieren. Die Werkzeugausstattung gewährleistet außerdem eine wiederholbare Montage, d. h. Das Ergebnis der Erstellung eines Projekts auf dem Computer des Entwicklers ist völlig identisch mit dem Ergebnis der Erstellung auf Systemen von Drittanbietern, beispielsweise auf Continuous-Integration-Servern.

Im Gegensatz zu Make und Ninja verwendet Bazel einen übergeordneten Ansatz zum Erstellen von Assemblerregeln, bei dem, anstatt die Bindung von Befehlen an die zu erstellenden Dateien zu definieren, abstraktere vorgefertigte Blöcke verwendet werden, wie zum Beispiel „Erstellen einer ausführbaren Datei in“. C++“, „Erstellen einer Bibliothek in C++“ oder „Durchführen eines Tests für C++“ sowie Identifizieren von Ziel- und Build-Plattformen. In der BUILD-Textdatei werden die Projektkomponenten als eine Reihe von Bibliotheken, ausführbaren Dateien und Tests beschrieben, ohne auf die Ebene einzelner Dateien und Compiler-Aufrufbefehle näher einzugehen. Zusätzliche Funktionalität wird durch den Mechanismus zum Anschließen von Erweiterungen implementiert.

Source: opennet.ru

Kommentar hinzufügen