- มีการประกาศ สเปก Wasm 2.0 อย่างเป็นทางการ
- Wasm Community และ Working Groups ได้ทำสเปกให้เสร็จสมบูรณ์ตั้งแต่ปี 2022 และ implementation หลัก ๆ ก็รองรับ 2.0 กันอยู่แล้ว
- ตั้งแต่ 2.0 เป็นต้นไป มีการนำ โมเดลเอเวอร์กรีน มาใช้ ทำให้เอกสาร Candidate Recommendation ถูกอัปเดตให้ทันสมัยอยู่เสมอ
- เมื่อมีการประกาศเวอร์ชันใหม่ จะไม่ย้ายไปเป็นข้อแนะนำฉบับสุดท้ายทุกครั้ง แต่ถือว่าร่างข้อแนะนำปัจจุบันเป็นมาตรฐาน
ฟีเจอร์หลักและสิ่งที่เพิ่มเข้ามาใน Wasm 2.0
- คำสั่งเวกเตอร์ (SIMD): เพิ่มคำสั่งใหม่ 236 รายการ เพื่อใช้ความสามารถ SIMD 128 บิตของ CPU สมัยใหม่ได้อย่างเต็มที่ เหมาะกับงานอย่าง codec เสียง/วิดีโอประสิทธิภาพสูง, machine learning, การเข้ารหัสลับ เป็นต้น
- คำสั่งหน่วยความจำแบบกลุ่ม (Bulk Memory): เพิ่มชุดคำสั่งที่ช่วยให้คัดลอกและกำหนดค่าเริ่มต้นให้หน่วยความจำและตารางได้อย่างรวดเร็ว
- การคืนค่าหลายค่า (Multi-value Return): ฟังก์ชันและบล็อกสามารถคืนค่าหลายค่าได้ ทำให้ calling convention ดีขึ้น และเปิดทางให้มีการแปลงโปรแกรมเพิ่มเติม
- Reference Types: รองรับการอ้างอิงถึงฟังก์ชันหรือพอยน์เตอร์ไปยังอ็อบเจ็กต์ภายนอก (เช่น ค่าใน JavaScript) ในรูปแบบค่า first-class แบบ opaque โดยสามารถใช้ตารางเป็นที่เก็บค่าอ้างอิงเหล่านี้ได้ และรองรับคำสั่งสำหรับจัดการตารางรวมถึงการกำหนดหลายตาราง
- การแปลงแบบไม่เกิด trap (Non-trapping Conversions): เพิ่มคำสั่งแปลงค่าจาก floating point เป็น integer โดยไม่ทำให้เกิด trap ที่ไม่คาดคิด
- คำสั่งขยายเครื่องหมาย (Sign-extension Operators): เพิ่มคำสั่งสำหรับขยายความกว้างของ signed integer ได้โดยตรง ทำให้ไม่ต้องเข้าถึงหน่วยความจำเพื่อขยายค่าเหมือนก่อน
ความเข้ากันได้ย้อนหลังและแนวโน้มในอนาคต
- Wasm 2.0 เข้ากันได้อย่างสมบูรณ์กับ 1.0 ทำให้โปรแกรมเดิมยังทำงานได้เหมือนเดิม
- Wasm 3.0 ก็มีกำหนดเปิดตัวในเร็ว ๆ นี้
2 ความคิดเห็น
WA!(SM)
ความเห็นจาก Hacker News