Roadmap Bazel

Ringkasan

Project Bazel terus berkembang sebagai respons terhadap kebutuhan Anda — mengembangkan fitur dan memberikan dukungan sambil mempertahankan, memfaktorkan ulang, dan meningkatkan performa produk inti.

Dengan perubahan ini, kami berupaya untuk terus memberikan informasi dan melibatkan komunitas open source kami. Rencana ini menjelaskan inisiatif saat ini dan prediksi untuk pengembangan Bazel di masa mendatang, sehingga Anda dapat melihat prioritas saat ini dan project yang sedang berlangsung.

Peta jalan ini menampilkan target, dan tidak boleh dianggap sebagai jaminan. Prioritas dapat berubah sebagai respons terhadap masukan developer dan pelanggan, atau peluang pasar baru.

Untuk mendapatkan notifikasi tentang fitur baru — termasuk update pada peta jalan ini — bergabunglah dengan komunitas Grup Google.

K4 — Rilis Bazel 6.0

Q4 menghadirkan Bazel 6.0 — versi dukungan jangka panjang (LTS) baru. Bazel 6.0 berencana menyertakan fitur baru yang canggih dan diminta oleh komunitas untuk mengelola dependensi, mengembangkan dengan Android, dan lainnya.

Bzlmod: sistem pengelolaan dependensi eksternal

Bzlmod secara otomatis menyelesaikan dependensi transitif, sehingga project dapat diskalakan sekaligus tetap cepat dan hemat resource. Diperkenalkan secara eksperimental di Bazel 5.0, Bzlmod akan tersedia secara umum dan memberikan solusi untuk masalah dependensi berlian.

  • Bzlmod beralih dari 'eksperimental' menjadi 'tersedia secara umum'
  • Mencakup dukungan untuk rules\_jvm\_external, sehingga pengguna dapat mendownload dependensi Maven untuk project Java
  • Panduan Migrasi Bzlmod menyediakan alat, skrip, dan dokumentasi untuk tim yang ingin mengadopsi Bzlmod
  • Repositori pusat Bazel menghosting aturan inti Bazel BUILD (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) dan dependensi utama yang diperlukan untuk Bzlmod

Untuk mengetahui perkembangan lebih lanjut, tonton update komunitas Bzlmod atau baca dokumen desain asli.

Build aplikasi Android dengan Bazel

Bazel 6.0 akan menyertakan alat yang ditingkatkan dan kontribusi fitur komunitas yang digabungkan. Untuk mengantisipasi adopsi lebih lanjut dan codebase yang terus berkembang, tim Bazel akan memprioritaskan integrasi alat build Android dengan aturan Android Bazel.

  • Mengupdate D8 ke v. 3.3.28 dan menyetelnya sebagai dexer default.
  • Menggabungkan kontribusi fitur komunitas utama yang ditambahkan di 5.X, termasuk dukungan untuk:
    • Pekerja persisten dengan D8
    • Desugaring menggunakan D8
    • Menggabungkan tag "uses-permissions" dalam manifes Android
    • Multiplex pekerja dalam pemrosesan resource Android

Toolchain opsional

Survei Kepuasan Developer kami menunjukkan bahwa penulis aturan menginginkan dukungan untuk pengembangan toolchain lebih lanjut. Bazel 6.0 akan memungkinkan penulis menulis aturan menggunakan toolchain berperforma tinggi opsional jika tersedia dengan implementasi penggantian untuk platform lain.

Dukungan IntelliJ IDEA untuk Bazel-JetBrains*

JetBrains telah berpartner dengan Bazel untuk bersama-sama memelihara plugin Bazel IntelliJ IDEA, yang mendukung tujuan untuk meningkatkan pengelolaan komunitas dan membuka kapasitas untuk permintaan dan pengembangan fitur.

  • Plugin IntelliJ v. 2022.2 menyediakan dukungan untuk rilis plugin JetBrains terbaru
  • Meningkatkan kompatibilitas dengan pengembangan jarak jauh
  • Mendorong pengembangan yang didorong komunitas untuk fitur yang sedang dalam proses seperti dukungan Scala

