• มีการประกาศมาตรฐาน Wasm 3.0 อย่างเป็นทางการ พร้อมฟีเจอร์ขนาดใหญ่ที่เตรียมกันมานาน 6–8 ปี
  • มี พื้นที่แอดเดรส 64 บิต, garbage collection, typed references, tail calls, การจัดการข้อยกเว้น ฯลฯ ช่วยให้คอมไพล์ภาษาแบบ high-level ไปยัง Wasm ได้ง่ายขึ้น
  • ฟีเจอร์หลักใหม่ ๆ ช่วยด้าน แอปพลิเคชันประสิทธิภาพสูง, รันไทม์ของหลายภาษา, ความปลอดภัย และการขยายระบบ
  • เหมาะกับกรณีใช้งานที่ต้องจัดการความจุและชุดข้อมูลขนาดใหญ่ใน ระบบนอกเหนือจากเว็บ ด้วย
  • ตอนนี้รองรับแล้วในเว็บเบราว์เซอร์หลัก และเอนจินอิสระอย่าง Wasmtime ก็ใกล้รองรับครบถ้วน ทำให้ Wasm ยิ่งชัดเจนขึ้นในฐานะ แพลตฟอร์มรันโปรแกรมอเนกประสงค์

ภาพรวมการเปิดตัว Wasm 3.0

  • มาตรฐาน WebAssembly เวอร์ชัน 3.0 เปิดตัวเมื่อวันที่ 17 กันยายน 2025
    • นับเป็นการอัปเดตใหญ่ในรอบ 3 ปี หลังจากเวอร์ชัน 2.0 (เสร็จสมบูรณ์ในปี 2022) ที่เพิ่ม vector instructions, bulk memory operations, multiple return values และ simple reference types
    • กลุ่ม W3C Community Group และ Working Group พัฒนาต่อเนื่องมาโดยตลอด และรีลีสครั้งนี้เป็นการเปลี่ยนแปลงขนาดใหญ่ที่รวม ฟีเจอร์สำคัญซึ่งเตรียมมานาน 6–8 ปี
    • Wasm ยังคงแนวคิดของการเป็นภาษา low-level แต่เสริมระบบหน่วยความจำและระบบชนิดข้อมูลให้แข็งแรงขึ้น เพื่อรองรับ การคอมไพล์ภาษา high-level ได้ดียิ่งขึ้น
  • ฟีเจอร์ที่พัฒนาหลังเวอร์ชัน 2.0 ได้เสร็จสมบูรณ์และกลายเป็น มาตรฐาน Live พร้อมการรองรับที่ขยายเพิ่มทั้งในเว็บเบราว์เซอร์และเอนจินอิสระ
    • สามารถติดตามสถานะการรองรับของแต่ละเอนจินได้ที่ หน้าสถานะฟีเจอร์ของ Wasm
    • ใช้ toolchain ใหม่ SpecTec ในการสร้างเวอร์ชันนี้เป็นครั้งแรก จึงช่วย เพิ่มความน่าเชื่อถือ

