8.การกำหนดเวอร์ชันและความเข้ากันได้ (Versioning & compatibility)
เวอร์ชันของ IPL เขียนเป็น X.Y.Z. แต่ละหลักตอบคำถามหนึ่งข้อว่ารุ่นนั้นเปลี่ยนอะไร; เมื่อหลักใด เพิ่มขึ้น หลักที่อยู่ทางขวาจะกลับเป็น 0.
- X — การเปลี่ยนกระบวนทัศน์ (paradigm shift). แบบจำลองการแทนค่าเปลี่ยนไป หรือเวกเตอร์ P
เดิมใช้ไม่ได้อีก. ครอบคลุมเวกเตอร์ที่ถูกแทนที่หรือแบ่งกลุ่มใหม่ (แบบจำลองกลุ่มตาม §3 เปลี่ยน
ข้อกำหนดช่วง [−1, 1] เปลี่ยน หรือ P ไม่ใช่การแทนค่าหลักอีกต่อไป) และการแก้ทะเบียนแบบไม่เข้ากัน
ทุกกรณี (§4): ลบแกน นำ
idกลับมาใช้ซ้ำ หรือนิยามความหมายหรือช่วงค่าของแกนใหม่. X ใหม่เริ่มสายเวกเตอร์ใหม่: เวกเตอร์ ตัวถอดรหัส และสคริปต์ของ X ก่อนหน้าไม่ถือว่าใช้ต่อได้โดยไม่แปลง และรุ่นนั้นต้อง (MUST) บันทึกว่าไม่เข้ากัน (breaking) พร้อมแนวทางย้ายข้อมูล. - Y — การเปลี่ยนแปลงหลัก (major change). เอกสารได้ความสามารถเชิงข้อบังคับเพิ่มภายในกระบวนทัศน์เดิม โดยเวกเตอร์ที่มีอยู่ทุกตัวยังใช้ได้: เพิ่มแกนหนึ่งตัวขึ้นไปในทะเบียน (§4) พร้อมค่าเริ่มต้นที่เป็นกลาง เวกเตอร์เดิมจึงถอดรหัสได้โดยมิติใหม่ใช้ค่าเริ่มต้น; หัวข้อข้อบังคับใหม่ที่มีกฎระดับ MUST (ไวยากรณ์การประกอบ §7 เข้ามาที่ 1.1.0). รุ่น Y เป็นแบบเพิ่มเติม (additive).
- Z — การเปลี่ยนแปลงย่อย (minor change). ทุกสิ่งที่ไม่แตะต้อง P และการถอดรหัสบริสุทธิ์ของ P:
การชี้แจง ถ้อยคำ และการแก้ไขที่ไม่กระทบความหมาย; การเพิ่มเงื่อนไขเสริม (§3.4) และการปรับโดเมนของ
เงื่อนไขเสริมที่รูปแบบเดิมยังใช้ได้ (นโยบายเจ้าของ, 2026-07-16;
anchorที่ 1.0.1, แมปvisemeที่ 1.1.1) — เงื่อนไขเสริมพกไปคู่กับ P โดยไม่เพิ่มแกน เวกเตอร์เดิมและตัวถอดรหัสปริภูมิแฝงบริสุทธิ์จึงไม่ กระทบ; โครงสร้างไวยากรณ์ที่เพิ่มเข้าใน §7 โดยสคริปต์เดิมทุกตัวยังใช้ได้ (1.1.1 และ 1.1.2); การปรับการถอดรหัสที่คงรูปแบบเวกเตอร์, id, ช่วงค่า และค่าเริ่มต้น (การปรับปรุงนิยามแกนแขนตาม §4.1 ที่ 1.1.2). การเปลี่ยนแปลงย่อยอาจ (MAY) ทำให้เรขาคณิตที่เรนเดอร์ต่างไปบนอวาตาร์บางตัว; ความเข้ากันได้ของข้อมูล จัดเก็บไม่ได้หมายความว่าเรขาคณิตจะเหมือนเดิม และบันทึกการเปลี่ยนแปลงต้อง (MUST) ระบุผลเช่นนั้น.
กฎที่ใช้ข้ามทุกรุ่น:
- ภายใน X เดียวกัน ไม่นำ
idกลับมาใช้ซ้ำในความหมายอื่น ไม่ลบหรือนิยามแกนใหม่ และลำดับทะเบียนของ id ที่มีอยู่ไม่เปลี่ยน. - ผู้บริโภคต้อง (MUST) ละเลย id ที่ไม่รู้จัก (§5) ดังนั้นเวกเตอร์ที่เขียนภายใต้ Y หรือ Z ที่ใหม่กว่าใน X เดียวกัน ถอดรหัสภายใต้รุ่นเก่ากว่าได้โดยทิ้งมิติใหม่ และเวกเตอร์ที่เขียนภายใต้รุ่นเก่ากว่าถอดรหัสภายใต้รุ่นใหม่กว่าได้ โดยแทนด้วยค่าเริ่มต้น.
- แต่ละรุ่นบันทึก แทนที่ (supersedes) และ ความเข้ากันได้ (baseline | additive | breaking). ผู้พัฒนาควร (SHOULD) ระบุเวอร์ชันที่รองรับให้ชัด และความสอดคล้องระบุเทียบกับเวอร์ชันเดียวเสมอ (§6).
- การเผยแพร่และหมายเลขของรุ่นเป็นสิ่งที่เจ้าของประกาศ; ป้าย "ตั้งแต่" ใน §7 ระบุระดับที่โครงสร้างเข้ามา และไม่ใช่เวอร์ชันที่เผยแพร่แยกต่างหาก.
ประวัติรุ่น: 1.0.0 (ฐาน) → 1.0.1 (ย่อย: anchor) → 1.1.0 (หลัก: นำไวยากรณ์การประกอบเข้ามา)
→ 1.1.1 (ย่อย) → 1.1.2 (ย่อย, ปัจจุบัน). บันทึกฉบับเต็มอยู่ที่หน้าบันทึกการเปลี่ยนแปลง
ipl.signthai.com/th/changelog/.