Bazel, ihtiyaçlarınıza yanıt vermek için gelişmeye devam ederken 2025 yol haritası güncellememizi paylaşmak istiyoruz.
Bazel 9.0 uzun süreli desteğini 2025'in sonlarında kullanıma sunmayı planlıyoruz.
Bzlmod'a tam geçiş
Bzlmod, Bazel 7'den beri Bazel'deki standart harici bağımlılık sistemidir ve eski WORKSPACE sisteminin yerini almıştır. Mart 2025 itibarıyla Bazel Merkezi Kaydı 650'den fazla modül barındırıyor.
Bazel 9 ile birlikte WORKSPACE işlevini tamamen kaldıracağız ve Bazel'de harici bağımlılıkları eklemenin tek yolu Bzlmod olacak. Topluluğun taşıma maliyetini en aza indirmek için taşıma rehberimizi ve araçlarımızı daha da iyileştirmeye odaklanacağız.
Ayrıca, iyileştirilmiş bir ortak depolama alanı önbelleği (#12227'ye bakın) uygulamayı ve bunu Bazel 8'e geri taşımayı planlıyoruz. Bazel Merkezi Kaydı, SLSA tasdiklerinin doğrulanmasını da destekler.
Android, C++, Java, Python ve Proto kurallarının taşınması
Bazel 8 ile Android, Java, Python ve Proto kurallarına yönelik desteği Bazel kod tabanından ilgili depolardaki Starlark kurallarına taşıdık. Taşıma işlemini kolaylaştırmak için Bazel'e otomatik yükleme özelliklerini uyguladık. Bu özellikler, --incompatible_autoload_externally ve --incompatible_disable_autoloads_in_main_repo işaretleriyle kontrol edilebilir.
Bazel 9 ile, varsayılan olarak otomatik yüklemeleri devre dışı bırakmayı ve her projenin BUILD dosyalarında gerekli kuralları açıkça yüklemesini zorunlu kılmayı amaçlıyoruz.
C++ dil desteğinin büyük bir kısmını Starlark'ta yeniden yazacağız, Bazel ikilisinden ayırıp /rules_cc deposuna taşıyacağız. Bu, Bazel'in parçası olarak kalan son büyük dil desteğidir.
Ayrıca, C++, Java ve Proto kurallarına yönelik birim testlerini Starlark'a taşıyor ve kural yazarlarının hızını artırmak için bunları uygulamanın yanındaki depolara taşıyoruz.
Starlark iyileştirmeleri
Bazel, sembolik makroları tembel bir şekilde değerlendirebilir. Bu, beyan ettiği hedefler istenmiyorsa sembolik bir makronun çalışmayacağı anlamına gelir. Bu da çok büyük paketlerin performansını iyileştirir.
Starlark, Python'un tür ek açıklamalarına benzer bir deneysel tür sistemine sahip olacak. Tür sisteminin, Bazel 9 kullanıma sunulduktan sonra istikrar kazanmasını bekliyoruz.
Yapılandırılabilirlik
Ana odak noktamız, derleme işaretlerinin maliyetini ve kafa karışıklığını azaltmaktır.
Kullanıcıların hangi derleme ve test işaretlerini nereye ayarlayacağını bilmesi gerekmeyen yeni bir proje yapılandırma modeliyle denemeler yapıyoruz. Bu nedenle $ bazel test //foo
, foo
projesinin politikasına göre doğru işaretleri otomatik olarak ayarlar. Bu özellik, 9.0 sürümünde deneysel olarak kalacak olsa da yol gösterici geri bildirimler memnuniyetle karşılanır.
Bayrak kapsamı, proje sınırlarını terk eden Starlark bayraklarını kaldırarak bu bayraklara ihtiyaç duymayan geçişli bağımlılıklarda önbelleğe almayı bozmalarını önler. Bu sayede, geçişlerin kullanıldığı derlemeler daha ucuz ve daha hızlı olur. Aşağıda buna dair bir örnek verilmiştir. Hangi işaretlerin yürütme yapılandırmalarına iletileceğini kontrol etme fikrini genişletiyoruz ve hangi bağımlılık kenarlarının işaretleri iletmesi gerektiğini belirlemek için özel Starlark gibi daha da esnek destekleri değerlendiriyoruz.
Yerleşik dil işaretçilerini Bazel'den çıkarıp ilgili kural tanımlarıyla birlikte bulunabilecekleri Starlark'a taşımaya öncelik veriyoruz.
Uzaktan yürütme iyileştirmeleri
Eşzamansız yürütme desteğini ekleyerek paralelliği artırarak uzaktan yürütmeyi hızlandırmayı planlıyoruz.
Yol haritasındaki güncellemeleri takip etmek ve planlanan özellikleri tartışmak için slack.bazel.build adresindeki topluluk Slack sunucusuna katılın.
Bu yol haritası, topluluğu ekibin Bazel 9.0 ile ilgili planları hakkında bilgilendirmek için hazırlanmıştır. Öncelikler, geliştirici ve müşteri geri bildirimlerine ya da yeni pazar fırsatlarına göre değişebilir.