Mozilla, Fastly, Intel และ Red Hat ได้ร่วมมือกับ พัฒนา เทคโนโลยีที่ทำให้ WebAssembly แพลตฟอร์มสากล เพื่อรันโค้ดอย่างปลอดภัยบนโครงสร้างพื้นฐานใด ๆ, ระบบปฏิบัติการและอุปกรณ์ สำหรับการพัฒนาร่วมกันของรันไทม์และคอมไพเลอร์ซึ่งอนุญาตให้ใช้ WebAssembly ไม่เพียง แต่ในเว็บเบราว์เซอร์เท่านั้นชุมชน Bytecode Alliance ได้ถูกก่อตั้งขึ้น
เพื่อสร้างโปรแกรมแบบพกพา จัดส่งในรูปแบบ WebAssembly ที่สามารถเรียกใช้งานนอกเบราว์เซอร์ขอเสนอให้ใช้ WASI API (อินเทอร์เฟซระบบ WebAssembly) ซึ่งมีอินเทอร์เฟซโปรแกรมสำหรับการโต้ตอบโดยตรงกับระบบปฏิบัติการ (POSIX API สำหรับการทำงานกับไฟล์ซ็อกเก็ต ฯลฯ )
คุณลักษณะที่โดดเด่น ของรูปแบบการดำเนินการของแอปพลิเคชันที่ใช้ WASฉันกำลังเปิดตัวในสภาพแวดล้อมแซนด์บ็อกซ์ เพื่อแยกออกจากระบบหลักและการใช้กลไกการรักษาความปลอดภัยตามการจัดการความจุสำหรับการดำเนินการกับแต่ละทรัพยากร (ไฟล์ไดเร็กทอรีซ็อกเก็ตการเรียกระบบ ฯลฯ ) แอปพลิเคชันจะต้องมีการอนุญาตที่สอดคล้องกัน (มีให้เฉพาะการเข้าถึงเท่านั้น เพื่อประกาศฟังก์ชันการทำงาน)
Uno วัตถุประสงค์ของพันธมิตร สร้างขึ้น คือการแก้ปัญหาการแพร่กระจายของแอพพลิเคชั่นโมดูลาร์สมัยใหม่ที่มีการอ้างอิงจำนวนมาก ในแอปพลิเคชันดังกล่าวการพึ่งพาแต่ละครั้งอาจเป็นแหล่งที่มาของช่องโหว่หรือการโจมตีได้ การได้รับการควบคุมการพึ่งพาช่วยให้คุณสามารถควบคุมแอปพลิเคชันทั้งหมดที่เกี่ยวข้องได้
สมาชิก Bytecode Alliance ตั้งใจจัดเตรียมโซลูชันที่สมบูรณ์ สำหรับการดำเนินการอย่างปลอดภัยของแอปพลิเคชัน WebAssembly ที่ไม่น่าเชื่อถือในตอนแรก
สำหรับการป้องกัน เสนอให้ใช้แนวคิดของกระบวนการนาโนซึ่งแต่ละโมดูลการพึ่งพาจะแยกออกจากกัน ในโมดูล WebAssembly แยกต่างหากซึ่งมีการกำหนดสิทธิ์ให้ผูกกับโมดูลนี้เท่านั้น (ตัวอย่างเช่นไลบรารีสำหรับการประมวลผลสตริงไม่สามารถเปิดซ็อกเก็ตเครือข่ายหรือไฟล์)
ไม่เหมือนกับการแยกกระบวนการ ตัวจัดการ WebAssembly มีน้ำหนักเบาและแทบไม่ต้องใช้ทรัพยากรเพิ่มเติม นอกจากนี้การโต้ตอบระหว่างตัวจัดการยังไม่ช้าไปกว่าการเรียกใช้ฟังก์ชันธรรมดามากนัก
สำหรับการพัฒนาร่วมกันโครงการที่เกี่ยวข้องกับ WebAssembly หลายโครงการซึ่งก่อนหน้านี้ได้รับการพัฒนาแยกกันโดย บริษัท ผู้ก่อตั้งของกลุ่มพันธมิตรได้ถูกถ่ายโอนไปภายใต้ปีกของ Bytecode Alliance:
- เวลา: รันไทม์สำหรับรันแอ็พพลิเคชัน WebAssembly ที่มีนามสกุล WASI เป็นแอปแบบสแตนด์อโลนทั่วไป สนับสนุนการเรียกใช้ WebAssembly bytecode โดยใช้ยูทิลิตี้บรรทัดคำสั่งพิเศษและการออกแบบไฟล์ปฏิบัติการแบบสำเร็จรูป (wasmtime ถูกสร้างขึ้นในแอปพลิเคชันเป็นไลบรารี)
- ลูเซท: เป็น คอมไพเลอร์และรันไทม์เพื่อรันโปรแกรมในรูปแบบ WebAssembly. คุณลักษณะที่โดดเด่นของ Lucet คือการใช้การรวบรวมเชิงป้องกันเต็มรูปแบบ (AOT ล่วงหน้า) บนรหัสเครื่องที่เหมาะสำหรับการดำเนินการโดยตรงแทน JIT โครงการนี้ได้รับการพัฒนาโดย Fastly และได้รับการปรับให้เหมาะสมเพื่อใช้ทรัพยากรน้อยที่สุดและเปิดใช้อินสแตนซ์ใหม่ได้อย่างรวดเร็วในฐานะส่วนหนึ่งของโครงการร่วมมีการวางแผนที่จะเปลี่ยนคอมไพเลอร์ Lucet ให้ใช้ Wasmtime เป็นฐาน
- WAMR (รันไทม์ไมโคร WebAssembly): es รันไทม์อื่นเพื่อรัน WebAssembly พัฒนาโดย Intel เพื่อใช้ในอุปกรณ์ IoT WAMR ได้รับการปรับให้เหมาะสมเพื่อการใช้ทรัพยากรน้อยที่สุดและสามารถใช้กับอุปกรณ์ที่มี RAM จำนวนเล็กน้อย โครงการประกอบด้วยล่ามและเครื่องเสมือนเพื่อรัน WebAssembly bytecode, API (ชุดย่อยของ Libc) และเครื่องมือในการจัดการแอปพลิเคชันแบบไดนามิก
- เครน: es ตัวสร้างรหัสที่แปลการแทนค่ากลางที่ไม่ขึ้นกับฮาร์ดแวร์เป็นรหัสเครื่อง ปฏิบัติการได้รับการปรับให้เหมาะสมสำหรับแพลตฟอร์มฮาร์ดแวร์เฉพาะ Cranelift รองรับการขนานการคอมไพล์ฟังก์ชันสำหรับการสร้างเอาต์พุตที่รวดเร็วมากทำให้คุณสามารถใช้เพื่อสร้างคอมไพเลอร์ JIT ได้ (JIT ที่ใช้ Cranelift ใช้ในเครื่องเสมือน Wasmtime)
- วาสิ: ,es การใช้งาน WASI API แบบสแตนด์อโลน (Web Assembly System Interface) เพื่อจัดระเบียบการโต้ตอบกับระบบปฏิบัติการ
- ขนส่งสินค้า - วา: un โมดูลสำหรับผู้จัดการแพ็คเกจสินค้า ซึ่งใช้คำสั่งเพื่อคอมไพล์โค้ด Rust ใน WebAssembly bytecode โดยใช้อินเทอร์เฟซ WASI เพื่อใช้ WebAssembly ภายนอกเบราว์เซอร์
- วัดและผู้บรรยาย: เป็น ตัวแยกวิเคราะห์เพื่อวิเคราะห์ข้อความ (WAT, WAST) และการแทนค่าไบนารีของรหัสไบต์ WebAssembly
"ไม่เหมือนกับการแยกกระบวนการตัวจัดการ WebAssembly มีน้ำหนักเบาและแทบไม่ต้องใช้ทรัพยากรเพิ่มเติม" ...
ด้วย Mozilla และ Red Hat ในการผสมผสานการสังเกตว่า "แสงและแทบไม่ต้องใช้ทรัพยากรเพิ่มเติม" จะเป็นเรื่องตลกที่น่าอัศจรรย์ xD