การเปลี่ยนแปลงสำคัญและฟีเจอร์ใหม่

  • พื้นที่แอดเดรส 64 บิต
    • สามารถประกาศหน่วยความจำและตารางด้วยชนิด i64 ได้
    • ขยายพื้นที่แอดเดรสของแอป Wasm จากราว 4GB ไปจนถึงขีดจำกัดทางกายภาพ (เชิงทฤษฎี 16 exabytes)
    • สำหรับเว็บจะยังจำกัดไว้ที่ 16GB แต่ใน ระบบนอกเว็บ มีประโยชน์สำหรับการรองรับแอปพลิเคชันและชุดข้อมูลขนาดใหญ่
  • หลายหน่วยความจำ
    • สามารถประกาศและเข้าถึง อ็อบเจ็กต์หน่วยความจำหลายตัว ได้โดยตรงภายในโมดูลเดียว
    • ใช้งานได้หลากหลาย เช่น การรวมโมดูล การแยกพื้นที่แอดเดรส การบัฟเฟอร์ และความปลอดภัย
    • ทำให้เครื่องมือ static linking อย่าง wasm-merge ใช้กับโมดูล Wasm ได้ทั้งหมด
  • Garbage Collection (GC)
    • นอกจาก linear memory แล้ว ยังรองรับ พื้นที่จัดเก็บที่รันไทม์ของ Wasm ดูแลให้อัตโนมัติ
    • คอมไพเลอร์สามารถประกาศ data layout ได้โดยตรง เช่น struct/array types และ unboxed integers
    • มีเพียงบิลดิ้งบล็อกพื้นฐานสำหรับการจัดการหน่วยความจำ ส่วน ระบบอ็อบเจ็กต์ระดับสูงหรือ closure สามารถออกแบบแยกกันตามภาษาที่นำไปใช้
  • Typed References
    • ระบบชนิดข้อมูลของ Wasm ถูกขยายให้ อธิบายรูปแบบของค่าในฮีปและฟังก์ชันรีเฟอเรนซ์ได้แม่นยำขึ้น
    • รองรับ subtyping และ type recursion พร้อมคำสั่งใหม่ call_ref ที่ช่วยให้ เรียกฟังก์ชันทางอ้อมอย่างปลอดภัยโดยไม่ต้องเช็กชนิดข้อมูลตอนรันไทม์
  • Tail Calls
    • รองรับโครงสร้าง tail call ที่คืนค่าทันทีโดยไม่ต้องใช้พื้นที่สแตกเพิ่มจากฟังก์ชันเดิม
    • นำไปใช้กับภาษาเชิงฟังก์ชันหรือการปรับแต่งภายในรันไทม์ได้
  • การจัดการข้อยกเว้น
    • เพิ่ม ระบบจัดการข้อยกเว้นแบบเนทีฟ ภายใน Wasm
    • รองรับการประกาศ exception tag และ payload, การ catch แบบเลือกได้ และตัวจัดการข้อยกเว้นระดับบล็อก
    • ช่วย เพิ่ม portability และประสิทธิภาพ โดยไม่ต้องใช้วิธีอ้อมผ่าน JS ที่ไม่มีประสิทธิภาพแบบเดิม
  • คำสั่งเวกเตอร์แบบ relaxed
    • เพื่อรองรับความแตกต่างของฮาร์ดแวร์สำหรับคำสั่ง SIMD จึงมี relaxed variant ที่เปิดให้รายละเอียดการทำงานบางส่วนขึ้นกับการอิมพลีเมนต์
    • ทำให้สามารถปรับแต่งประสิทธิภาพได้หลากหลายภายในขอบเขตพฤติกรรมที่ถูกต้อง
  • โปรไฟล์แบบกำหนดผลลัพธ์แน่นอน
    • แม้ในกรณีที่ผลลัพธ์ของคำสั่งเดียวกันอาจไม่เป็น deterministic เช่น การคำนวณ floating point หรือ relaxed SIMD ก็ยัง กำหนดการทำงานแบบ deterministic ข้ามแพลตฟอร์ม ได้
    • ช่วยรับประกัน ความสามารถในการทำซ้ำและการพกพา สำหรับบล็อกเชนหรือระบบที่ต้อง replay ได้
  • ไวยากรณ์ custom annotation
    • เพิ่ม ไวยากรณ์ annotation ที่มนุษย์อ่านและเขียนได้ในซอร์สโค้ด
    • แม้มาตรฐานจะไม่ตีความโดยตรง แต่สามารถนำไปใช้กับมาตรฐานหรือส่วนขยายในอนาคตได้

การเชื่อมต่อกับ JavaScript และความเข้ากันได้

  • JS string builtins
    • สามารถส่งและจัดการค่าสตริงของ JS ใน Wasm ได้ผ่าน externref
    • โดย import ฟังก์ชันพื้นฐานใหม่ ก็จะสามารถใช้สตริง JS ภายนอกได้โดยตรงภายใน Wasm

ประโยชน์และแนวโน้มของ Wasm 3.0

  • เป็นรากฐานสำคัญที่จำเป็นสำหรับ การคอมไพล์ภาษาโปรแกรมระดับสูงไปยัง Wasm
  • ภาษาอย่าง Java, OCaml, Scala, Kotlin, Scheme, Dart เป็นต้น ก็เริ่มใช้ฟีเจอร์ GC อย่างจริงจังมากขึ้น

สถานะการจัดทำสเปกและการเผยแพร่

  • Wasm 3.0 เป็นมาตรฐานแรกที่สร้างด้วย toolchain ใหม่ SpecTec
  • เว็บเบราว์เซอร์หลัก ส่วนใหญ่รองรับ Wasm 3.0 แล้ว และเอนจินแบบสแตนด์อโลนอย่าง Wasmtime ก็ใกล้เสร็จสมบูรณ์
  • ตรวจสอบสถานะการรองรับของแต่ละเอนจินได้ที่หน้า Wasm feature status

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

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