Roadmap Bazel

Laporkan masalah Lihat sumber

Ringkasan

Karena project Bazel terus berkembang sebagai respons terhadap kebutuhan Anda, kami ingin membagikan pembaruan 2024 kami.

Roadmap ini menjelaskan inisiatif dan prediksi saat ini untuk masa depan pengembangan Bazel, sehingga Anda dapat melihat prioritas saat ini dan project yang sedang berlangsung.

Rilis Bazel 8.0

Kami berencana untuk menghadirkan dukungan jangka panjang (LTS) Bazel 8.0 kepada Anda pada akhir tahun 2024. Fitur berikut direncanakan akan diimplementasikan.

Bzlmod: sistem manajemen dependensi eksternal

Bzlmod secara otomatis menyelesaikan dependensi transitif, sehingga project dapat diskalakan sekaligus tetap cepat dan hemat resource.

Dengan Bazel 8, kami akan menonaktifkan dukungan WORKSPACE secara default (masih dapat diaktifkan menggunakan --enable_workspace); dengan dukungan Bazel 9 WORKSPACE akan dihapus. Mulai Bazel 7.1, Anda dapat menetapkan --noenable_workspace untuk ikut serta dalam perilaku baru.

Bazel 8.0 akan berisi sejumlah peningkatan pada fungsi manajemen dependensi eksternal Bazel, termasuk:

  • Flag baru --enable_workspace dapat ditetapkan ke false untuk sepenuhnya menonaktifkan fungsi WORKSPACE.
  • API pengamatan direktori baru (lihat #21435, dikirimkan dalam Bazel 7.1).
  • Skema yang ditingkatkan untuk membuat nama repositori kanonis sehingga dapat menyimpan tindakan dalam cache yang lebih baik di seluruh update versi dependensi. (#21316, dikirimkan dalam Bazel 7.1)
  • Cache repositori bersama yang ditingkatkan (lihat #12227).
  • Dukungan vendor dan mode offline — memungkinkan pengguna menjalankan build dengan dependensi yang telah didownload (lihat #19563).
  • Mengurangi konflik penggabungan dalam file kunci (#20396).
  • MODULE.bazel yang disegmentasikan (#17880)
  • Mengizinkan penggantian repositori yang dihasilkan ekstensi modul (#19301)
  • Dokumentasi yang lebih baik (misalnya, #18030, #15821) serta panduan migrasi dan alat migrasi.

Peningkatan eksekusi jarak jauh

  • Menambahkan dukungan untuk eksekusi asinkron, yang mempercepat eksekusi jarak jauh dengan meningkatkan paralelisme dengan flag --jobs.
  • Mempermudah debug cache yang tidak ditemukan dengan log eksekusi baru yang ringkas, sehingga mengurangi ukurannya hingga 100x dan overhead runtime-nya secara signifikan (lihat #18643).
  • Mengimplementasikan pembersihan sampah memori untuk cache disk (lihat #5139).
  • Mengimplementasikan layanan output jarak jauh untuk mengizinkan download lambat output build arbitrer (lihat #20933).

Migrasi aturan Android, C++, Java, Python, dan Proto

Selesaikan migrasi set aturan Android, C++, Java, dan Python ke repositori khusus dan pisahkan dari rilis Bazel. Dengan upaya ini, pengguna Bazel dan penulis aturan dapat

  • Perbarui aturan secara terpisah dari Bazel.
  • Perbarui dan sesuaikan aturan sesuai kebutuhan.

Lokasi baru kumpulan aturan ini adalah bazelbuild/rules_android, rules_cc, rules_java, rules_python, dan google/protobuf. rules_proto tidak akan digunakan lagi.

Bazel 8 akan menyediakan flag migrasi sementara yang akan otomatis menggunakan kumpulan aturan yang sebelumnya merupakan bagian dari biner dari repositorinya. Semua pengguna kumpulan aturan tersebut pada akhirnya diharapkan untuk bergantung pada repositorinya dan memuatnya seperti halnya kumpulan aturan lain yang tidak pernah menjadi bagian dari Bazel.

Bazel 8 juga akan meningkatkan kualitas aturan diperluas dan API sub-aturan yang ada serta menandainya sebagai non-eksperimental.

Peningkatan Starlark

  • Makro Simbolis adalah cara baru untuk menulis makro yang lebih mudah digunakan oleh pengguna BUILD, penulis makro, dan alat. Dibandingkan dengan makro lama, yang Bazel hanya memiliki insight terbatas, makro simbolis membantu pengguna menghindari masalah umum dan menerapkan praktik terbaik.
  • Penyelesaian paket adalah fitur yang diusulkan untuk menambahkan dukungan kelas satu bagi logika validasi paket kustom. Kolom tersebut dimaksudkan untuk membantu kami menghentikan penggunaan native.existing_rules().

Dapat dikonfigurasi

  • Pemetaan jalur output terus stabil: menjanjikan performa cache jarak jauh yang lebih baik dan kecepatan build untuk desainer aturan yang menggunakan transisi.
  • Secara otomatis menetapkan flag build yang sesuai untuk --platforms tertentu.
  • Menentukan kombinasi flag yang didukung project dan membuat target secara otomatis dengan flag default tanpa harus menetapkan bazelrc.
  • Jangan mengulangi analisis build setiap kali flag build berubah.

Project Skyfocus - meminimalkan struktur data yang dipertahankan

Bazel memiliki banyak status di RAM untuk build inkremental yang cepat. Namun, developer sering mengubah sebagian kecil file sumber (mis. hampir tidak pernah salah satu dependensi eksternal). Dengan Skyfocus, Bazel akan memberikan cara eksperimental untuk menghapus status inkremental yang tidak perlu dan mengurangi jejak memori Bazel, sambil tetap memberikan pengalaman build inkremental yang sama cepat.

Cakupan awal hanya bertujuan untuk meningkatkan metrik heap yang dipertahankan. Pengurangan heap puncak dapat dilakukan, tetapi tidak termasuk dalam cakupan awal.

Lain-lain

  • Penginstalan seluler v3, pendekatan yang lebih sederhana dan lebih dikelola untuk men-deploy aplikasi Android secara bertahap.
  • Pembersihan sampah memori untuk cache repositori dan install_base Bazel.
  • Mengurangi overhead sandbox.

Dukungan Bazel-JetBrains* IntelliJ IDEA

Update plugin IntelliJ inkremental untuk mendukung rilis plugin JetBrains terbaru.

Ringkasan roadmap ini menargetkan, dan tidak boleh dianggap sebagai jaminan. Prioritas dapat berubah sesuai dengan masukan developer dan pelanggan, atau peluang pasar baru.

Untuk mendapatkan notifikasi tentang fitur baru — termasuk update untuk roadmap ini — bergabunglah dengan komunitas Google Grup.

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