wasm3 ตัวแปล WebAssembly เปิดตัวเวอร์ชันแรก

W3

เมื่อเร็ว ๆ นี้ wasm3 เวอร์ชันแรกได้รับการเผยแพร่, ซึ่งเป็น ล่าม โค้ดระดับกลางเร็วมาก โดย WebAssemblyเนื่องจากได้รับการออกแบบมาเพื่อรันแอ็พพลิเคชัน WebAssembly บนไมโครคอนโทรลเลอร์และแพลตฟอร์มที่ไม่มีการนำ JIT ไปใช้กับ WebAssembly จึงมีหน่วยความจำไม่เพียงพอสำหรับ JIT ในการทำงานหรือการสร้างเพจหน่วยความจำที่สามารถเรียกใช้งานได้ซึ่งจำเป็นสำหรับการใช้งาน JIT

สำหรับผู้ที่ไม่คุ้นเคยกับ WebAssembly คุณควรทราบว่านี่คือ ภาษาระดับต่ำ เริ่มต้นออกแบบเป็นรูปแบบเป้าหมายเมื่อคอมไพล์จาก C และ C ++ แม้ว่าจะรองรับซอร์สโค้ดสำหรับภาษาอื่น ๆ เช่น Rust and Go รูปแบบรหัสไบนารีแบบพกพานี้ใช้สำหรับการเรียกใช้สคริปต์ทั้งหมดจากเบราว์เซอร์ฝั่งไคลเอ็นต์

เกี่ยวกับ wasm3

Wasm3 ผ่านการทดสอบความเข้ากันได้ ด้วยข้อกำหนด WebAssembly 1.0 และ สามารถใช้เพื่อเรียกใช้แอปพลิเคชัน WASI จำนวนมาก ให้ประสิทธิภาพน้อยกว่าเครื่องยนต์ JIT เพียง 4-5 เท่าและน้อยกว่าการรันโค้ดเนทีฟ 11.5 เท่า

เมื่อเทียบกับนักแสดงคนอื่น ๆ จาก WebAssembly (wac, life, wasm-micro-runtime), wasm3 เร็วขึ้น 15.8 เท่า

Wasm3 เริ่มต้นจากโครงการวิจัยและยังคงดำเนินต่อไปด้วยวิธีการมากมาย การประเมินมอเตอร์ในสภาพแวดล้อมที่แตกต่างกันเป็นส่วนหนึ่งของการตรวจสอบ เนื่องจากเรามี Lua, JS, Python, Lisp, (…) ที่ทำงานบน MCU WebAssembly จึงเป็นทางเลือกที่มีแนวโน้ม ให้สภาพแวดล้อมที่แยกได้อย่างสมบูรณ์กำหนดไว้อย่างดีและคาดเดาได้ ในกรณีการใช้งานจริงเราสามารถแสดงรายการคอมพิวเตอร์ที่ทันสมัยการเขียนสคริปต์การเรียกใช้กฎ IoT สัญญาบล็อกเชน ฯลฯ

วอสเอ็ม3 ต้องการหน่วยความจำ 64Kb สำหรับรหัสและ RAM 10Kb คุณคืออะไร อนุญาตให้ใช้โครงการ เพื่อเรียกใช้แอปพลิเคชันที่คอมไพล์ใน WebAssembly ในไมโครคอนโทรลเลอร์เช่น Arduino MKR *, Arduino Due, อนุภาคโฟตอน, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 ยาสีฟ้า (STM32F103C8T6), MXChip AZ3166 (EMW3166), Maix (K210), HiFive1 (E310), AT40ga5 (ICE1284), ATXNUMXgaXNUMX (ICEXNUMX) เช่นเดียวกับบนบอร์ดและคอมพิวเตอร์ตามสถาปัตยกรรม x86, x64, ARM, MIPS, RISC-V และ Xtens

ประสิทธิภาพสูงทำได้โดยใช้เทคนิค Massey Meta Machine (M3) ในล่ามซึ่ง เพื่อลดค่าใช้จ่ายในการถอดรหัส bytecode, รหัส bytecode ได้รับการแปลในเชิงรุก ในการดำเนินการที่มีประสิทธิภาพมากขึ้นซึ่งสร้างรหัสเครื่องหลอกและรูปแบบการดำเนินการของเครื่องเสมือนแบบสแต็กกลายเป็นวิธีการลงทะเบียนที่มีประสิทธิภาพมากขึ้นการดำเนินการใน M3 คือฟังก์ชัน C ซึ่งอาร์กิวเมนต์คือรีจิสเตอร์ของเครื่องเสมือนซึ่งสามารถสะท้อนให้เห็นใน CPU ลงทะเบียน

เวิร์กโฟลว์ที่ใช้บ่อยสำหรับการเพิ่มประสิทธิภาพจะเปลี่ยนเป็นการดำเนินการโดยสรุป

นอกจากนี้ ผลการศึกษาสามารถสังเกตได้ที่ WebAssembly บนเว็บหลังจากวิเคราะห์ไซต์ยอดนิยม 948 พันแห่งที่ Alexa จัดอันดับโดยนักวิจัยพบว่า WebAssembly ถูกใช้โดย 1639 ไซต์ (0.17%) ซึ่งเป็น 1 ใน 600 ไซต์

โดยรวมแล้วเว็บไซต์ต่างๆเปิดเผยการโหลดโมดูล WebAssembly ปี 1950 ซึ่ง 150 โมดูลไม่ซ้ำกัน

เมื่อพิจารณาขอบเขตของ WebAssembly พบข้อสรุปที่น่าผิดหวัง: ในกรณีมากกว่า 50% WebAssembly ถูกใช้เพื่อจุดประสงค์ที่เป็นอันตรายเช่นขุด cryptocurrencies (55,7%) และเพื่อซ่อนโค้ดจากสคริปต์ที่เป็นอันตราย (0,2, XNUMX%) .

ของระบบปฏิบัติการที่รองรับ สำหรับ Wasm3 เราสามารถค้นหา Linux รวมถึงเราเตอร์ที่ใช้ OpenWRT Windows, macOS, Android และ iOS. นอกจากนี้ยังสามารถรวบรวม wasm3 ลงในโค้ด WebAssembly กลางเพื่อเรียกใช้ล่ามในเบราว์เซอร์หรือสำหรับการโฮสต์ด้วยตนเอง

จากการใช้งาน WebAssembly อย่างถูกกฎหมายการเรียกใช้ไลบรารี (38.8%) การสร้างเกม (3.5%) และการเรียกใช้โค้ดเนทีฟที่ไม่ใช่ JavaScript (0.9%) ใน 14,9% ของกรณี WebAssembly ถูกใช้เพื่อวิเคราะห์สภาพแวดล้อมสำหรับการระบุตัวผู้ใช้ (ลายนิ้วมือ)

ลอง wasm3

สำหรับผู้ที่สนใจที่จะใช้ล่ามนี้ในระบบของพวกเขา สามารถดูเอกสารประกอบและรหัสโครงการ ซึ่งเขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต MIT ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา