Bazel yol haritası

Genel Bakış

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

Bu yol haritasında, Bazel geliştirmenin geleceğine yönelik mevcut girişimler ve tahminler açıklanarak mevcut öncelikler ve devam eden projeler hakkında bilgi verilir.

Bazel 8.0 sürümü

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

Bzlmod: Harici bağımlılık yönetim sistemi

Bzlmod, geçişli bağımlılıkları otomatik olarak çözer. Böylece projeler hızlı ve kaynak açısından verimli kalırken ölçeklenebilir.

Bazel 8'de WORKSPACE desteğini varsayılan olarak devre dışı bırakacağız (--enable_workspace kullanarak etkinleştirmek yine mümkün olacak). Bazel 9'da ise WORKSPACE desteği kaldırılacak. Bazel 7.1'den itibaren, yeni davranışı etkinleştirmek için --noenable_workspace değerini 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çerecek:

  • Yeni --enable_workspace işareti, WORKSPACE işlevini tamamen devre dışı bırakmak için false olarak ayarlanabilir.
  • Yeni dizin izleme API'si (bkz. #21435, Bazel 7.1'de kullanıma sunuldu).
  • Bağımlılık sürümü güncellemelerinde işlemlerin daha iyi önbelleğe alınabilmesi için standart depo adları oluşturma şeması iyileştirildi. (#21316, Bazel 7.1'de kullanıma sunuldu)
  • Geliştirilmiş paylaşılan depo önbelleği (bkz. #12227).
  • Sağlayıcı ve çevrimdışı mod desteği: Kullanıcıların önceden indirilmiş bağımlılıklarla derleme çalıştırmasına olanak tanır (bkz. #19563).
  • Kilit dosyalarında birleştirme çakışmaları azaltıldı ( (#20396).
  • Segmentlere ayrılmış MODULE.bazel (#17880)
  • Modül uzantısı tarafından oluşturulan deponun geçersiz kılınmasına izin ver (#19301)
  • Geliştirilmiş dokümanlar (ör. #18030, #15821) ve taşıma kılavuzu ile taşıma araçları.

Uzaktan yürütme iyileştirmeleri

  • Eşzamansız yürütme desteği eklenerek --jobs işaretiyle paralellik artırıldı ve uzaktan yürütme hızlandırıldı.
  • Yeni bir kompakt yürütme günlüğüyle önbellek isabeti hatalarını ayıklamayı kolaylaştırın. Bu günlük, boyutunu 100 kat ve çalışma zamanı ek yükünü önemli ölçüde azaltır (bkz. #18643).
  • Disk önbelleği için atık toplamayı uygulayın (bkz. #5139).
  • İsteğe bağlı olarak derleme çıktılarını indirmeye olanak tanıyan uzaktan çıktı hizmetini 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 Bazel sürümlerinden ayrılması Bu çalışma, Bazel kullanıcılarının ve kural yazarlarının

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

Kural kümelerinin 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 ikilinin bir parçası olan kural kümelerini depolarından otomatik olarak kullanacak geçici bir taşıma işareti sağlayacak. Bu kural kümelerinin tüm kullanıcılarının sonunda depolarına bağlı kalması ve bunları Bazel'in hiçbir zaman parçası olmamış diğer kural kümelerine benzer şekilde yüklemesi beklenir.

Bazel 8, mevcut genişletme kurallarını ve alt kural API'lerini de iyileştirip deneysel olmayan olarak işaretleyecek.

Starlark iyileştirmeleri

  • Sembolik makrolar, BUILD kullanıcıları, makro yazarları ve araçları için daha kolay bir makro yazma yöntemidir. Bazel'in yalnızca sınırlı bilgiye sahip olduğu eski makrolarla karşılaştırıldığında, sembolik makrolar kullanıcıların yaygın tuzaklardan kaçınmasına ve en iyi uygulamaları zorunlu kılmalarına yardımcı olur.
  • Paket sonlandırıcıları, özel paket doğrulama mantığı için birinci sınıf destek eklemeye yönelik önerilen bir özelliktir. Bu bilgiler, native.existing_rules() desteğini sonlandırmamıza yardımcı olmak için kullanılır.

Yapılandırılabilirlik

  • Çıkış yolu eşlemesi kararlılığını koruyor: Geçişleri kullanan kural tasarımcıları için daha iyi uzaktan önbellek performansı ve derleme hızı sunuyor.
  • Belirli bir --platforms için uygun derleme işaretlerini otomatik olarak ayarlayın.
  • Proje tarafından desteklenen işaret kombinasyonlarını tanımlayın ve bazelrc'leri ayarlamanıza gerek kalmadan varsayılan işaretlerle hedefleri otomatik olarak oluşturun.
  • Derleme işaretleri 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 çok fazla durum tutar. Ancak geliştiriciler genellikle kaynak dosyaların küçük bir alt kümesini değiştirir (ör. harici bağımlılıklardan biri neredeyse hiçbir zaman değiştirilmez). Skyfocus ile Bazel, gereksiz artımlı durumu bırakmak ve Bazel'in bellek kullanımını azaltmak için deneysel bir yol sunarken aynı zamanda hızlı artımlı derleme deneyimini de sağlamaya devam edecek.

İlk kapsam yalnızca saklanan yığın metriğini iyileştirmeyi amaçlar. En yüksek yığın azaltma mümkündür ancak ilk kapsamda yer almaz.

Çeşitli

  • Android uygulamalarını kademeli olarak dağıtmak için daha basit ve daha iyi bakımı yapılan bir yaklaşım olan mobil yükleme v3.
  • Depo önbellekleri ve Bazel'in install_base için çöp toplama.
  • Sandbox ile ilgili ek yük azaltıldı.

Bazel-JetBrains* IntelliJ IDEA desteği

En yeni JetBrains eklenti sürümünü desteklemek için IntelliJ eklentisinde artımlı güncellemeler.

Bu yol haritası, hedeflerin anlık görüntüsünü sunar ve garanti olarak kabul edilmemelidir. Öncelikler, geliştirici ve müşteri geri bildirimlerine veya yeni pazar fırsatlarına göre değişebilir.

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

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