• คณะกรรมการ 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น