Roadmap Bazel

Ringkasan

Selamat tahun baru untuk komunitas Bazel kami. Pada tahun baru ini, kami berencana untuk memberikan detail rencana jangka panjang kami pada tahun 2023. Tahun lalu, kami memublikasikan rencana tahun 2022 dengan rencana Bazel 6.0. Kami berharap rencana tersebut dapat memenuhi kebutuhan alat build Anda. Seiring dengan terus berkembangnya project Bazel sebagai respons terhadap kebutuhan Anda, kami ingin membagikan info terbaru tahun 2023.

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.

Rilis Bazel 7.0

Kami berencana menghadirkan dukungan jangka panjang (LTS) Bazel 7.0 kepada Anda pada akhir tahun 2023. Dengan Bazel 7.0, kami berupaya untuk menyelesaikan banyak item yang sedang dalam proses dan terus berupaya meningkatkan fitur yang diminta oleh pengguna kami.

Berbagi cache lintas platform yang lebih baik

Memungkinkan artefak yang di-cache dibagikan di berbagai platform build lokal (Mac) dan build jarak jauh (Linux) terutama untuk pengembangan Java/Kotlin dan Android, sehingga menghasilkan performa yang lebih baik dan penggunaan cache yang efisien.

Build aplikasi Android dengan Bazel

Penggabungan Manifes & Resource diupdate ke v30.1.3 sehingga developer aplikasi Android dapat menggunakan fitur penggabungan manifes yang lebih baru seperti tools:node="merge".

Peningkatan eksekusi jarak jauh

Bazel 7.0 menyediakan dukungan untuk eksekusi asinkron, sehingga mempercepat eksekusi jarak jauh melalui peningkatan paralelisme dengan tanda --jobs.

Bzlmod: sistem pengelolaan dependensi eksternal

Bzlmod secara otomatis menyelesaikan dependensi transitif, sehingga project dapat diskalakan sekaligus tetap cepat dan hemat resource. Bazel 7.0 berisi sejumlah peningkatan pada fungsi pengelolaan dependensi eksternal Bazel, termasuk:

  • Bzlmod diaktifkan secara default untuk pengelolaan dependensi eksternal di Bazel
  • Dukungan file kunci — memungkinkan build hermetik dengan Bzlmod
  • Dukungan mode vendor/offline — memungkinkan pengguna menjalankan build dengan dependensi yang telah didownload sebelumnya
  • Dukungan cache repositori lengkap (meng-cache tidak hanya artefak yang didownload, tetapi juga konten repositori akhir)
  • Bazel Central Registry mencakup kontribusi komunitas reguler dan adopsi aturan & project Bazel utama

Membangun metrik analisis

Bazel 7.0 menyediakan metrik waktu fase analisis, sehingga developer dapat mengoptimalkan performa build mereka sendiri.

Build tanpa Bytes diaktifkan secara default

Build tanpa Byte mengoptimalkan performa dengan menghindari download artefak perantara dan mencegah build mengalami hambatan pada bandwidth jaringan. Fitur yang ditambahkan meliputi:

Membangun Produktivitas dengan Skymeld

Bazel 7.0 memperkenalkan Skymeld — mode evaluasi yang mengurangi waktu pemrosesan build multi-target Anda. Skymeld menghilangkan hambatan antara fase analisis dan eksekusi untuk meningkatkan kecepatan build, terutama untuk build dengan beberapa target tingkat teratas. Namun, untuk build target tunggal, tidak ada perbedaan yang signifikan.

Ekosistem & Alat Bazel

Build aplikasi Android dengan Bazel

  • Memigrasikan aturan native Android ke Starlark: Untuk Bazel 7.0, aturan Android dimigrasikan ke Starlark untuk memisahkan pengembangan dari Bazel itu sendiri dan untuk lebih memungkinkan kontribusi komunitas. Selain itu, kami telah membuat aturan ini terlepas dari biner Bazel inti, sehingga kami dapat merilis lebih sering.
  • Migrasi aturan Android ke Starlark
  • Dukungan R8: Mengizinkan developer aplikasi Android menggunakan pengoptimalan yang diperbarui R8.
  • Penginstalan Seluler: Memungkinkan developer aplikasi Android mengembangkan, menguji, men-deploy perubahan aplikasi Android apa pun dengan cepat melalui versi Penginstalan Seluler yang telah diupdate.

Pembuatan data Software Bill of Materials (SBOM) & alat kepatuhan lisensi OSS

Dengan Bazel, developer dapat membuat data untuk membantu menghasilkan SBOM. Data ini ditampilkan dalam format teks atau JSON, dan dapat diformat dengan mudah untuk memenuhi spesifikasi SPDX atau CycloneDX. Selain itu, proses ini menyediakan aturan untuk mendeklarasikan lisensi yang digunakan untuk menyediakan modul Bazel, dan alat untuk membangun proses seputar deklarasi tersebut. Lihat implementasi rules_license yang sedang berlangsung di GitHub.

Build bertanda tangan

Bazel 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 yang berpotensi berbahaya dan tidak terverifikasi.

Migrasi aturan Java, C++, dan Python ke Starlark

Menyelesaikan migrasi set aturan Java, C++, dan Python ke Starlark. Upaya ini memungkinkan pengguna Bazel hanya melakukan fork pada kumpulan aturan, bukan codebase biner Bazel, sehingga pengguna dapat

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

Dukungan IntelliJ IDEA untuk Bazel-JetBrains*

Update plugin IntelliJ inkremental untuk mendukung rilis plugin JetBrains terbaru.

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.

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