หลังจากเปิดตัวเวอร์ชั่นแรกไปเกือบหกเดือน months, ประกาศเปิดตัวเวอร์ชันใหม่ของโปรเจ็กต์ Wasmer ซึ่งอยู่ในเวอร์ชันหลักที่สอง second และมีการเปลี่ยนแปลงที่สำคัญในระดับที่ API ภายในในเวอร์ชันที่สองนี้เข้ากันไม่ได้ แม้ว่าจะมีการเพิ่มคุณลักษณะใหม่ที่เพิ่มความเสถียร ความปลอดภัย และการปรับปรุงประสิทธิภาพด้วย
สำหรับคนที่ไม่รู้จัก Wasmer คุณควรรู้ว่ามันพัฒนารันไทม์เพื่อรันโมดูล WebAssembly ที่สามารถใช้สร้างแอปพลิเคชันสากลที่สามารถทำงานบนระบบปฏิบัติการหลายระบบและเรียกใช้โค้ดที่ไม่น่าเชื่อถือแบบแยกส่วนได้
พกพาได้โดยการคอมไพล์รหัสแอปพลิเคชันลงในมิดเดิลแวร์ WebAssembly ระดับต่ำ มันสามารถทำงานบนระบบปฏิบัติการใด ๆ หรือรวมเข้ากับโปรแกรมในภาษาการเขียนโปรแกรมอื่น ๆ โปรแกรมเป็นคอนเทนเนอร์ขนาดเล็กที่เรียกใช้รหัสเทียมของ WebAssembly
เหล่านี้ คอนเทนเนอร์ไม่ได้ผูกติดอยู่กับระบบปฏิบัติการและสามารถรวมรหัสที่เขียนในภาษาใดก็ได้ การเขียนโปรแกรม Emscripten Toolkit สามารถใช้เพื่อคอมไพล์ไปยัง WebAssembly ในการแปล WebAssembly เป็นรหัสเครื่องของแพลตฟอร์มปัจจุบัน รองรับการเชื่อมต่อแบ็กเอนด์บิลด์ต่างๆ (Singlepass, Cranelift, LLVM) และเอ็นจิ้น (โดยใช้ JIT หรือการสร้างรหัสเครื่อง)
การควบคุมการเข้าถึงและการโต้ตอบกับระบบมีให้ผ่าน WASI (WebAssembly System Interface) API ซึ่งมีอินเทอร์เฟซการเขียนโปรแกรมสำหรับการทำงานกับไฟล์ ซ็อกเก็ต และฟังก์ชันอื่นๆ ที่ระบบปฏิบัติการจัดเตรียมไว้ให้
แอปพลิเคชันแยกจากระบบหลัก และเข้าถึงได้เฉพาะฟังก์ชันที่ประกาศไว้ (กลไกการรักษาความปลอดภัยตามความสามารถในการจัดการสำหรับการดำเนินการกับทรัพยากรแต่ละรายการ (ไฟล์ ไดเร็กทอรี ซ็อกเก็ต การเรียกระบบ ฯลฯ)
ความแปลกใหม่หลักของ Wasmer 2.0
ในเวอร์ชั่นใหม่นี้ขอนำเสนอว่า การเปลี่ยนแปลงที่สำคัญในหมายเลขเวอร์ชัน version โดย Wasmer เกี่ยวข้องกับการแนะนำการเปลี่ยนแปลงที่เข้ากันไม่ได้กับ API ภายใน ซึ่งตามที่นักพัฒนาระบุว่า จะไม่ส่งผลกระทบ 99% ของผู้ใช้ จากแพลตฟอร์มแต่อย่างใด
นอกจากนี้ยังมีการเปลี่ยนแปลงในรูปแบบของโมดูล Wasm ที่เป็นอนุกรมระหว่างการเปลี่ยนแปลงความเข้ากันได้ที่สำคัญ (โมดูลที่ต่อเนื่องกันใน Wasmer 1.0 จะไม่สามารถใช้งานได้ใน Wasmer 2.0)
นอกจากนี้ การสนับสนุนสำหรับคำแนะนำ SIMD ถูกเน้น (คำสั่งเดียว หลายข้อมูล) ซึ่ง อนุญาตการดำเนินการข้อมูลแบบขนาน. พื้นที่ที่การใช้ SIMD สามารถเพิ่มประสิทธิภาพการทำงานได้อย่างมาก ได้แก่ การเรียนรู้ของเครื่อง การเข้ารหัสและถอดรหัสวิดีโอ การประมวลผลภาพ การจำลองกระบวนการทางกายภาพ และการจัดการกราฟิก
tambien เน้นการสนับสนุนสำหรับประเภทการอ้างอิง อนุญาตให้โมดูล Wasm เข้าถึงข้อมูลในโมดูลอื่นหรือในสภาพแวดล้อมพื้นฐานและมีการเพิ่มประสิทธิภาพที่สำคัญ ความเร็วรันไทม์ LLVM พร้อมตัวเลขทศนิยมเพิ่มขึ้นประมาณ 50%
การเรียกใช้ฟังก์ชันได้เพิ่มขึ้นอย่างมากโดยการลดสถานการณ์ที่ต้องใช้การเรียกเคอร์เนล. ประสิทธิภาพของตัวสร้างรหัส Cranelift เพิ่มขึ้น 40% ลดเวลาในการดีซีเรียลไลซ์ข้อมูล เพื่อให้สะท้อนส่วนสำคัญได้แม่นยำยิ่งขึ้น ชื่อเอ็นจิ้นได้เปลี่ยนไป: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library)
ในที่สุด หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับ Wasmer คุณควรรู้ว่ารหัสโครงการเขียนด้วยภาษา Rust มีใบอนุญาต MIT และคุณสามารถตรวจสอบรายละเอียดได้จากเว็บไซต์ทางการที่ ลิงค์ต่อไปนี้
ติดตั้งรันไทม์ Wasmer
ในทางกลับกันสำหรับผู้ที่สนใจในการเรียกใช้คอนเทนเนอร์ WebAssembly คุณจะต้องติดตั้งรันไทม์ Wasmer บนระบบของคุณเท่านั้นซึ่งมาโดยไม่ต้องพึ่งพาภายนอก
สิ่งสำคัญคือต้องพูดถึงเรื่องนั้น Wasmer สามารถทำงานบนแพลตฟอร์มใดก็ได้ macOS, Linux และ Windows ข้อกำหนดเดียวคือต้องติดตั้งรันไทม์บนระบบของคุณ
ในการดำเนินการนี้ให้รันคำสั่งต่อไปนี้ในเทอร์มินัล:
curl https://get.wasmer.io -sSfL | sh
และหลังจากนั้นพวกเขาจะต้องเรียกใช้ไฟล์ที่ต้องการ:
wasmer test.wasm
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการทำงานของ Wasmer หรือต้องการทราบซอร์สโค้ดคุณสามารถปรึกษาได้ทั้งหมด ในลิงค์ต่อไปนี้.