ความเข้ากันได้แบบย้อนหลัง

หน้านี้ให้ข้อมูลเกี่ยวกับวิธีจัดการความเข้ากันได้แบบย้อนหลัง รวมถึงการย้ายจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่งและวิธีสื่อสารการเปลี่ยนแปลงที่เข้ากันไม่ได้

Bazel กำลังพัฒนา เวอร์ชันย่อยที่เผยแพร่โดยเป็นส่วนหนึ่งของเวอร์ชันหลัก LTS จะเข้ากันได้กับเวอร์ชันเก่าทั้งหมด การเปลี่ยนแปลงระหว่างรุ่น LTS หลักอาจมีการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้ ซึ่งต้องอาศัยความพยายามในการย้ายข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของช่วงเวลาการเผยแพร่ของ Bazel ได้ที่การประกาศการสนับสนุนระยะยาว (LTS) ของ Bazel

สรุป

  1. ขอแนะนำให้ใช้แฟล็ก --incompatible_* สำหรับการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  2. สำหรับการรายงานปัญหา --incompatible_* แต่ละครั้ง ปัญหาของ GitHub จะอธิบายการเปลี่ยนแปลงลักษณะการทำงานและมีไว้เพื่อระบุสูตรการย้ายข้อมูล
  3. API และลักษณะการทำงานที่ได้รับการปกป้องโดยแฟล็ก --experimental_* อาจเปลี่ยนแปลงได้ทุกเมื่อ
  4. อย่าเรียกใช้บิลด์ที่ใช้งานจริงที่มีแฟล็ก --experimental_* หรือ --incompatible_*

วิธีปฏิบัติตามนโยบายนี้

ฟังก์ชันการทำงานที่มีความเสถียรคืออะไร

โดยทั่วไปแล้ว API หรือลักษณะการทำงานที่ไม่มี Flag --experimental_... จะถือว่าเป็นฟีเจอร์ที่เสถียรและรองรับใน Bazel

รวมถึงกรณีต่อไปนี้

  • ภาษาและ API ของ Starlark
  • กฎที่มาพร้อมกับ Bazel
  • Bazel API เช่น Remote Execution API หรือ Build Event Protocol
  • แฟล็กและความหมาย

สูตรการเปลี่ยนแปลงและการย้ายข้อมูลที่เข้ากันไม่ได้

สำหรับการเปลี่ยนแปลงทั้งหมดที่ใช้ร่วมกันไม่ได้ในรุ่นใหม่ ทีม Bazel มุ่งมั่นที่จะมอบ สูตรการย้ายข้อมูลที่จะช่วยคุณอัปเดตโค้ด (ไฟล์ BUILD และ .bzl ตลอดจนการใช้งาน Bazel ในสคริปต์ การใช้ Bazel API และอื่นๆ)

การเปลี่ยนแปลงที่เข้ากันไม่ได้ควรมีแฟล็ก --incompatible_* ที่เกี่ยวข้องและปัญหา GitHub ที่เกี่ยวข้อง

การสื่อสารเกี่ยวกับการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้

แหล่งข้อมูลหลักของข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้คือปัญหาของ GitHub ที่ทำเครื่องหมายด้วยป้ายกำกับ"ใช้ร่วมกันไม่ได้"

สำหรับการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้ ปัญหาจะระบุข้อมูลต่อไปนี้

  • ชื่อธงที่ควบคุมการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้
  • คำอธิบายฟังก์ชันการทำงานที่มีการเปลี่ยนแปลง
  • สูตรการย้ายข้อมูล

เมื่อการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้พร้อมสําหรับการย้ายข้อมูลด้วย Bazel ที่ HEAD (จึงด้วยเช่นกัน สำหรับการเปิดตัว Bazel รุ่นถัดไป) ควรมีการทำเครื่องหมายด้วยป้ายกำกับ migration-ready ระบบจะปิดปัญหาการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้เมื่อมีการกลับ Flag ที่ใช้ร่วมกันไม่ได้ที่ HEAD