Kompatibilitas Mundur

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.
Laporkan masalah Lihat sumber

Halaman ini memberikan informasi tentang cara menangani kompatibilitas mundur, termasuk 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 sebelumnya. Perubahan di antara rilis LTS utama mungkin berisi perubahan yang tidak kompatibel dan memerlukan beberapa upaya migrasi. Untuk mengetahui informasi selengkapnya tentang cara kerja ritme rilis Bazel, lihat Mengumumkan rilis Dukungan Jangka Panjang Bazel (LTS).

Ringkasan

  1. Sebaiknya gunakan tanda --incompatible_* untuk perubahan yang dapat menyebabkan gangguan.
  2. Untuk setiap flag --incompatible_*, masalah GitHub menjelaskan perubahan perilaku dan bertujuan untuk memberikan resep migrasi.
  3. API dan perilaku yang dilindungi oleh flag --experimental_* dapat berubah kapan saja.
  4. Jangan pernah menjalankan build produksi dengan tanda --experimental_* atau --incompatible_*.

Cara mematuhi kebijakan ini

Apa itu fungsi stabil?

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

Hal ini mencakup:

  • API dan bahasa Starlark
  • Aturan yang dipaketkan dengan Bazel
  • API Bazel seperti Remote Execution API atau Build Event Protocol
  • Bendera dan semantiknya

Perubahan dan resep migrasi tidak kompatibel

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

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

Menyampaikan perubahan yang tidak kompatibel

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

Untuk setiap perubahan yang tidak kompatibel, masalah ini akan menentukan hal berikut:

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

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