Seiring dengan terus berkembangnya Bazel sebagai respons terhadap kebutuhan Anda, kami ingin membagikan update roadmap 2025.
Transisi penuh ke Bzlmod
Bzlmod telah menjadi sistem dependensi eksternal standar di Bazel sejak Bazel 7, menggantikan sistem WORKSPACE lama. Mulai Maret 2025, Bazel Central Registry menghosting lebih dari 650 modul.
Dengan Bazel 9, kami akan sepenuhnya menghapus fungsi WORKSPACE, dan Bzlmod akan menjadi satu-satunya cara untuk memperkenalkan dependensi eksternal di Bazel. Untuk meminimalkan biaya migrasi bagi komunitas, kami akan berfokus untuk lebih meningkatkan panduan dan alat migrasi kami.
Selain itu, kami bertujuan untuk menerapkan cache repositori bersama yang ditingkatkan (lihat #12227) dengan pengumpulan sampah, dan mungkin akan mem-backport-nya ke Bazel 8. Bazel Central Registry juga akan mendukung verifikasi pengesahan SLSA.
Migrasi aturan Android, C++, Java, Python, dan Proto
Dengan Bazel 8, kami telah memigrasikan dukungan untuk aturan Android, Java, Python, dan Proto dari codebase Bazel ke aturan Starlark di repositori yang sesuai. Untuk mempermudah migrasi, kami menerapkan fitur pemuatan otomatis di Bazel, yang dapat dikontrol dengan --incompatible_autoload_externally dan --incompatible_disable_autoloads_in_main_repo flag.
Dengan Bazel 9, kami bertujuan untuk menonaktifkan pemuatan otomatis secara default dan mewajibkan setiap project untuk memuat aturan yang diperlukan secara eksplisit dalam file BUILD.
Kami akan menulis ulang sebagian besar dukungan bahasa C++ ke Starlark, melepaskannya dari biner Bazel dan memindahkannya ke repositori /rules_cc. Ini adalah dukungan bahasa utama terakhir yang masih menjadi bagian dari Bazel.
Kami juga melakukan porting pengujian unit untuk aturan C++, Java, dan Proto ke Starlark, memindahkannya ke repositori di samping implementasi untuk meningkatkan kecepatan penulis aturan.
Peningkatan Starlark
Bazel akan memiliki kemampuan untuk mengevaluasi makro simbolis secara lambat. Artinya, makro simbolis tidak akan berjalan jika target yang dideklarasikannya tidak diminta, sehingga meningkatkan performa untuk paket yang sangat besar.
Starlark akan memiliki sistem jenis eksperimental, yang mirip dengan anotasi jenis Python. Kami berharap sistem jenis akan stabil setelah Bazel 9 diluncurkan.
Kemampuan konfigurasi
Fokus utama kami adalah mengurangi biaya dan kebingungan terkait flag build.
Kami bereksperimen dengan model konfigurasi project
baru yang tidak mengharuskan pengguna mengetahui flag build
dan pengujian mana yang harus ditetapkan di mana. Jadi, $ bazel test //foo otomatis menetapkan
flag yang tepat berdasarkan kebijakan project foo. Fitur ini kemungkinan akan tetap eksperimental di 9.0, tetapi masukan yang memberikan panduan akan sangat membantu.
Pencakupan flag memungkinkan Anda menghapus flag Starlark saat meninggalkan batas project, sehingga tidak merusak penyimpanan dalam cache pada dependensi transitif yang tidak memerlukannya. Hal ini membuat build yang menggunakan transisi menjadi lebih murah dan lebih cepat. Berikut contohnya. Kami memperluas ide untuk mengontrol flag mana yang diterapkan ke konfigurasi eksekusi dan mempertimbangkan dukungan yang lebih fleksibel seperti Starlark kustom untuk menentukan edge dependensi mana yang harus menerapkan flag.
Kami memprioritaskan upaya untuk memindahkan flag bahasa bawaan dari Bazel ke Starlark, tempat flag tersebut dapat berada dengan definisi aturan terkait.
Peningkatan eksekusi jarak jauh
Kami berencana menambahkan dukungan untuk eksekusi asinkron, yang akan mempercepat eksekusi jarak jauh dengan meningkatkan paralelisme.
Untuk mengikuti update roadmap dan membahas fitur yang direncanakan, bergabunglah ke server Slack komunitas di slack.bazel.build.
Roadmap ini dimaksudkan untuk membantu memberi tahu komunitas tentang niat tim untuk Bazel 9.0. Prioritas dapat berubah sebagai respons terhadap masukan developer dan pelanggan, atau terhadap peluang pasar baru.