Genel Bakış
Bazel projesi, ihtiyaçlarınıza yanıt vermek için gelişmeye devam ederken 2024 güncellememizi paylaşmak istiyoruz.
Bu yol haritasında, mevcut girişimler ve Bazel geliştirmenin geleceğiyle ilgili tahminler açıklanmaktadır. Böylece, mevcut öncelikler ve devam eden projeler hakkında bilgi edinebilirsiniz.
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: harici bağımlılık yönetim sistemi
Bzlmod, geçişli bağımlılıkları otomatik olarak çözerek projelerin hızlı ve kaynak açısından verimli kalırken ölçeklendirilmesine olanak tanır.
Bazel 8'de WORKSPACE desteğini varsayılan olarak devre dışı bırakacağız (--enable_workspace
kullanarak etkinleştirmeye devam edebileceksiniz); Bazel 9'da ise WORKSPACE desteği kaldırılacak. Bazel 7.1'den itibaren --noenable_workspace
ayarını yeni davranışı etkinleştirmek için belirleyebilirsiniz.
Bazel 8.0, Bazel'in harici bağımlılık yönetimi işlevinde aşağıdakiler de dahil olmak üzere çeşitli iyileştirmeler içerecek:
- WORKSPACE işlevini tamamen devre dışı bırakmak için yeni işaret
--enable_workspace
,false
olarak ayarlanabilir. - Yeni dizin izleme API'si (Bazel 7.1'de kullanıma sunulan #21435'e bakın).
- 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 gönderildi)
- Geliştirilmiş bir paylaşılan depolama alanı önbelleği (#12227 konusuna bakın).
- Tedarikçi ve çevrimdışı mod desteği: Kullanıcıların önceden indirilmiş bağımlılıklarla derlemeleri çalıştırmasına olanak tanır (#19563 konusuna bakın).
- Kilit dosyalarında birleştirme çakışmaları azaltıldı (#20396).
- Segmentlere ayrılmış MODULE.bazel (#17880)
- Modül uzantısı tarafından oluşturulan deposunun geçersiz kılınmasına izin ver (#19301)
- İyileştirilmiş dokümanlar (ör. #18030, #15821), taşıma kılavuzu ve taşıma araçları.
Uzaktan yürütme iyileştirmeleri
--jobs
işaretiyle paralelliği artırarak uzaktan yürütmeyi hızlandıran eşzamansız yürütme desteği eklendi.- Yeni bir kompakt yürütme günlüğüyle önbelleğe alma hatalarını daha kolay ayıklayın. Bu günlük, boyutunu 100 kat ve çalışma zamanı yükündeki fazlalığı önemli ölçüde azaltır (#18643 konusuna bakın).
- Disk önbelleği için çöp toplamayı uygulayın (#5139 konusuna bakın).
- İsteğe bağlı derleme çıktılarının isteğe bağlı olarak indirilmesine izin vermek için uzaktan çıkış hizmetini uygulayın (#20933 bölümüne bakın).
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ı tamamlandı. Bu çalışma, Bazel kullanıcılarının ve kural yazarlarının şunları yapmasına olanak tanır:
- Kuralları Bazel'den bağımsız olarak güncelleyin.
- Gerekirse kuralları güncelleyin ve özelleştirin.
Kural kümelerinin yeni konumu bazelbuild/rules_android
,
rules_cc
, rules_java
, rules_python
ve google/protobuf
olacaktır. rules_proto
desteği sonlandırılacak.
Bazel 8, daha önce ikili dosyanın parçası olan kural kümelerini depolarından otomatik olarak kullanacak geçici bir taşıma işareti sağlar. Bu kural kümelerinin tüm kullanıcılarının, sonunda kendi depolarına bağımlı olması ve bunları hiçbir zaman Bazel'in parçası olmayan diğer kural kümelerine benzer şekilde yüklemesi beklenir.
Bazel 8, mevcut genişleyen kuralları ve alt kural API'lerini de iyileştirecek ve deneysel olmayan olarak işaretleyecektir.
Starlark iyileştirmeleri
- Sembolik makrolar, makro yazmanın kullanıcılara, makro yazarlarına ve araçlara daha uygun olan yeni bir yoludur.
BUILD
Bazel'in yalnızca sınırlı bilgi sahibi olduğu eski makrolara kıyasla sembolik makrolar, kullanıcıların yaygın hatalardan kaçınmasına ve en iyi uygulamaları uygulamasına yardımcı olur. - Paket sonlandırıcılar, özel paket doğrulama mantığı için birinci sınıf destek eklemek üzere önerilen bir özelliktir. Bu bilgiler,
native.existing_rules()
desteğini sonlandırmamıza yardımcı olmak için sağlanmıştır.
Yapılandırılabilirlik
- Çıkış yolu eşleme istikrar kazanmaya devam ediyor: Geçiş kullanan kural tasarımcıları için daha iyi uzak önbelleğe alma performansı ve derleme hızı sunuyor.
- Belirli bir
--platforms
için uygun derleme işaretlerini otomatik olarak ayarlama. - Proje tarafından desteklenen işaret kombinasyonlarını tanımlayın ve bazelrcs ayarlamak zorunda 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 - minimize retained data structures
Bazel, hızlı artımlı derlemeler için RAM'de çok fazla durum bilgisi tutar. Ancak geliştiriciler genellikle kaynak dosyaların küçük bir alt kümesini değiştirir (ör. harici bağımlılıklardan neredeyse hiçbirini). Skyfocus ile Bazel, aynı hızlı artımlı derleme deneyimini sunmaya devam ederken gereksiz artımlı durumu bırakmanın ve Bazel'in bellek ayak izini azaltmanın deneysel bir yolunu sunacaktır.
İlk kapsam, yalnızca tutulan yığın metriğini iyileştirmeyi amaçlar. En yüksek yığın azaltma olasılığı vardır ancak ilk kapsama dahil edilmemiştir.
Çeşitli
- Android uygulamalarını artımlı olarak dağıtmak için daha basit ve daha iyi yönetilen bir yaklaşım olan mobil yükleme v3.
- Depo önbellekleri ve Bazel'in
install_base
için çöp toplama. - Korumalı alanla ilgili ek yük azaltıldı.
Bazel-JetBrains* IntelliJ IDEA desteği
En son JetBrains eklentisi sürümünü desteklemek için artımlı IntelliJ eklentisi güncellemeleri.
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.
*Telif hakkı © 2022 JetBrains s.r.o. JetBrains ve IntelliJ, JetBrains s.r.o. şirketinin tescilli ticari markalarıdır.