เมื่อเดือนที่แล้วเราได้แบ่งปัน ที่นี่ในบล็อกเกี่ยวกับ ข่าวที่ Mozilla, Fastly, Intel และ Red Hat ร่วมมือกันพัฒนา เทคโนโลยีที่สร้างขึ้น WebAssembly (หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับข่าวสามารถปรึกษาได้ การเชื่อมโยงนี้) และตอนนี้ ไม่กี่สัปดาห์หลังจากข่าวนั้น W3C Consortium ได้ประกาศว่าเทคโนโลยี WebAssembly ได้กลายเป็นมาตรฐานที่แนะนำ
สำหรับผู้ที่ไม่คุ้นเคยกับ WebAssembly พวกเขาควรจะรู้ว่า สิ่งนี้เป็นตัวกลาง สากล ระดับต่ำที่ไม่ขึ้นกับเบราว์เซอร์เพื่อเรียกใช้แอปพลิเคชัน เรียบเรียง จากภาษาโปรแกรมต่างๆ WebAssembly อยู่ในตำแหน่งที่เป็นเทคโนโลยีข้ามเบราว์เซอร์ที่มีแนวโน้มและพกพาได้มากที่สุดสำหรับการสร้างเว็บแอปพลิเคชันที่มีประสิทธิภาพสูง
Webแอสเซมบลี se สามารถใช้เพื่อแก้ปัญหางานที่ต้องการประสิทธิภาพสูงตัวอย่างเช่นการเข้ารหัสวิดีโอการประมวลผลเสียงกราฟิก 3 มิติและการจัดการการพัฒนาเกมการดำเนินการเข้ารหัสการคำนวณทางคณิตศาสตร์และการสร้างการใช้ภาษาโปรแกรมแบบพกพา
WebAssembly ดูเหมือน Asm.js มากแต่แตกต่างตรงที่เป็นรูปแบบไบนารีที่ไม่ผูกมัดกับ JavaScript WebAssembly ไม่จำเป็นต้องใช้ตัวรวบรวมขยะเนื่องจากใช้การจัดการหน่วยความจำแบบชัดแจ้ง
คุณลักษณะที่โดดเด่น ของรูปแบบการดำเนินการของแอปพลิเคชันที่ใช้ WASฉันกำลังเปิดตัวในสภาพแวดล้อมแซนด์บ็อกซ์ เพื่อแยกออกจากระบบหลักและการใช้กลไกการรักษาความปลอดภัยตามการจัดการความจุสำหรับการดำเนินการกับแต่ละทรัพยากร (ไฟล์ไดเร็กทอรีซ็อกเก็ตการเรียกระบบ ฯลฯ )
ด้วยการเปิดใช้งาน JIT สำหรับ WebAssembly คุณสามารถบรรลุระดับประสิทธิภาพใกล้เคียงกับโค้ดเนทีฟ. ภารกิจหลักของ WebAssembly คือการจัดเตรียมความสามารถในการพกพาการคาดเดาพฤติกรรมและข้อมูลประจำตัวของการเรียกใช้โค้ดบนแพลตฟอร์มต่างๆ
เมื่อเร็ว ๆ นี้ WebAssembly ยังก้าวหน้าในฐานะแพลตฟอร์มสากล เพื่อรันโค้ดอย่างปลอดภัยบนโครงสร้างพื้นฐานระบบปฏิบัติการและอุปกรณ์ใด ๆ ไม่ จำกัด เฉพาะเบราว์เซอร์
W3C มีข้อกำหนดสามมาตรฐาน ที่เกี่ยวข้องกับ WebAssembly:
- Web Assembly Core- กำหนดให้เป็นเครื่องเสมือนระดับต่ำที่เลียนแบบการทำงานของไมโครโปรเซสเซอร์จำนวนมากที่ทำงานอยู่อย่างใกล้ชิด ไม่ว่าจะผ่านการคอมไพล์หรือการตีความแบบทันเวลาเอนจิน WebAssembly สามารถทำงานได้เกือบด้วยความเร็วของโค้ดที่คอมไพล์สำหรับแพลตฟอร์มเนทีฟ
ทรัพยากร .wasm คล้ายคลึงกับไฟล์ .ชั้นเรียนของ Java ในแง่ที่ว่ามีข้อมูลคงที่และส่วนของรหัสที่ทำงานกับข้อมูลคงที่นั้น ซึ่งแตกต่างจาก Java โดยทั่วไป WebAssembly ถูกสร้างขึ้นเพื่อเป็นเป้าหมายการคอมไพล์สำหรับภาษาโปรแกรมอื่น ๆ เช่น C / C ++ และ Rust - WebAssembly เว็บ API: กำหนดอินเทอร์เฟซการเขียนโปรแกรมตามกลไก Promise สำหรับการร้องขอและเรียกใช้ทรัพยากร ".wasm" รูปแบบทรัพยากร WebAssembly ได้รับการปรับให้เหมาะสมเพื่อเริ่มการเรียกใช้งานโดยไม่ต้องรอให้ไฟล์โหลดเต็มที่ปรับปรุงการตอบสนองของเว็บแอปพลิเคชัน
- อินเทอร์เฟซ WebAssembly JavaScript: จัดเตรียม API เพื่อรวมเข้ากับ JavaScript ช่วยให้คุณรับค่าและส่งผ่านพารามิเตอร์ไปยังฟังก์ชัน WebAssembly การดำเนินการของ WebAssembly สอดคล้องกับรูปแบบการรักษาความปลอดภัยของ JavaScript และการโต้ตอบทั้งหมดกับโฮสต์จะดำเนินการในลักษณะเดียวกับการเรียกใช้โค้ด JavaScript
ในอนาคตมีการวางแผนเตรียมความพร้อม ข้อกำหนดสำหรับฟังก์ชัน WebAssembly เช่น:
- มัลติเธรดพร้อมหน่วยความจำที่ใช้ร่วมกันและการเข้าถึงหน่วยความจำอะตอม
- การดำเนินการของเวกเตอร์ขึ้นอยู่กับ SIMD ซึ่งอนุญาตให้ขนานกับการทำงานของรอบ
- ชนิดการอ้างอิงสำหรับการอ้างอิงโดยตรงไปยังอ็อบเจ็กต์ในโค้ด WebAssembly
- ความสามารถในการเรียกใช้ฟังก์ชันโดยไม่ต้องใช้พื้นที่เพิ่มเติมในสแต็ก
- การรวมเข้ากับโมดูล ECMAScript: ความสามารถในการโหลดโค้ด WebAssembly จาก JavaScript เป็นโมดูลที่สอดคล้องกับข้อกำหนด ECMAScript 6
- วิธีการทำงานกับคนเก็บขยะ
- อินเทอร์เฟซการดีบัก
- WASI (WebAssembly System Interface): API สำหรับการโต้ตอบโดยตรงกับระบบปฏิบัติการ (POSIX API เพื่อทำงานกับไฟล์ซ็อกเก็ต ฯลฯ )
หากคุณต้องการทราบข้อมูลเพิ่มเติมคุณสามารถอ่านบันทึกต้นฉบับได้ ในลิงค์ต่อไปนี้.