Bazel yol haritası

Sorun bildir Kaynağı göster

Genel bakış

Bazel projesi, ihtiyaçlarınıza göre gelişmeye devam ederken 2024 güncellememizi paylaşmak istiyoruz.

Bu yol haritası, Bazel'ın geleceğine yönelik mevcut girişimleri ve tahminleri açıklayarak size mevcut öncelikler ve devam eden projeler hakkında bilgi verir.

Bazel 8.0 Sürümü

Bazel 8.0 uzun süreli desteğini (LTS) 2024'ün sonlarında kullanıma sunmayı planlıyoruz. Aşağıdaki özelliklerin uygulanması planlanmaktadır.

Bzlmod: dış bağımlılık yönetimi sistemi

Bzlmod geçişli bağımlılıkları otomatik olarak çözerek projelerin hızlı ve kaynak verimliliğinden ödün vermeden ölçeklendirilmesine imkan tanır.

Bazel 8'de WORKSPACE desteğini varsayılan olarak devre dışı bırakacağız (--enable_workspace kullanılarak etkinleştirilebilir); Bazel 9 WORKSPACE desteği kaldırılacak. Bazel 7.1'den başlayarak yeni davranışı etkinleştirmek için --noenable_workspace ayarlayabilirsiniz.

Bazel 8.0, Bazel'in harici bağımlılık yönetimi işlevinde aşağıdakiler de dahil olmak üzere çeşitli geliştirmeler içerecektir:

  • WORKSPACE işlevini tamamen devre dışı bırakmak için yeni --enable_workspace işareti false olarak ayarlanabilir.
  • Yeni dizin izleme API'si (bkz. Bazel 7.1'de gönderilen #21435).
  • Bağımlılık sürümü güncellemelerinde işlemlerin daha iyi önbelleğe alınabilir olması için standart kod deposu adları oluşturmaya yönelik iyileştirilmiş şema. (#21316, Bazel 7.1 ile gönderilir)
  • İyileştirilmiş bir paylaşılan kod deposu önbelleği (bkz. #12227).
  • Tedarikçi firma ve çevrimdışı mod desteği: Kullanıcıların önceden indirilmiş bağımlılıklara sahip derlemeleri çalıştırmasına olanak tanır (bkz. #19563).
  • Kilit dosyalarındaki birleştirme çakışmaları azaltıldı (#20396).
  • Segmentlere ayrılmış MODULE.bazel (#17880)
  • Modül uzantısı tarafından oluşturulan depoyu geçersiz kılmaya izin ver (#19301)
  • İyileştirilmiş belgeler (ör. #18030, #15821) ile taşıma kılavuzu ve taşıma araçları.

Uzaktan yürütme iyileştirmeleri

  • --jobs işaretiyle artan paralellik sayesinde uzaktan yürütmeyi hızlandırarak eşzamansız yürütme desteği eklendi.
  • Yeni bir kompakt yürütme günlüğü, boyutunu 100 kat ve çalışma zamanı ek yükünü önemli ölçüde azaltarak önbellekte eksikliklerin giderilmesini kolaylaştırın (bkz. #18643).
  • Disk önbelleği için atık toplama işlemini uygulayın (#5139 bölümüne bakın).
  • Rastgele derleme çıkışlarının geç indirilmesine izin vermek için uzak çıkış hizmeti uygulayın (bkz. #20933).

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

Android, C++, Java ve Python kural kümelerinin özel depolara taşınması ve bunların Bazel sürümlerinden ayrılması. Bu çaba, Bazel kullanıcılarının ve kural yazarlarının

  • Kuralları Bazel'dan bağımsız olarak güncelleyin.
  • Kuralları gerektiği şekilde güncelleyin ve özelleştirin.

Kural gruplarının yeni konumu bazelbuild/rules_android, rules_cc, rules_java, rules_python ve google/protobuf olacak. rules_proto desteği sonlandırılacak.

Bazel 8, daha önce depolarındaki ikili programın parçası olan kuralları otomatik olarak kullanacak geçici bir taşıma işareti sağlar. Bu kural kümelerinin tüm kullanıcılarının, nihayetinde depolarına bağımlı hale gelmeleri ve bunları, hiçbir zaman Bazel'ın parçası olmayan diğer kural kümelerine benzer şekilde yüklemeleri beklenir.

Bazel 8 ayrıca mevcut genişletme kurallarını ve alt kural API'lerini iyileştirecek ve bunları deneysel değil olarak işaretleyecektir.

Starlark ile ilgili iyileştirmeler

  • Sembolik Makrolar, makro yazmanın yeni bir yoludur ve BUILD kullanıcılarına, makro yazarlarına ve araçlara daha yakındır. Bazel'ın hakkında sınırlı bilgiye sahip olduğu eski makrolarla karşılaştırıldığında, sembolik makrolar kullanıcıların yaygın sorunlardan kaçınmasına ve en iyi uygulamaları hayata geçirmesine yardımcı olur.
  • Paket sonlandırıcılar, özel paket doğrulama mantığı için birinci sınıf destek eklemek amacıyla önerilen bir özelliktir. Bu önerilerin amacı, native.existing_rules() özelliğini kullanımdan kaldırmamıza yardımcı olmaktır.

Yapılandırılabilirlik

  • Geçişleri kullanan kural tasarımcıları için daha iyi uzaktan önbellek performansı ve derleme hızı vaat eden çıkış yolu eşlemesi dengeli olmaya devam ediyor.
  • Belirli bir --platforms için uygun derleme bayraklarını otomatik olarak ayarlayın.
  • Proje tarafından desteklenen işaret kombinasyonlarını tanımlayın ve Bazelrcs ayarlamak zorunda kalmadan varsayılan flag'lerle otomatik olarak hedefler oluşturun.
  • Derleme işareti her değiştiğinde derleme analizini yeniden yapmayın.

Project SkyFocus - saklanan veri yapılarını en aza indirme

Bazel, hızlı artımlı derlemeler için RAM'de birçok durum içerir. Bununla birlikte, geliştiriciler genellikle kaynak dosyaların küçük bir alt kümesini değiştirir (ör. neredeyse hiçbir zaman dış bağımlılıklar). SkyFocus sayesinde Bazel, aynı hızlı artımlı derleme deneyimini sağlarken gereksiz artımlı durumu bırakma ve Bazel'ın bellek ayak izini azaltmanın deneysel bir yolunu sunacak.

İlk kapsam, yalnızca elde tutulan yığın metriğini iyileştirmeyi amaçlar. En yüksek yığın azaltma olasılığı mevcuttur ancak başlangıç kapsamına dahil değildir.

Çeşitli

  • Android uygulamalarını aşamalı olarak dağıtmak için daha basit ve daha iyi yönetilen bir yaklaşım olan mobil yükleme v3.
  • Depo önbellekleri ve Bazel'ın install_base için atık toplama.
  • Korumalı alana alma ek yükü azaltıldı.

Bazel-JetBrains* IntelliJ IDEA desteği

En son JetBrains eklenti sürümünü destekleyen ek IntelliJ eklenti güncellemeleri.

Bu yol haritası, hedefleri gösterir ve garanti olarak kabul edilmemelidir. Öncelikler, geliştirici ve müşteri geri bildirimleri veya yeni pazar fırsatları nedeniyle değişebilir.

Bu yol haritasındaki güncellemeler de dahil olmak üzere yeni özelliklerden haberdar olmak için Google Grubu topluluğuna katılın.

*Telif hakkı © 2022 JetBrains s.r.o. JetBrains ve IntelliJ, JetBrains s.r.o'nun tescilli ticari markalarıdır