Wasm3 เข้าสู่ระยะการบำรุงรักษาขั้นต่ำ
(github.com/wasm3)- Wasm3 เป็น WebAssembly interpreter ที่รวดเร็วและมุ่งเป็น WASM runtime อเนกประสงค์ แต่ได้หยุดพัฒนาฟีเจอร์ใหม่และเข้าสู่ ระยะการบำรุงรักษาขั้นต่ำ
- ผู้พัฒนาระบุว่าไม่สามารถพัฒนาฟีเจอร์ใหม่ต่อได้ หลังบ้านถูกทำลายจากการรุกรานของรัสเซีย แต่จะยังคงดูแลโปรเจกต์ให้มีชีวิตต่อไป และจะตรวจสอบ·รวม Pull Request ที่เข้ามา
wasm3ผ่าน WebAssembly spec testsuite และสามารถรันแอปWASIได้จำนวนมาก โดยความต้องการขั้นต่ำของระบบที่ใช้งานได้จริงคือโค้ดประมาณ 64KB และ RAM ประมาณ 10KB- รองรับสถาปัตยกรรมหลายแบบ เช่น x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa, ARC32 รวมถึงแพลตฟอร์ม Linux, Windows, OS X, FreeBSD, Android, iOS, MCU, เบราว์เซอร์ และแม้แต่การรันตัวมันเอง
- แนวทางแบบ interpreter มีข้อดีด้านขนาดไฟล์ปฏิบัติการ การใช้หน่วยความจำ เวลาเริ่มต้น ความสามารถในการพอร์ต ความปลอดภัย และความยากง่ายในการผสานรวม ส่วนในสภาพแวดล้อมที่ไม่สามารถสร้าง runtime code page ได้ เช่น iOS หรือ WebAssembly เอง จะไม่สามารถใช้ JIT ได้
การเปลี่ยนแปลงสถานะการบำรุงรักษา
- Wasm3 เข้าสู่ ระยะการบำรุงรักษาขั้นต่ำ
- อยู่ในสถานะที่ยากจะพัฒนาฟีเจอร์ใหม่ต่อไป
- โปรเจกต์จะยังได้รับการดูแล และจะตรวจสอบ·รวม Pull Request ที่เข้ามาอย่างจริงจัง
- การมีส่วนร่วมจากชุมชนจึงสำคัญมากขึ้นกว่าเดิม
- ผู้พัฒนาระบุว่าปัจจุบันไม่สามารถเดินหน้าพัฒนาฟีเจอร์ใหม่ต่อได้ หลังบ้านถูกทำลายจากการรุกรานของรัสเซีย
สิ่งที่ Wasm3 มอบให้
- Wasm3 มุ่งเป็น WebAssembly interpreter ที่รวดเร็ว และ WASM runtime อเนกประสงค์
- คำกล่าวอ้างด้านประสิทธิภาพอ้างอิงจาก CoreMark 1.0 และ benchmark อิสระ
- ประสิทธิภาพจริงอาจแตกต่างกันไปตามสภาพแวดล้อม
- มีภาษาและสภาพแวดล้อมจำนวนมากที่สามารถใช้งานเป็นไลบรารีได้
สภาพแวดล้อมที่รันได้และข้อกำหนด
wasm3ผ่าน WebAssembly spec testsuite- สามารถรันแอป
WASIได้จำนวนมาก - ความต้องการขั้นต่ำของระบบที่ใช้งานได้จริงมีดังนี้
- โค้ด: ประมาณ 64KB
- RAM: ประมาณ 10KB
- รองรับสถาปัตยกรรมได้กว้างขวาง
x86,x86_64,ARM,RISC-V,PowerPC,MIPS,Xtensa,ARC32เป็นต้น
- รองรับแพลตฟอร์มและสภาพแวดล้อมหลากหลาย
- Linux, Windows, OS X, FreeBSD, Android, iOS
- เราเตอร์·โมเด็มที่ใช้ OpenWrt, Yocto, Buildroot
- SBC เช่น Raspberry Pi, Orange Pi
- MCU เช่น Arduino, ESP8266, ESP32, Particle
- สามารถรันในเบราว์เซอร์โดยใช้ WebAssembly เอง
- รองรับ self-hosting ที่
wasm3รันwasm3ได้ด้วย
การรองรับฟีเจอร์ WebAssembly
- ฟีเจอร์ข้อเสนอของ WebAssembly ที่รองรับ
- Import/Export of Mutable Globals
- Non-trapping float-to-int conversions
- Sign-extension operators
- Multi-value
- Bulk memory operations รองรับ บางส่วน
- Custom page size
- ฟีเจอร์เพิ่มเติม
- structured execution tracing
- รองรับระบบ Big-Endian
- self-hosting ของ Wasm และ WASI
- Gas metering
- จำกัด linear memory: น้อยกว่า 64KiB
- ยังมีรายการที่อยู่ระหว่างดำเนินการหรือยังไม่รองรับ
- อยู่ระหว่างดำเนินการ: Multiple memories, Reference types
- ยังไม่รองรับ: Tail call optimization, Fixed-width SIMD, Exception handling, Stack Switching
เหตุผลในการเลือก interpreter และ WASM แบบ embedded
- ความเร็วไม่ได้เป็นข้อกำหนดหลักเสมอไป และแนวทางแบบ interpreter มีข้อดีในหลายสถานการณ์
- สามารถปรับปรุงขนาดไฟล์ปฏิบัติการของ runtime การใช้หน่วยความจำ และเวลาเริ่มต้นได้
- บรรลุและรักษาความสามารถในการพอร์ตกับความปลอดภัยได้ง่ายกว่า
- ไลบรารีที่เรียบง่ายอย่าง Wasm3 คอมไพล์·ผสานรวมเข้ากับโปรเจกต์เดิมได้ง่าย และการ build เสร็จภายในไม่กี่วินาที
- ในบางแพลตฟอร์มไม่สามารถใช้ JIT ได้
- บน iOS และ WebAssembly เอง ไม่สามารถสร้าง code page สำหรับรันใน runtime ได้
- ยังมีการเสนอเหตุผลในการรัน WASM บนอุปกรณ์ embedded
- Wasm3 เริ่มต้นในฐานะโปรเจกต์วิจัย และการประเมิน engine ในสภาพแวดล้อมหลากหลายเป็นส่วนหนึ่งของงานวิจัย
- ในสถานการณ์ที่
Lua,JS,Python,Lispและอื่น ๆ รันบน MCU อยู่แล้วWebAssemblyก็อาจเป็นอีกทางเลือกหนึ่งได้ - WebAssembly มอบการแยก toolchain และสภาพแวดล้อมที่ถูก sandbox อย่างสมบูรณ์ มีนิยามชัดเจน และคาดการณ์ได้
- ตัวอย่างการใช้งานจริงได้แก่ edge computing, scripting, plugin system,
IoT rules, smart contract เป็นต้น
เอกสารอ้างอิงและไลเซนส์
- เอกสารหลัก
- เอกสารที่เกี่ยวข้อง
- โปรเจกต์เผยแพร่ภายใต้ MIT License
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เพราะเป็นบัญชีนิรนาม เลยพูดได้โดยไม่รู้สึกเหมือนกำลังอวดว่า ผมได้ทำสิ่งที่ทำได้มาแล้ว ไม่ว่าจะบริจาค รายงานพวกโทรลล์ ตอบโต้ข้อมูลเท็จ กดดันนักการเมือง ฯลฯ แต่ก็ยังรู้สึกเหมือนยังติดหนี้ชาวยูเครนอยู่
อยากให้คุณรู้ว่าคุณไม่ได้อยู่ลำพัง และอยากให้คนอื่น ๆ ทำสิ่งเล็ก ๆ เช่นกัน ไม่ว่าจะร้องขอนักการเมือง หรือช่วยเหล่าฮีโร่ทั้งพลเรือนและแนวหน้าด้วยการบริจาค และรายงานข้อมูลเท็จ
ขอให้ Volodymyr ผ่านช่วงเวลานี้ไปได้ด้วยดี ระหว่างที่เขาพยายามดูแลโปรเจกต์ท่ามกลางการรุกรานยูเครนของรัสเซีย และหวังว่าสงครามจะจบลงในเร็ว ๆ นี้
ประสิทธิภาพดีมาก และความงดงามของสถาปัตยกรรมกับโค้ดก็น่าประทับใจอย่างชัดเจน
ทวีตที่ลิงก์ไว้เป็นของเดือนกันยายน 2022 แสดงวิดีโอบ้านที่ถูกทำลาย และขอรับบริจาคจากผู้ที่ต้องการช่วยเหลือ
EU ควรควักเงินมากกว่านี้เพื่อช่วยยูเครน