Bazel yol haritası

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bazel, ihtiyaçlarınıza yanıt verecek şekilde gelişmeye devam ederken 2025 yol haritası güncellememizi paylaşmak istiyoruz.

2025'in sonlarında Bazel 9.0 uzun süreli destek (LTS) sürümünü 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 Central Registry'de 650'den fazla modül barındırılıyor.

Bazel 9 ile WORKSPACE işlevselliğini tamamen kaldıracağız ve Bzlmod, Bazel'e harici bağımlılıkları dahil etmenin tek yolu olacak. Topluluk için taşıma maliyetini en aza indirmek amacıyla taşıma rehberimizi ve aracımızı daha da geliştirmeye odaklanacağız.

Ayrıca, çöp toplama özelliğiyle iyileştirilmiş bir paylaşılan depo önbelleği uygulamayı (bkz. #12227) ve bunu Bazel 8'e geri taşımayı hedefliyoruz. Bazel Central Registry, SLSA onaylarının doğrulanmasını da destekleyecektir.

Android, C++, Java, Python ve Proto kurallarının taşınması

Bazel 8 ile Android, Java, Python ve Proto kuralları için desteği Bazel kod tabanından ilgili depolardaki Starlark kurallarına taşıdık. Taşımayı kolaylaştırmak için Bazel'de 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, otomatik yüklemeleri varsayılan olarak devre dışı bırakmayı ve her projenin gerekli kuralları BUILD dosyalarına açıkça yüklemesini zorunlu kılmayı hedefliyoruz.

C++ dil desteğinin büyük bir kısmını Starlark'a yeniden yazacak, Bazel ikilisinden ayıracak ve /rules_cc deposuna taşıyacağız. Bu, Bazel'in bir parçası olmaya devam eden son büyük dil desteğidir.

Ayrıca, C++, Java ve Proto kuralları için 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ı geç değerlendirebilir. Bu, sembolik bir makronun, bildirdiği hedefler istenmediği takdirde çalışmayacağı anlamına gelir. Bu da çok büyük paketlerde performansı artırır.

Starlark, Python'ın tür açıklamalarına benzer deneysel bir tür sistemine sahip olacak. Tür sisteminin, Bazel 9 kullanıma sunulduktan sonra kararlı hale gelmesini 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şaretlerinin nerede ayarlanacağını bilmesini gerektirmeyen 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 kalmaya devam edecek ancak yol gösterici geri bildirimlerinizden yararlanacağız.

İşaret kapsamı, Starlark işaretleri proje sınırlarının dışına çıktığında bunları kaldırmanıza olanak tanır. Böylece, bu işaretlere ihtiyaç duymayan geçişli bağımlılıklar için önbelleğe alma işlemi bozulmaz. Bu sayede geçişleri kullanan derlemeler daha ucuz ve hızlı hale gelir. Aşağıda bir örnek verilmiştir. Bu fikri, hangi işaretlerin yürütme yapılandırmalarına yayılacağını kontrol edecek şekilde genişletiyoruz ve hangi bağımlılık kenarlarının işaretleri yayması gerektiğini belirlemek için özel Starlark gibi daha da esnek destek seçeneklerini değerlendiriyoruz.

Yerleşik dil işaretlerini Bazel'den Starlark'a taşıma çalışmalarına öncelik veriyoruz. Bu işaretler, Starlark'ta ilgili kural tanımlarıyla birlikte bulunabilir.

Uzaktan yürütme iyileştirmeleri

Eşzamansız yürütme desteği ekleyerek paralelliği artırıp 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 adresinden 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 veya yeni pazar fırsatlarına göre değişebilir.