Roadmap Bazel

7/0.9/2.5. Lihat sumber Nightly {/3/}

Ringkasan

Seiring berkembangnya project Bazel sebagai respons terhadap kebutuhan Anda, kami ingin membagikan info terbaru tahun 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 ini akan diimplementasikan.

Bzlmod: sistem manajemen dependensi eksternal

Bzlmod akan otomatis me-resolve dependensi transitif, sehingga project dapat diskalakan dengan tetap cepat dan efisien 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 untuk fungsi pengelolaan dependensi eksternal Bazel, termasuk:

  • Tanda baru --enable_workspace dapat ditetapkan ke false untuk sepenuhnya menonaktifkan fungsi WORKSPACE.
  • API pengamatan direktori baru (lihat #21435, dikirimkan dalam Bazel 7.1).
  • Peningkatan skema untuk menghasilkan nama repositori kanonis agar tindakan dapat disimpan dalam cache dengan lebih baik di seluruh update versi dependensi. (#21316, dikirimkan dalam Bazel 7.1)
  • Cache repositori bersama yang ditingkatkan (lihat #12227).
  • Dukungan mode offline dan vendor — memungkinkan pengguna menjalankan build dengan dependensi yang telah didownload sebelumnya (lihat #19563).
  • Mengurangi konflik penggabungan dalam file kunci (#20396).
  • MODULE.bazel Tersegmentasi (#17880)
  • Mengizinkan penggantian repositori yang dihasilkan ekstensi modul (#19301)
  • Peningkatan dokumentasi (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 tanda --jobs.
  • Mempermudah debug cache yang tidak ditemukan dengan log eksekusi baru yang ringkas, mengurangi ukurannya hingga 100x dan overhead runtime-nya secara signifikan (lihat #18643).
  • Menerapkan pembersihan sampah memori untuk cache disk (lihat #5139).
  • Mengimplementasikan layanan output jarak jauh untuk memungkinkan download lambat output build arbitrer (lihat #20933).

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

Menyelesaikan migrasi kumpulan aturan Android, C++, Java, dan Python ke repositori khusus dan memisahkannya dari rilis Bazel. Upaya ini memungkinkan pengguna dan penulis aturan Bazel untuk

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

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

Bazel 8 akan menyediakan tanda migrasi sementara yang akan otomatis menggunakan kumpulan aturan yang sebelumnya merupakan bagian dari biner dari repositorinya. Semua pengguna kumpulan aturan tersebut pada akhirnya akan bergantung pada repositorinya dan memuatnya sama seperti kumpulan aturan lain yang bukan bagian dari Bazel.

Bazel 8 juga akan meningkatkan aturan yang 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 bagi pengguna BUILD, penulis makro, dan alat. Dibandingkan dengan makro lama, yang hanya memiliki insight terbatas bagi Bazel, makro simbolis membantu pengguna menghindari masalah umum dan menerapkan praktik terbaik.
  • Penyelesaian paket adalah fitur yang diusulkan untuk menambahkan dukungan kelas satu untuk logika validasi paket kustom. Ekstensi tersebut dimaksudkan untuk membantu kami menghentikan native.existing_rules().

Kemampuan konfigurasi

  • 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 tanda build yang sesuai untuk --platforms tertentu.
  • Tentukan kombinasi tanda yang didukung project dan buat target secara otomatis dengan tanda default tanpa harus menetapkan bazelrc.
  • Jangan ulangi analisis build setiap kali perubahan flag build.

Project Skyfocus - meminimalkan struktur data yang dipertahankan

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

Cakupan awal bertujuan untuk meningkatkan metrik heap yang dipertahankan saja. Pengurangan heap pun mungkin terjadi, tetapi tidak disertakan dalam cakupan awal.

Lain-lain

  • Penginstalan seluler v3, pendekatan yang lebih sederhana dan dikelola dengan lebih baik untuk men-deploy aplikasi Android secara bertahap.
  • Pengumpulan sampah untuk cache repositori dan install_base Bazel.
  • Pengurangan 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 sebagai respons terhadap masukan developer dan pelanggan, atau peluang pasar baru.

Untuk mendapatkan notifikasi tentang fitur baru — termasuk info terbaru pada 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