Bazel membangun proyek dengan menjalankan kompiler dan pengujian yang diperlukan. Sistem pembangunan dirancang dari awal untuk membangun proyek Google secara optimal, termasuk proyek yang sangat besar dan proyek yang berisi kode dalam berbagai bahasa pemrograman, memerlukan pengujian ekstensif, dan dibuat untuk berbagai platform. Ini mendukung pembuatan dan pengujian kode dalam Java, C++, Objective-C, Python, Rust, Go dan banyak bahasa lainnya, serta membangun aplikasi seluler untuk Android dan iOS. Penggunaan file rakitan tunggal untuk platform dan arsitektur berbeda didukung; misalnya, satu file rakitan tanpa perubahan dapat digunakan untuk sistem server dan perangkat seluler.
Di antara ciri khas Bazel adalah kecepatan tinggi, keandalan, dan pengulangan proses perakitan. Untuk mencapai kecepatan build yang tinggi, Bazel secara aktif menggunakan teknik caching dan paralelisasi untuk proses build. File BUILD harus sepenuhnya mendefinisikan semua dependensi, berdasarkan keputusan yang dibuat untuk membangun kembali komponen setelah perubahan dilakukan (hanya file yang diubah yang dibangun kembali) dan memparalelkan proses perakitan. Perkakas juga memastikan perakitan berulang, mis. hasil pembangunan proyek di mesin pengembang akan sepenuhnya identik dengan pembangunan di sistem pihak ketiga, seperti server integrasi berkelanjutan.
Tidak seperti Make dan Ninja, Bazel menggunakan pendekatan tingkat yang lebih tinggi untuk membuat aturan perakitan, di mana, alih-alih menentukan pengikatan perintah ke file yang sedang dibuat, blok siap pakai yang lebih abstrak digunakan, seperti βmembuat file yang dapat dieksekusi di C++β, βmembangun perpustakaan di C++" atau "menjalankan pengujian untuk C++", serta mengidentifikasi target dan membangun platform. Dalam file teks BUILD, komponen proyek digambarkan sebagai sekumpulan perpustakaan, file yang dapat dieksekusi, dan pengujian, tanpa merinci pada tingkat file individual dan perintah panggilan kompiler. Fungsionalitas tambahan diimplementasikan melalui mekanisme untuk menghubungkan ekstensi.
Sumber: opennet.ru