- คณะกรรมการ TC39 ได้เพิ่มสเตจใหม่ "2.7" เพื่อทำให้กระบวนการอัปเดต JavaScript เร็วขึ้นและลื่นไหลยิ่งขึ้น
- เบื้องหลังของการอัปเดต
- หลังจาก ECMAScript 2015 เป็นต้นมา JavaScript ได้รับการอัปเดตใหม่ทุกปี
- คณะกรรมการ TC39 ได้ทุ่มเทความพยายามอย่างมากกับงานทำมาตรฐานเพื่อพัฒนาภาษา
- จึงได้นำกระบวนการหลายสเตจมาใช้เพื่อให้มั่นใจว่าฟีเจอร์ใหม่จะได้รับการออกแบบ ทดสอบ และนำไปใช้อย่างรอบคอบ
กระบวนการแบบเป็นขั้นตอนเพื่อคุณภาพและความเข้ากันได้
- Stage 0: สำรวจไอเดียฟีเจอร์ใหม่และนิยามปัญหา
- Stage 1: ต้องมีรีโพซิทอรีและ "champion" ที่อธิบายประโยชน์ของฟีเจอร์ พร้อมคำอธิบายที่ชัดเจนและประเด็นปัญหาที่อาจเกิดขึ้น
- Stage 2: Draft การออกแบบเริ่มต้นสำหรับสเปก คณะกรรมการคาดว่าฟีเจอร์ดังกล่าวจะกลายเป็นส่วนหนึ่งของภาษา
- Stage 3: ข้อเสนอระดับผู้สมัครซึ่งแทบจะเสร็จสมบูรณ์แล้ว แต่ยังต้องอาศัยประสบการณ์จริงผ่านการนำไป implement ในเบราว์เซอร์หรือ server-side runtime
- Stage 4: หมายถึงงานทั้งหมดของสเปกเสร็จสิ้นแล้ว และพร้อมถูกรวมเข้าในสเปกภาษาทั้งหมด เป็นขั้นตอนอนุมัติสุดท้าย
การทดสอบในฐานะหมุดหมายที่ชัดเจน
- ในกระบวนการเดิม เมื่อไปถึง Stage 3 แล้ว บางครั้งก็ต้องเขียนการทดสอบใหม่อีกครั้ง
- โดยเฉพาะสำหรับข้อเสนอขนาดใหญ่ หากต้องเปลี่ยนการออกแบบ การย้อนกลับไปที่ Stage 2 จะเจ็บปวดกว่าการถอยกลับไป Stage 3 เสียอีก
- การเขียนการทดสอบต้องใช้ปริมาณงานมากพอสมควร ดังนั้นถ้าต้องทำซ้ำสองครั้ง การย้ายระหว่างสเตจก็จะยุ่งยากกว่าที่ตั้งใจไว้
- Stage 2.7 ใหม่จึงถูกนำมาใช้เพื่อแยกขั้นตอนการทดสอบออกจากการ implement
ข้อกำหนดของ Stage 2.7
- ได้รับการอนุมัติ "โดยหลักการ" แล้ว แต่ยังต้องมีการตรวจสอบยืนยัน
- การเขียนการทดสอบเป็นหนึ่งในวิธีที่ดีที่สุดในการพิจารณาผลลัพธ์ทั้งหมดของการออกแบบฟีเจอร์ บางฟีเจอร์อาจจำเป็นต้องเขียนการทดสอบก่อนที่การออกแบบจะเสร็จสมบูรณ์
- ต้องพัฒนา test suite ฉบับสมบูรณ์และต้นแบบ พร้อมสะสมประสบการณ์ให้เพียงพอเพื่อแสดงว่าสามารถนำไป implement ได้
- ข้อความสเปกของฟีเจอร์เสร็จสมบูรณ์แล้ว และคณะกรรมการ TC39 จะไม่ขอให้แก้ไขเพิ่มเติม ยกเว้นการเปลี่ยนแปลงที่เกิดจากการทดสอบ การ implement และการใช้งาน
- Stage 2.7 ช่วยลดงานซ้ำซ้อนที่ไม่จำเป็น และช่วยให้ข้อเสนอสามารถขยับไปยัง Stage 3 ได้ทันที
- ตอนนี้ Stage 3 จะมุ่งเน้นไปที่การเก็บประสบการณ์จากการ implement และการค้นหาปัญหาด้าน web compatibility หรือการบูรณาการ
การใช้งานจริงของ Stage 2.7
- ตอนที่คณะกรรมการ TC39 เพิ่ม Stage 2.7 ได้มีการทบทวนข้อเสนอ Stage 3 เดิมทั้งหมด โดยบางโครงการยังไม่ได้เช็กอินการทดสอบครบทั้งหมด แต่เกือบพร้อมแล้ว จึงยังคงอยู่ที่ Stage 3
- มีข้อเสนอหลายรายการที่ไปถึง Stage 2.7 แล้ว เช่น deferred import และเมธอด Math.sumPrecise
Regexp.escape ซึ่งรองรับ string escape ภายใน regular expression ได้ไปถึง Stage 2.7 และย้ายต่อไปยัง Stage 3 พร้อมกับ test suite
- ในทางกลับกัน ข้อเสนอ "microwaits" (ปัจจุบันใช้ชื่อ
atomics.pause) เป็นกรณีที่เขียนการทดสอบที่มีประโยชน์ได้ยาก จึงเพิ่งถูกย้ายไปยัง Stage 2.7 โดยการหารือส่วนใหญ่เป็นเรื่องว่าจะใส่หมายเหตุอ้างอิงอะไรไว้ในสเปกสำหรับการ implement
ยังไม่มีความคิดเห็น