Kompatibilitas Mundur

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

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

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

Ringkasan

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

Cara mematuhi kebijakan ini

Apa itu fungsi stabil?

Secara umum, API atau perilaku tanpa flag --experimental_... dianggap stabil yang didukung dalam Bazel.

Hal ini mencakup:

  • Bahasa dan API Starlark
  • Aturan yang dipaketkan bersama Bazel
  • API Bazel seperti Remote Execution API atau Build Event Protocol
  • Tanda dan semantiknya

Perubahan dan urutan migrasi yang tidak kompatibel

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

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

Tanda yang tidak kompatibel dan perubahan yang relevan direkomendasikan untuk di-backport ke rilis LTS terbaru tanpa mengaktifkan tanda secara {i>default<i}. Hal ini memungkinkan pengguna bermigrasi untuk perubahan yang tidak kompatibel sebelum rilis LTS berikutnya yang tersedia.

Menyampaikan perubahan yang tidak kompatibel

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

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

  • Nama tanda yang mengontrol perubahan yang tidak kompatibel
  • Deskripsi fungsi yang diubah
  • Urutan migrasi

Saat perubahan yang tidak kompatibel siap dimigrasikan dengan Bazel di HEAD (Oleh karena itu, juga dengan rilis bergulir Bazel berikutnya), harus ditandai dengan label migration-ready. Masalah perubahan yang tidak kompatibel ditutup bila tanda tidak kompatibel dibalik ke HEAD.