Veröffentlichung des Open-Source-Build-Tools , entwickelt von Ingenieuren von Google und genutzt für den Aufbau der meisten internen Projekte des Unternehmens. Die Version 1.0 markierte den Übergang zu semantischen Versionierungspraktiken und ist auch bemerkenswert für die Einführung einer Vielzahl von Änderungen, die die Abwärtskompatibilität beeinträchtigen. Der Quellcode des Projekts unter der Apache 2.0-Lizenz.
Bazel ermöglicht den Projektaufbau, indem es die notwendigen Compiler und Tests ausführt. Das Build-System ist ursprünglich für die optimale Erstellung von Google-Projekten konzipiert, einschließlich sehr großer Projekte und solcher, die Code in mehreren Programmiersprachen enthalten, die umfangreiche Tests erfordern und für mehrere Plattformen erstellt werden. Es wird die Erstellung und das Testen von Code in Java, C++, Objective-C, Python, Rust, Go und vielen anderen Sprachen unterstützt, sowie die Erstellung von mobilen Anwendungen für Android und iOS. Es unterstützt die Verwendung einheitlicher Build-Dateien für verschiedene Plattformen und Architekturen, sodass eine einzige Build-Datei unverändert sowohl für serverseitige Systeme als auch für mobile Geräte verwendet werden kann.
Zu den Hauptmerkmalen von Bazel gehören hohe Geschwindigkeit, Zuverlässigkeit und die Wiederholbarkeit des Build-Prozesses. Um die Build-Geschwindigkeit zu maximieren, nutzt Bazel aktiv Techniken zur Cache-Verwendung und zur Parallelisierung des Build-Prozesses. In BUILD-Dateien sind alle Abhängigkeiten vollständig definiert, auf deren Basis Entscheidungen zur Wiederherstellung der Komponenten nach Änderungen getroffen werden (es werden nur die geänderten Dateien neu gebaut) und der Build-Prozess parallelisiert wird. Das Werkzeug garantiert ebenfalls die Wiederholbarkeit des Builds, d.h. das Ergebnis des Projekts auf dem Rechner des Entwicklers wird vollständig mit dem Build auf externen Systemen, wie z.B. Continuous Integration-Servern, übereinstimmen.
Im Gegensatz zu Make und Ninja verfolgt Bazel einen höherwertigen Ansatz zur Erstellung von Build-Regeln. Anstatt Befehlsbindungen an die zu erstellenden Dateien zu definieren, verwendet es abstraktere Bausteine wie "Kompilierung einer ausführbaren Datei in C++", "Erstellung einer C++-Bibliothek" oder "Ausführung eines Tests für C++" sowie die Definition von Ziel- und Build-Plattformen. In der BUILD-Datei werden die Projektkomponenten als eine Kombination aus Bibliotheken, ausführbaren Dateien und Tests beschrieben, ohne ins Detail über einzelne Dateien und Compileraufrufe zu gehen. Zusätzliche Funktionalitäten werden über ein Erweiterungsmechanismus bereitgestellt.
Quelle: opennet.ru
