Roadmap Bazel

Laporkan masalah Lihat sumber Per malam · 7,2 · 7,1 · 7,0 · 6,5 · 6,4

Ringkasan

Seiring berkembangnya proyek Bazel sebagai respons terhadap kebutuhan Anda, kami ingin bagikan info terbaru 2024 kami.

{i>Roadmap<i} ini menjelaskan inisiatif dan prediksi saat ini untuk masa depan Pengembangan Bazel, yang memberi Anda visibilitas terkait prioritas saat ini dan project secara terprogram.

Rilis Bazel 8.0

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

Bzlmod: sistem manajemen dependensi eksternal

Bzlmod secara otomatis me-resolve transitif dependensi, yang memungkinkan proyek untuk diskalakan sambil tetap cepat dan hemat sumber daya.

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

Bazel 8.0 akan berisi sejumlah peningkatan untuk Pengelolaan dependensi eksternal Bazel fungsionalitas, meliputi:

  • Tanda baru --enable_workspace dapat disetel ke false untuk sepenuhnya menonaktifkan fungsi WORKSPACE.
  • API pengamatan direktori baru (lihat #21435, dikirimkan dalam Bazel 7.1).
  • Skema yang ditingkatkan untuk menghasilkan nama repositori kanonis menjadi lebih baik kemampuan cache tindakan di seluruh update versi dependensi. (#21316, dikirimkan dalam 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 penggabungan dalam file kunci (#20396).
  • MODULE.bazel tersegmentasi (#17880)
  • Mengizinkan penggantian repositori yang dihasilkan ekstensi modul (#19301)
  • Peningkatan kualitas dokumentasi (misalnya #18030, #15821) dan migrasi panduan dan alat migrasi.

Peningkatan eksekusi jarak jauh

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

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

Selesaikan migrasi kumpulan aturan Android, C++, Java, dan Python ke repositori dan memisahkannya dari rilis Bazel. Upaya ini memungkinkan Bazel menggunakan dan penulis aturan 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 sama dengan tidak akan digunakan lagi.

Bazel 8 akan memberikan tanda migrasi sementara yang akan secara otomatis menggunakan kumpulan aturan yang sebelumnya merupakan bagian dari biner dari repositori mereka. Semua pengguna kumpulan aturan tersebut pada akhirnya akan bergantung pada repositori dan memuatnya sama dengan set aturan lain yang tidak pernah menjadi bagian dari Bazel.

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

Peningkatan Starlark

  • Makro Simbolis adalah cara baru untuk menulis makro yang lebih ramah untuk BUILD pengguna, penulis makro, dan alat. Dibandingkan dengan makro lama, yang Bazel hanya memiliki wawasan terbatas, {i>makro<i} simbolis membantu pengguna menghindari perangkap dan menerapkan praktik terbaik.
  • Penyelesaian paket adalah fitur yang diusulkan untuk menambahkan dukungan kelas satu untuk logika validasi paket kustom. Prinsip itu dimaksudkan untuk membantu kami native.existing_rules().

Kemampuan konfigurasi

  • Pemetaan jalur output terus stabil: menjanjikan cache jarak jauh yang lebih baik kinerja dan kecepatan build untuk desainer aturan yang menggunakan transisi.
  • Secara otomatis menetapkan tanda build yang sesuai untuk --platforms tertentu.
  • Menentukan kombinasi tanda yang didukung project dan membuat target secara otomatis dengan flag 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 mengubah sebagian kecil file sumber (misalnya, hampir tidak pernah salah satu dependensi eksternal). Dengan Skyfocus, Bazel akan memberikan cara eksperimental untuk menghapus status inkremental yang tidak perlu dan mengurangi memori Bazel terkelola, sambil tetap memberikan pengalaman build inkremental yang cepat yang sama.

Cakupan awal bertujuan untuk meningkatkan metrik heap yang dipertahankan saja. Heap puncak pengurangan adalah sebuah kemungkinan, tetapi tidak termasuk dalam ruang lingkup awal.

Lain-lain

  • Penginstalan seluler v3, pendekatan yang lebih sederhana dan dikelola dengan lebih baik untuk secara bertahap untuk men-deploy aplikasi Android.
  • Pengumpulan sampah untuk cache repositori dan install_base Bazel.
  • Pengurangan overhead sandbox.

Dukungan Bazel-JetBrains* IntelliJ IDEA

Update plugin IntelliJ inkremental untuk mendukung plugin JetBrains terbaru data.

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

Untuk mendapatkan pemberitahuan tentang fitur baru — termasuk pembaruan 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