- บทความว่าด้วยความสำคัญของความเข้ากันได้ย้อนหลังในภาษาโปรแกรม Go โดยเน้นฟีเจอร์ใหม่ของ Go 1.21 และอนาคตของ Go 2
- Go 1.21 มีฟีเจอร์ใหม่ที่ช่วยปรับปรุงความเข้ากันได้ โดยมีเป้าหมายเพื่อให้ Go คงความเสถียรและคาดการณ์ได้ เพื่อให้นักพัฒนาสามารถโฟกัสกับงานได้มากกว่าการเปลี่ยนแปลงของภาษา
- ทีม Go ให้ความสำคัญกับความเข้ากันได้มาเป็นเวลากว่า 10 ปี โดยมีเจตนาที่ชัดเจนว่าโปรแกรมที่เขียนตามสเปก Go 1 จะต้องคอมไพล์และทำงานได้อย่างถูกต้องโดยไม่ต้องแก้ไขตลอดอายุของสเปกนั้น
- อธิบายแนวทางหลักสองประการในการรักษาความเข้ากันได้: การตรวจสอบ API และการทดสอบ การตรวจสอบ API ช่วยรับประกันว่า API เดิมจะไม่ถูกลบหรือเปลี่ยนแปลงในลักษณะที่ทำให้โค้ดเดิมเสียหาย ส่วนการทดสอบคือการรันชุดทดสอบเดิมกับเวอร์ชันพัฒนาของ Go รุ่นถัดไป
- ยกตัวอย่างปัญหาความเข้ากันได้แบบละเอียดอ่อนที่ค้นพบจากการทดสอบ Go ภายใน Google เช่น struct literal กับฟิลด์ใหม่ และความละเอียดของเวลา
- จัดหมวดหมู่ปัญหาความเข้ากันได้ออกเป็น 3 ประเภท: การเปลี่ยนแปลงเอาต์พุต การเปลี่ยนแปลงอินพุต และการเปลี่ยนแปลงโปรโตคอล
- Go 1.21 ปรับปรุงความเข้ากันได้ย้อนหลังด้วยการขยายและทำให้การใช้
GODEBUG เป็นทางการ โดยการตั้งค่า GODEBUG จะคงไว้เป็นเวลาอย่างน้อย 2 ปี และจะถูกตั้งให้สอดคล้องกับเวอร์ชัน Go ที่ระบุในไฟล์ go.mod ของแพ็กเกจหลัก
- บทความปิดท้ายด้วยอัปเดตเกี่ยวกับ Go 2 โดยประกาศว่าจะไม่มี Go 2 ที่ทำให้โปรแกรม Go 1 ใช้งานไม่ได้ แต่ทีม Go จะให้ความสำคัญกับความเข้ากันได้เป็นอันดับแรก และเชื่อว่านี่คือการตัดสินใจด้านการออกแบบที่สำคัญที่สุดสำหรับ Go 1
1 ความคิดเห็น
ความคิดเห็นบน Hacker News