Ringkasan
Seiring dengan terus berkembangnya project Bazel sebagai respons terhadap kebutuhan Anda, kami ingin membagikan update 2024.
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 diterapkan.
Bzlmod: sistem pengelolaan 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 (Anda masih dapat mengaktifkannya menggunakan --enable_workspace); dengan Bazel 9, dukungan WORKSPACE akan dihapus. Mulai Bazel 7.1, Anda dapat menetapkan --noenable_workspace untuk memilih perilaku baru.
Bazel 8.0 akan berisi sejumlah peningkatan pada fungsi pengelolaan dependensi eksternal Bazel, termasuk:
- Flag baru
--enable_workspacedapat ditetapkan kefalseuntuk menonaktifkan fungsi WORKSPACE sepenuhnya. - API pemantauan direktori baru (lihat #21435, dikirimkan di Bazel 7.1).
- Skema yang ditingkatkan untuk membuat nama repositori kanonis agar tindakan dapat di-cache dengan lebih baik di seluruh update versi dependensi. (#21316, dikirimkan di Bazel 7.1)
- Cache repositori bersama yang ditingkatkan (lihat #12227).
- Dukungan mode vendor dan offline — memungkinkan pengguna menjalankan build dengan dependensi yang telah didownload sebelumnya (lihat #19563).
- Mengurangi konflik gabungan dalam file kunci (#20396).
- MODULE.bazel tersegmentasi (#17880)
- Mengizinkan penggantian repositori yang dibuat ekstensi modul (#19301)
- Dokumentasi yang ditingkatkan (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 menggunakan flag
--jobs. - Mempermudah proses debug cache yang tidak ditemukan dengan log eksekusi ringkas baru, yang mengurangi ukurannya hingga 100 kali dan overhead runtime-nya secara signifikan (lihat #18643).
- Menerapkan pembersihan sampah memori untuk cache disk (lihat #5139).
- Menerapkan layanan output jarak jauh untuk memungkinkan download output build arbitrer secara lambat (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 Bazel dan penulis aturan untuk
- Memperbarui aturan secara terpisah dari Bazel.
- Memperbarui dan menyesuaikan aturan sesuai kebutuhan.
Lokasi baru 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 flag migrasi sementara yang secara otomatis akan menggunakan kumpulan aturan yang sebelumnya merupakan bagian dari biner dari repositorinya. Semua pengguna kumpulan aturan tersebut diharapkan pada akhirnya akan bergantung pada repositori mereka dan memuatnya dengan cara yang sama seperti kumpulan aturan lain yang tidak pernah menjadi bagian dari Bazel.
Bazel 8 juga akan meningkatkan aturan dan subaturan API yang ada dan menandainya sebagai non-eksperimental.
Peningkatan Starlark
- Makro Simbolik adalah cara baru untuk menulis makro yang lebih mudah digunakan oleh pengguna
BUILD, penulis makro, dan alat. Dibandingkan dengan makro lama, yang hanya memiliki insight terbatas di Bazel, makro simbolik membantu pengguna menghindari kesalahan umum dan menerapkan praktik terbaik. - Finalizer paket adalah fitur yang diusulkan untuk menambahkan dukungan kelas satu untuk logika validasi paket kustom. Fitur ini dimaksudkan untuk membantu kami menghentikan penggunaan
native.existing_rules().
Konfigurasi
- Pemetaan jalur output terus distabilkan: menjanjikan performa cache jarak jauh dan kecepatan build yang lebih baik untuk desainer aturan yang menggunakan transisi.
- Menetapkan flag build secara otomatis yang sesuai untuk
--platformstertentu. - Menentukan kombinasi flag yang didukung project dan membuat target secara otomatis dengan flag default tanpa harus menetapkan bazelrc.
- Tidak perlu melakukan analisis build setiap kali flag build berubah.
Project Skyfocus - meminimalkan struktur data yang dipertahankan
Bazel menyimpan banyak status dalam RAM untuk build inkremental yang cepat. Namun, developer sering mengubah subset kecil dari file sumber (misalnya, hampir tidak pernah salah satu dependensi eksternal). Dengan Skyfocus, Bazel akan menyediakan cara eksperimental untuk menghapus status inkremental yang tidak diperlukan dan mengurangi footprint memori Bazel, sekaligus tetap memberikan pengalaman build inkremental yang cepat.
Cakupan awal hanya bertujuan untuk meningkatkan metrik heap yang dipertahankan. Pengurangan heap puncak adalah kemungkinan, tetapi tidak disertakan dalam cakupan awal.
Lain-lain
- Penginstalan seluler v3, pendekatan yang lebih sederhana dan lebih terpelihara untuk men-deploy aplikasi Android secara inkremental.
- Pembersihan sampah memori untuk cache repositori dan
install_baseBazel. - Mengurangi overhead sandbox.
Dukungan IntelliJ IDEA Bazel-JetBrains*
Update plugin IntelliJ inkremental untuk mendukung rilis plugin JetBrains terbaru.
Target roadmap ini adalah snapshot, 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 roadmap ini — bergabunglah dengan komunitas Google Group.
*Copyright © 2022 JetBrains s.r.o. JetBrains dan IntelliJ adalah merek dagang terdaftar dari JetBrains s.r.o