1 คะแนน โดย GN⁺ 2023-12-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 เป็นต้น

เอกสารอ้างอิงและไลเซนส์

1 ความคิดเห็น

 
GN⁺ 2023-12-19
ความคิดเห็นบน Hacker News
  • ผมเป็น OP เอง ถ้ามีคำถามก็พร้อมตอบ
    • แม้จะไม่เกี่ยวกับโปรเจกต์ Wasm แต่ขอให้คุณ รวมถึงเพื่อนและครอบครัวปลอดภัย ขอเกียรติจงมีแด่ยูเครน และขอให้ผู้ยึดครองไสหัวไป
    • ในฐานะสมาชิก NAFO รุ่นแรก ขอส่งกำลังใจให้
      เพราะเป็นบัญชีนิรนาม เลยพูดได้โดยไม่รู้สึกเหมือนกำลังอวดว่า ผมได้ทำสิ่งที่ทำได้มาแล้ว ไม่ว่าจะบริจาค รายงานพวกโทรลล์ ตอบโต้ข้อมูลเท็จ กดดันนักการเมือง ฯลฯ แต่ก็ยังรู้สึกเหมือนยังติดหนี้ชาวยูเครนอยู่
      อยากให้คุณรู้ว่าคุณไม่ได้อยู่ลำพัง และอยากให้คนอื่น ๆ ทำสิ่งเล็ก ๆ เช่นกัน ไม่ว่าจะร้องขอนักการเมือง หรือช่วยเหล่าฮีโร่ทั้งพลเรือนและแนวหน้าด้วยการบริจาค และรายงานข้อมูลเท็จ
    • ตอนนี้ปลอดภัยไหม?
    • มีเวลาพักหรือพอมีโอกาสทำอะไรสนุก ๆ บ้างไหม หรือยังเครียดอยู่ตลอด?
  • มีบริบทเพิ่มเติมในโพสต์ Twitter ของฝั่ง Wasm3: https://x.com/wasm3_engine/status/1736712528883769670?s=20
  • พูดตามตรง ข่าวนี้ทำให้เศร้า Wasm3 เป็น Wasm interpreter ที่ยอดเยี่ยมและโดดเด่นด้านประสิทธิภาพ ช้ากว่า native ราว 3~5 เท่า แต่เร็วกว่า Wasm interpreter ทั่วไปประมาณ 3 เท่า
    ขอให้ Volodymyr ผ่านช่วงเวลานี้ไปได้ด้วยดี ระหว่างที่เขาพยายามดูแลโปรเจกต์ท่ามกลางการรุกรานยูเครนของรัสเซีย และหวังว่าสงครามจะจบลงในเร็ว ๆ นี้
    • เห็นด้วย เป็นหนึ่งใน WASM interpreter ที่ดีที่สุด และผมมองว่าดีกว่า runtime บางตัวที่หาได้ตามที่ต่าง ๆ ด้วยซ้ำ
      ประสิทธิภาพดีมาก และความงดงามของสถาปัตยกรรมกับโค้ดก็น่าประทับใจอย่างชัดเจน
  • คำอธิบายคือ: เนื่องจากรัสเซียรุกรานและบ้านถูกทำลาย Wasm3 จึงเข้าสู่สถานะดูแลขั้นต่ำ โดยไม่สามารถพัฒนาฟีเจอร์ใหม่ต่อได้ แต่จะพิจารณาและ merge Pull Request ที่เข้ามาอย่างแข็งขันเพื่อให้โปรเจกต์ยังคงอยู่ต่อไป
    ทวีตที่ลิงก์ไว้เป็นของเดือนกันยายน 2022 แสดงวิดีโอบ้านที่ถูกทำลาย และขอรับบริจาคจากผู้ที่ต้องการช่วยเหลือ
    • นี่มันเลวร้ายมาก Slava Ukraini
    • ดูเหมือนบ้านหลังนั้นต้องการ หลังคาใหม่ ให้เร็วที่สุดเพื่อกันฝนและหิมะ
    • ถึงตอนนี้ ผมหวังจริง ๆ ว่าจะมีใครสักคนในรัสเซียกำจัด Putin ได้แล้ว เชื่อว่าคงมีคนไม่น้อยที่ไม่ได้ชอบเขานัก
      EU ควรควักเงินมากกว่านี้เพื่อช่วยยูเครน