Flutter: เลขเวอร์ชันของ Flutter มีความหมายอย่างไรบ้าง?

Published on

Authored by Pete. Pittawat Taveekitworachai.


เมื่อช่วงต้นปี (2020) ที่ผ่านมา Flutter ได้มีการปรับระบบการออกอัพเดท รวมถึงการตั้งเลขเวอร์ชันใหม่ เพื่อให้นักพัฒนาสามารถเข้าใจได้ง่ายขึ้น และผู้ที่สนใจจะช่วยก็สามารถช่วยร่วมพัฒนา Flutter ได้ง่ายขึ้นเช่นกัน

โดยปัจจุบัน Flutter ใช้ Braching model ในการกำหนดการ Release ของ Stable และ Beta ซึ่งในทุก ๆ ช่วงต้นเดือนจะมีการ Branch ออกมาสำหรับ Beta Release และนำไปพัฒนาต่อให้มีความเสถียรมากยิ่งขึ้นผ่านการ Cherry-pick การแก้ไขที่สำคัญ ๆ เข้ามา และทุก ๆ 4 เดือน Flutter จะโปรโมท Beta Branch ไปเป็น Stable Release และหลังจากนั้นก็จะยังมีการ Maintenance ในส่วนของ Hotfixes ต่าง ๆ ให้ Stable Release ตามความจำเป็น

นอกจากนี้ในปัจจุบันการ Release ของ Flutter ยังผูกกับการ Release ของ Dart อีกด้วย นั่นหมายความว่าเมื่อมีการ Release Flutter เวอร์ชันใหม่ Dart เวอร์ชันใหม่ก็จะถูก Release ด้วยเช่นกัน นอกจากนี้ใน Flutter Beta ก็จะใช้ Dart Beta ด้วยเช่นกัน

สำหรับความหมายของตัวเลขเวอร์ชันของ Flutter ในปัจจุบันก็จะเป็นการยึดตาม SemVer และปรับปรุงเพิ่มเติม ดังนี้

สำหรับเวอร์ชันที่เป็นเวอร์ชันที่ถูกสร้างมาจาก master โดยแต่ละ Built จะอยู่บน Branch dev (ไม่ใช่ Beta) จะมี .pre ตามหลังเลขเวอร์ชัน เพื่อแสดงถึงการเป็น Pre-release โดยจะมีลักษณะเลขเวอร์ชันเป็น x.y.z-n.m.pre โดยทุก ๆ ครั้งที่มีการ Built จาก master เลข n จะเป็นเพิ่มขึ้นหนึ่ง เช่น

  • 1.18.0–1.0.pre:  dev build แรก หลังจากที่ master ขยับไปเวอร์ชัน 1.18
  • 1.18.0–2.0.pre:  dev build ถัดไปจากจุดล่าสุดของ master

สำหรับเวอร์ชัน Beta นั้นจะมาจาก dev ข้างบนโดยวิธีการ Cherry-pick จาก Release ทั้งหมด ทุก ๆ ครั้งที่มีการ Release m จะเพิ่มขึ้นหนึ่ง เช่น หากนำเวอร์ชันที่ 15 จาก dev ซึ่งมาจาก master เวอร์ชัน 1.18 เข้าสู่ beta จะเป็นดังนี้

  • 1.18.0–15.0.pre:  beta เวอร์ชันแรก (เวอร์ชันเดียวกับบน dev ที่เลือกมาโดยไม่มีอะไรเพิ่มเติม)
  • 1.18.0–15.1.pre: beta เวอร์ชันถัดไปที่มีการ Cherry pick บางอย่างมาเพิ่มเติม
  • 1.18.0–15.2.pre: เวอร์ชันที่ 2 ของ beta นี้

และสุดท้ายเวอร์ชัน Stableจะมีเลขเวอร์ชันเป็น x.y.0 และทุก ๆ ครั้งที่มีการปล่อย Hotfixes จะมีการอัพเดทเลข Patch เช่น x.y.1, x.y.2 ตัวอย่าง

  • 1.18.0–15.4.pre เวอร์ชันบน beta ที่เลือกมา ยังไม่ถือเป็น Stable
  • 1.18.0: Stable Release ซึ่งจริง ๆ แล้วเหมือน 1.18.0–15.4.pre เลยแค่เปลี่ยนเลขเวอร์ชันและสถานะเป็น Stable
  • 1.18.1: Hotfix เวอร์ชัน 1.18.0

📚 Hope you enjoy reading! 📚