Bazel yol haritası

Genel Bakış

Bazel topluluğumuzun yeni yılını kutlarız. Yeni yılda 2023 yol haritamızın ayrıntılarını paylaşmayı planlıyoruz. Geçen yıl, Bazel 6.0 planlarımızı içeren 2022 yılı yol haritamızı yayınlamıştık. Yol haritasının, derleme araçlarıyla ilgili ihtiyaçlarınız konusunda size bilgi verdiğini umuyoruz. Bazel projesi, ihtiyaçlarınıza yanıt verecek şekilde gelişmeye devam ederken 2023 güncellememizi sizinle paylaşmak istiyoruz.

Bu değişikliklerle, açık kaynak topluluğumuzu bilgilendirmeyi ve dahil etmeyi amaçlıyoruz. Bu yol haritasında, mevcut girişimler ve Bazel geliştirmenin geleceğine dair tahminler açıklanarak mevcut öncelikler ve devam eden projeler hakkında bilgi verilir.

Bazel 7.0 sürümü

2023'ün sonlarında Bazel 7.0 uzun süreli destek (LTS) sürümünü kullanıma sunmayı planlıyoruz. Bazel 7.0 ile devam eden birçok öğeyi sunmayı ve kullanıcılarımızın talep ettiği özellik iyileştirmeleri üzerinde çalışmaya devam etmeyi hedefliyoruz.

Platformlar arası daha iyi önbellek paylaşımı

Özellikle Java/Kotlin ve Android geliştirme için önbelleğe alınmış yapılar'ın farklı yerel (Mac) ve uzak (Linux) derleme platformlarında paylaşılmasını sağlayarak daha iyi performans ve verimli önbellek kullanımı sunar.

Bazel ile Android uygulaması derleme

Manifest & Resource Merger, Android uygulama geliştiricilerin tools:node="merge" gibi daha yeni manifest birleştirme özelliklerini kullanabilmesi için 30.1.3 sürümüne güncellendi.

Uzaktan yürütme iyileştirmeleri

Bazel 7.0, eşzamansız yürütme desteği sunar ve --jobs işaretiyle artırılmış paralellik sayesinde uzaktan yürütmeyi hızlandırı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 7.0, Bazel'in harici bağımlılık yönetimi işlevinde çeşitli iyileştirmeler içerir. Örneğin:

  • Bazel'de harici bağımlılık yönetimi için Bzlmod varsayılan olarak etkinleştirildi
  • Dosya kilitleme desteği: Bzlmod ile hermetik derlemeyi etkinleştirir.
  • Sağlayıcı/çevrimdışı mod desteği: Kullanıcıların önceden indirilmiş bağımlılıklarla derleme çalıştırmasına olanak tanır.
  • Tam depo önbelleği desteği (yalnızca indirilen yapılar değil, son depo içeriği de önbelleğe alınır)
  • Bazel Merkezi Kayıt Defteri, topluluk katkılarını ve temel Bazel kurallarının ve projelerinin benimsenmesini içerir.

Analiz metrikleri oluşturma

Bazel 7.0, analiz aşamasıyla ilgili süre metrikleri sunarak geliştiricilerin kendi derleme performanslarını optimize etmelerine olanak tanır.

Varsayılan olarak Bytes açık olmadan oluşturma

Builds without the Bytes, ara yapıtların indirilmesini önleyerek ve derlemelerin ağ bant genişliğinde darboğaz oluşturmasını engelleyerek performansı optimize eder. Eklenen özellikler:

Skymeld ile üretkenliği artırma

Bazel 7.0, çok hedefli derlemelerinizin gerçek süresini kısaltan bir değerlendirme modu olan Skymeld'i kullanıma sunuyor. Skymeld, özellikle birden fazla üst düzey hedef içeren derlemelerde derleme hızlarını artırmak için analiz ve yürütme aşamaları arasındaki engeli ortadan kaldırır. Ancak tek hedefli derlemelerde önemli bir fark beklenmez.

Bazel Ekosistemi ve Araçları

Bazel ile Android uygulaması derleme

  • Android yerel kurallarını Starlark'a taşıma: Bazel 7.0'da Android kuralları, geliştirme sürecini Bazel'den ayırmak ve topluluk katkılarını daha iyi etkinleştirmek için Starlark'a taşınıyor. Ayrıca, bu kuralları temel Bazel ikilisinden bağımsız hale getirdik. Bu sayede daha sık yayın yapabiliyoruz.
  • Android kurallarının Starlark'a taşınması
  • R8 desteği: Android uygulama geliştiricilerin, R8'in güncellenmiş optimizasyonlarını kullanmasına olanak tanır.
  • Mobil Yükleme: Android uygulama geliştiricilerinin, Mobil Yükleme'nin güncellenmiş bir sürümü aracılığıyla Android uygulamalarında yaptıkları değişiklikleri hızlı bir şekilde geliştirmesine, test etmesine ve dağıtmasına olanak tanır.

Malzeme Listesi Yazılımı (SBOM) veri oluşturma ve OSS lisans uyumluluğu araçları

Geliştiriciler, Bazel ile SBOM'lar oluşturmaya yardımcı olacak veriler üretebilir. Bu veriler metin veya JSON biçiminde çıkış verir ve SPDX ya da CycloneDX spesifikasyonlarını karşılayacak şekilde kolayca biçimlendirilebilir. Ayrıca bu süreç, Bazel modüllerinin hangi lisanslarla kullanıma sunulduğunu bildirmek için kurallar ve bu bildirimler etrafında süreçler oluşturmak için araçlar sağlar. GitHub'daki devam eden rules_license uygulamasını inceleyin.

İmzalı derlemeler

Bazel, Windows ve Mac için Google anahtarlarıyla imzalanmış güvenilir ikili dosyalar sağlar. Bu özellik, çok platformlu geliştiricilerin/dev-ops'ların Bazel ikililerinin kaynağını belirlemesine ve sistemlerini kötü amaçlı olabilecek, doğrulanmamış ikililerden korumasına olanak tanır.

Java, C++ ve Python kurallarının Starlark'a taşınması

Java, C++ ve Python kural kümelerinin Starlark'a taşınması tamamlandı. Bu sayede Bazel kullanıcıları yalnızca kural kümelerini çatallayabilir ve Bazel ikili kod tabanını çatallayamaz. Bu da kullanıcılara şu avantajları sağlar:

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

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 değerlendirilmemelidir. Ö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'nun tescilli ticari markalarıdır.