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

รายงานปัญหา ดูซอร์สโค้ด รุ่น Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

สรุป

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

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

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

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

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

  • ภาษาและ API ของ Starlark
  • กฎที่รวมอยู่ใน Bazel
  • Bazel API เช่น Remote Execution API หรือ Build Event Protocol
  • Flag และความหมาย

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

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

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

ขอแนะนําให้พอร์ต Flag ที่เข้ากันไม่ได้และการเปลี่ยนแปลงที่เกี่ยวข้องกลับไปที่รุ่น LTS ล่าสุดโดยไม่เปิดใช้ Flag โดยค่าเริ่มต้น ซึ่งจะช่วยให้ผู้ใช้ย้ายข้อมูลการเปลี่ยนแปลงที่เข้ากันไม่ได้ได้ก่อนที่จะมี LTS เวอร์ชันถัดไป

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

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

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

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

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