แบ็กเอนด์เชิงทดลองใหม่
- เพิ่มการรองรับ V8, Wasmi และ WAMR
- ตอนนี้สามารถผสานอินทรีพรีเตอร์หรือรันไทม์ใด ๆ ที่รองรับสเปก Wasm-C-API เข้ากับ Wasmer ได้อย่างง่ายดาย
- การผสานรวม V8 มอบประสบการณ์การดีบักที่ยอดเยี่ยมผ่าน V8 debugger และ Chrome Devtools
- การใช้ V8 เป็นแบ็กเอนด์ยังหมายถึงการรองรับ WebAssembly exceptions และ garbage collection แบบเนทีฟด้วย
รองรับ iOS (ผ่าน WAMR, Wasmi และ V8 bindings)
- Wasmer นำ WebAssembly มาสู่อุปกรณ์ iOS ผ่านโหมดอินทรีพรีเตอร์แบบใหม่
- ด้วยความสามารถของ V8, Wasmi และ WebAssembly Micro Runtime(WAMR) ตอนนี้นักพัฒนาสามารถรันโมดูล WebAssembly บน iOS ได้อย่างราบรื่น
- ไม่จำเป็นต้องแก้ไขโค้ดเบส และทำให้สามารถสร้างแอปพลิเคชันประสิทธิภาพสูงในระบบนิเวศของ Apple ได้
ทำให้โค้ดเบสเพรียวลง
- สำหรับการเปิดตัว Wasmer 5.0 ทีมได้มุ่งเน้นทำให้โค้ดเบสของ Wasmer เพรียวที่สุดเท่าที่จะเป็นไปได้
- บาง dependency ที่ Wasmer ใช้งานนั้นไม่ได้รับการดูแลมานานแล้ว หรือซ้ำซ้อนกับ crate รุ่นใหม่ที่ปลอดภัยกว่า
- เนื่องจาก Emscripten bindings แทบไม่ได้ถูกใช้งานในช่วง 2 ปีที่ผ่านมา จึงยุติการรองรับและจัดระเบียบ dependency ส่งผลให้ลบโค้ดออกจากโค้ดเบสของ Wasmer ไปได้ถึง 20,000 บรรทัด
ปรับปรุงประสิทธิภาพ
- การ deserialize โมดูลเร็วขึ้นได้สูงสุด 50% แล้ว (เช่น เมื่อเรียก
Module::deserialize หรือรันโมดูลผ่าน wasmer run)
- การปรับปรุงเหล่านี้อาศัยการอัปเดตครั้งสำคัญของ rkyv ซึ่งเป็นไลบรารี zero-copy deserialization ที่ใช้สำหรับ deserialize โมดูล
อัปเกรดคอมไพเลอร์: Cranelift และ LLVM 18
- ด้วยการผสานรวม Cranelift รุ่นล่าสุด ความเร็วขณะรันไทม์จึงดีขึ้นอย่างมาก ทำให้โมดูล WebAssembly ทำงานได้เร็วกว่าเดิม
- ตอนนี้ Wasmer 5.0 มาพร้อม LLVM เวอร์ชันล่าสุด (18) ทำให้นักพัฒนาเข้าถึงการปรับแต่งล่าสุดของ toolchain ได้
- การอัปเกรด LLVM ช่วยเพิ่มทั้งความเข้ากันได้และประสิทธิภาพ มอบรากฐานที่แข็งแกร่งสำหรับการคอมไพล์และรันโมดูล WebAssembly ที่ซับซ้อน
- Wasmer 5.0 ยังมาพร้อมการรองรับ LoongAarch64 แบบทดลองอีกด้วย
- จากการ benchmark
coremark ด้วยคอมไพเลอร์เวอร์ชันล่าสุด พบว่า LLVM และ Cranelift ใน Wasmer v5.0 เร็วกว่า v4.4.0 ประมาณ 8%
ความเห็นจาก GN⁺
- การเปิดตัว Wasmer 5.0 ดูจะเป็นอีกก้าวสำคัญของระบบนิเวศ WebAssembly โดยเฉพาะการรองรับ iOS และการมีตัวเลือกแบ็กเอนด์ที่หลากหลาย ซึ่งคาดว่าจะช่วยขยายขอบเขตการใช้งาน WebAssembly ไปสู่แอปพลิเคชันบนมือถือได้มากขึ้น
- การรองรับรันไทม์หลากหลายแบบเป็นแบ็กเอนด์ เช่น V8, Wasmi และ WAMR ทำให้นักพัฒนาสามารถเลือกรันไทม์ที่เหมาะกับความต้องการของตนเองได้มากที่สุด ซึ่งน่าจะช่วยเพิ่มทั้งความยืดหยุ่นและความเข้ากันได้ของ WebAssembly อย่างมาก
- ความพยายามด้านการเพิ่มประสิทธิภาพผ่านการทำให้โค้ดเบสเพรียวลงและการนำคอมไพเลอร์รุ่นใหม่มาใช้ก็เป็นจุดที่น่าจับตาเช่นกัน สิ่งนี้แสดงให้เห็นว่า Wasmer ไม่ได้มุ่งเพียงเพิ่มฟีเจอร์เท่านั้น แต่ยังให้ความสำคัญกับการยกระดับคุณภาพอย่างต่อเนื่องด้วย
- ขณะเดียวกัน การยุติการรองรับ Emscripten bindings ก็เป็นจุดที่น่าเสียดายอยู่บ้าง แต่เมื่อพิจารณาว่ามาตรฐานใหม่อย่าง WASI และ WASIX ได้เกิดขึ้นมาและลดความจำเป็นของมันลง ก็ถือเป็นการตัดสินใจที่สมเหตุสมผล
- โดยรวมแล้ว Wasmer 5.0 เป็นรีลีสที่สะท้อนพัฒนาการของ WebAssembly ได้อย่างชัดเจน และคาดว่า Wasmer จะยังคงเป็นหนึ่งในโครงการสำคัญที่ขับเคลื่อนระบบนิเวศ WebAssembly ต่อไป อย่างไรก็ตาม ฟีเจอร์ที่ยังอยู่ในขั้นทดลองก็ยังต้องอาศัยความพยายามอย่างต่อเนื่องเพื่อยกระดับเสถียรภาพและความสมบูรณ์
1 ความคิดเห็น
ความคิดเห็นบน Hacker News