Untuk mengetahui perkembangan ini lebih lanjut, baca pengumuman blog Bazel-JetBrains.

Pengembangan mendatang

Ke depannya, tim Bazel telah memulai pengembangan atau mengantisipasi untuk memprioritaskan fitur berikut pada tahun 2023 dan seterusnya.

Meningkatkan kualitas aturan build Android Bazel

Terus berinvestasi dalam pengalaman pengembangan aplikasi Android, dengan berfokus pada alur kerja melalui build, pengujian, dan deployment.

  • Migrasi ke dan dukungan untuk R8
  • Pembaruan pada aturan Android, termasuk terjemahan ke bahasa Starlark
  • Dukungan untuk App Bundle
  • Dukungan untuk versi NDK terbaru
  • Menguji cakupan kode

Alat kepatuhan lisensi OSS

Developer meminta pemeriksa kepatuhan lisensi yang andal untuk memastikan ketersediaan dan keamanan paket yang disertakan. Project ini menyediakan serangkaian aturan dan alat untuk membantu mengidentifikasi dan memitigasi risiko kepatuhan dan lisensi yang terkait dengan komponen software tertentu. Fitur target meliputi:

  • Kemampuan untuk mengaudit paket yang digunakan oleh target tertentu
  • Kemampuan untuk membuat pemeriksaan kepatuhan lisensi khusus organisasi.

Lihat implementasi rules_license yang sedang berlangsung di GitHub.

Bzlmod: sistem pengelolaan dependensi eksternal

Saat diluncurkan, Bzlmod meningkatkan skalabilitas dan keandalan dependensi transitif. Selama tiga tahun ke depan, Bzlmod bertujuan untuk menggantikan WORKSPACE sebagai subsistem pengelolaan dependensi ruang kerja Bazel default. Fitur yang ditargetkan meliputi:

  • Dukungan untuk build hermetis
  • Menyematkan aturan referensi berversi mode vendor/offline ke salinan lokal
  • Bazel Central Registry mencakup kontribusi dan adopsi rutin dari komunitas untuk aturan & project Bazel utama
  • Bzlmod menjadi alat default untuk membangun project Bazel

Build bertanda tangan

Bazel akan menyediakan biner tepercaya untuk Windows dan Mac yang ditandatangani dengan kunci Google. Fitur ini memungkinkan developer/dev-ops multiplatform mengidentifikasi sumber biner Bazel dan melindungi sistem mereka dari biner berbahaya yang tidak terverifikasi.

API Platform Standar

Platforms API baru akan menstandardisasi konfigurasi arsitektur untuk build multi-bahasa dan multi-platform. Dengan fitur ini, developer dapat mengurangi error dan kompleksitas yang merugikan selama waktu pengembangan dalam build besar mereka.

Membangun metrik analisis

Telemetri Bazel akan memberikan metrik waktu fase analisis, sehingga developer dapat mengoptimalkan performa build mereka sendiri.

Eksekusi jarak jauh dengan “Build tanpa Byte”

Build tanpa Byte akan mengoptimalkan performa dengan hanya mengizinkan Bazel mendownload artefak yang diperlukan, sehingga mencegah build mengalami hambatan pada bandwidth jaringan. Fitur yang ditambahkan untuk build jarak jauh meliputi:

  • Gunakan download asinkron untuk memungkinkan tindakan lokal dan jarak jauh dimulai segera setelah tindakan tersebut mendownload output dependennya
  • Menambahkan dukungan Symlink
  • Mengambil output perantara dari tindakan jarak jauh setelah build selesai

*Hak Cipta © 2022 JetBrains s.r.o. JetBrains dan IntelliJ adalah merek dagang terdaftar dari JetBrains s.r.o.