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

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

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

สรุป

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

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

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

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

ซึ่งรวมถึงเนื้อหาต่อไปนี้

  • ภาษาและ API ของ Starlark
  • กฎที่มาพร้อมกับ Bazel
  • API ของ Bazel เช่น API การดำเนินการระยะไกลหรือโปรโตคอลเหตุการณ์บิลด์
  • แฟล็กและความหมาย

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

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

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

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

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

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

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

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