Seiring dengan terus berkembangnya Bazel sebagai respons terhadap kebutuhan Anda, kami ingin membagikan info terbaru tentang rencana jangka panjang kami untuk tahun 2025.
Kami berencana menghadirkan dukungan jangka panjang (LTS) Bazel 9.0 kepada Anda pada akhir tahun 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 menghapus fungsi WORKSPACE sepenuhnya, 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 kualitas panduan dan alat migrasi kami.
Selain itu, kami berencana menerapkan cache repositori bersama yang ditingkatkan (lihat #12227) dengan pembersihan sampah memori, dan dapat melakukan backport 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 Android, Java, Python, dan Proto rules dari codebase Bazel ke aturan Starlark di repositori yang sesuai. Untuk mempermudah migrasi, kami menerapkan fitur pemuatan otomatis di Bazel, yang dapat dikontrol dengan tanda --incompatible_autoload_externally dan --incompatible_disable_autoloads_in_main_repo.
Dengan Bazel 9, kami berupaya 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 mem-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 pengetikan eksperimental, mirip dengan anotasi pengetikan Python. Kami berharap sistem pengetikan akan stabil setelah Bazel 9 diluncurkan.
Kemampuan Konfigurasi
Fokus utama kami adalah mengurangi biaya dan kebingungan terkait flag build.
Kami sedang 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
bersifat eksperimental di 9.0, tetapi kami menerima masukan yang berguna.
Pencakupan tanda memungkinkan Anda menghapus tanda Starlark saat tanda tersebut keluar dari batas project, sehingga tidak merusak penge-cache-an pada dependensi transitif yang tidak memerlukannya. Hal ini membuat build yang menggunakan transisi lebih murah dan lebih cepat. Berikut contohnya. Kami memperluas ide untuk mengontrol flag mana yang diteruskan ke konfigurasi eksekusi dan mempertimbangkan dukungan yang lebih fleksibel seperti Starlark kustom untuk menentukan tepi dependensi mana yang harus meneruskan flag.
Kami memprioritaskan upaya untuk memindahkan tanda bahasa bawaan dari Bazel dan ke Starlark, tempat tanda 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 mendiskusikan fitur yang direncanakan, bergabunglah ke server Slack komunitas di slack.bazel.build.
Roadmap ini dimaksudkan untuk membantu memberi tahu komunitas tentang niat tim terkait Bazel 9.0. Prioritas dapat berubah sebagai respons terhadap masukan developer dan pelanggan, atau peluang pasar baru.