Kompatibilitas Mundur

Laporkan masalah Lihat sumber Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Halaman ini memberikan informasi tentang cara menangani kompatibilitas mundur, termasuk cara bermigrasi dari satu rilis ke rilis lainnya dan cara mengomunikasikan perubahan yang tidak kompatibel.

Bazel terus berkembang. Versi minor yang dirilis sebagai bagian dari versi utama LTS sepenuhnya kompatibel dengan versi lama. Rilis LTS utama baru mungkin berisi perubahan yang tidak kompatibel yang memerlukan upaya migrasi. Untuk mengetahui informasi selengkapnya tentang model rilis Bazel, lihat halaman Model Rilis.

Ringkasan

  1. Sebaiknya gunakan tanda --incompatible_* untuk perubahan yang menyebabkan gangguan.
  2. Untuk setiap tanda --incompatible_*, masalah GitHub menjelaskan perubahan perilaku dan bertujuan untuk memberikan resep migrasi.
  3. Flag yang tidak kompatibel direkomendasikan untuk di-back-port ke rilis LTS terbaru tanpa mengaktifkan flag secara default.
  4. API dan perilaku yang dilindungi oleh tanda --experimental_* dapat berubah kapan saja.
  5. Jangan pernah menjalankan build produksi dengan flag --experimental_* atau --incompatible_*.

Cara mematuhi kebijakan ini

Apa itu fungsi stabil?

Secara umum, API atau perilaku tanpa tanda --experimental_... dianggap sebagai fitur stabil dan didukung di Bazel.

Hal ini mencakup:

  • Bahasa dan API Starlark
  • Aturan yang dibundel dengan Bazel
  • Bazel API seperti Remote Execution API atau Build Event Protocol
  • Flag dan semantiknya

Perubahan yang tidak kompatibel dan resep migrasi

Untuk setiap perubahan yang tidak kompatibel dalam rilis baru, tim Bazel berupaya memberikan resep migrasi yang membantu Anda memperbarui kode (file BUILD dan .bzl, serta penggunaan Bazel dalam skrip, penggunaan Bazel API, dan sebagainya).

Perubahan yang tidak kompatibel harus memiliki tanda --incompatible_* terkait dan masalah GitHub yang sesuai.

Flag yang tidak kompatibel dan perubahan yang relevan direkomendasikan untuk di-back-port ke rilis LTS terbaru tanpa mengaktifkan flag secara default. Hal ini memungkinkan pengguna melakukan migrasi untuk perubahan yang tidak kompatibel sebelum rilis LTS berikutnya tersedia.

Menyampaikan perubahan yang tidak kompatibel

Sumber informasi utama tentang perubahan yang tidak kompatibel adalah masalah GitHub yang ditandai dengan label "incompatible-change".

Untuk setiap perubahan yang tidak kompatibel, masalahnya menentukan hal berikut:

  • Nama flag yang mengontrol perubahan yang tidak kompatibel
  • Deskripsi fungsi yang diubah
  • Resep migrasi

Jika perubahan yang tidak kompatibel siap untuk dimigrasikan dengan Bazel di HEAD (oleh karena itu, juga dengan rilis bertahap Bazel berikutnya), perubahan tersebut harus ditandai dengan label migration-ready. Masalah perubahan yang tidak kompatibel ditutup saat tanda tidak kompatibel dibalik di HEAD.