WebAssembly - บทนำ

WebAssembly เรียกอีกอย่างว่า WASM ซึ่งเปิดตัวครั้งแรกในปี 2017 บริษัท เทคโนโลยีขนาดใหญ่ที่อยู่เบื้องหลังการกำเนิด WebAssembly ได้แก่ Google, Apple, Microsoft, Mozilla และ W3C

ข่าวลือคือ WebAssembly จะเข้ามาแทนที่ Javascript เนื่องจากมีการดำเนินการที่เร็วขึ้น แต่ก็ไม่เป็นเช่นนั้น WebAssembly และ Javascript มีไว้เพื่อทำงานร่วมกันเพื่อแก้ปัญหาที่ซับซ้อน

ต้องการ WebAssembly

จนถึงตอนนี้เรามีเพียง Javascript ที่สามารถทำงานได้สำเร็จภายในเบราว์เซอร์ มีงานที่หนักมากซึ่งทำได้ยากในเบราว์เซอร์โดยใช้จาวาสคริปต์

ในการตั้งชื่อไม่กี่อย่าง ได้แก่ การจดจำภาพแอปพลิเคชันการออกแบบโดยใช้คอมพิวเตอร์ช่วย (CAD) การเพิ่มวิดีโอสด VR และความเป็นจริงที่เพิ่มขึ้นแอปพลิเคชันเพลงการสร้างภาพและจำลองทางวิทยาศาสตร์เกมการตัดต่อภาพ / วิดีโอเป็นต้น

WebAssembly เป็นภาษาใหม่ที่มีคำสั่งไบนารีที่สามารถโหลดและดำเนินการได้เร็วขึ้น งานที่ระบุไว้ข้างต้นสามารถทำได้อย่างง่ายดายในภาษาระดับสูงเช่น C, C ++, Rust เป็นต้นเราต้องการวิธีที่สามารถคอมไพล์โค้ดที่เรามีใน C, C ++, Rust ได้และสามารถใช้ในเว็บเบราว์เซอร์ได้ ทำได้เช่นเดียวกันโดยใช้ WebAssembly

เมื่อโหลดโค้ด WebAssembly ภายในเบราว์เซอร์ จากนั้นเบราว์เซอร์จะดูแลการแปลงเป็นรูปแบบเครื่องที่โปรเซสเซอร์สามารถเข้าใจได้

สำหรับ javascript รหัสจะต้องดาวน์โหลดแยกวิเคราะห์และแปลงเป็นรูปแบบเครื่อง เวลาผ่านไปนานมากและสำหรับงานหนักเช่นที่เรากล่าวถึงก่อนหน้านี้อาจช้ามาก

การทำงานของ WebAssembly

ภาษาระดับสูงเช่น C, C ++ และ Rust ถูกคอมไพล์เป็นรูปแบบไบนารีนั่นคือ .wasm และรูปแบบข้อความ .wat.

ซอร์สโค้ดที่เขียนด้วย C, C ++ และ Rust ถูกคอมไพล์เป็น .wasmโดยใช้คอมไพเลอร์ คุณสามารถใช้ Emscripten SDK สำหรับการคอมไพล์ C / C ++ ถึง.wasm.

กระแสมีดังนี้ -

สามารถคอมไพล์โค้ด C / C ++ เป็นไฟล์ .wasmโดยใช้ Emscripten SDK ต่อมา.wasm รหัสสามารถใช้ด้วยความช่วยเหลือของจาวาสคริปต์ในไฟล์ html ของคุณเพื่อแสดงผลลัพธ์

แนวคิดหลักของ WebAssembly

แนวคิดหลักมีคำอธิบายด้านล่าง -

โมดูล

โมดูลคือออบเจ็กต์ที่ถูกคอมไพล์โดยเบราว์เซอร์ไปยังรหัสเครื่องที่เรียกใช้งานได้ โมดูลถูกกล่าวว่าไร้สัญชาติและสามารถใช้ร่วมกันระหว่าง Windows และ Web Workers

หน่วยความจำ

หน่วยความจำใน WebAssembly คือไฟล์ arraybufferที่เก็บข้อมูล คุณสามารถจัดสรรหน่วยความจำได้โดยใช้ Javascript api WebAssembly.memory ()

ตาราง

ตารางใน WebAssembly เป็นอาร์เรย์ที่พิมพ์ซึ่งอยู่นอกหน่วยความจำ WebAssembly และส่วนใหญ่มีการอ้างอิงถึงฟังก์ชัน จะเก็บที่อยู่หน่วยความจำของฟังก์ชัน

ตัวอย่าง

อินสแตนซ์เป็นออบเจ็กต์ที่จะมีฟังก์ชันที่ส่งออกทั้งหมดที่สามารถเรียกใช้จากจาวาสคริปต์เพื่อเรียกใช้งานภายในเบราว์เซอร์