มี Wasmer 2.0 ซึ่งเป็นชุดเครื่องมือสำหรับสร้างแอปพลิเคชันที่ใช้ WebAssembly

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

ความสามารถในการพกพาทำได้โดยการรวบรวมโค้ดแอปพลิเคชันลงในโค้ดระดับกลาง WebAssembly ระดับต่ำ ซึ่งสามารถทำงานบนระบบปฏิบัติการใดๆ หรือฝังอยู่ในโปรแกรมในภาษาการเขียนโปรแกรมอื่นๆ โปรแกรมเป็นคอนเทนเนอร์ขนาดเบาที่รัน WebAssembly pseudocode คอนเทนเนอร์เหล่านี้ไม่ได้เชื่อมโยงกับระบบปฏิบัติการและสามารถรวมโค้ดที่เขียนขึ้นในภาษาโปรแกรมใดๆ ก็ได้ ชุดเครื่องมือ Emscripten สามารถใช้เพื่อคอมไพล์เป็น WebAssembly หากต้องการแปล WebAssembly เป็นรหัสเครื่องของแพลตฟอร์มปัจจุบัน จะรองรับการเชื่อมต่อของแบ็กเอนด์การคอมไพล์ต่างๆ (Singlepass, Cranelift, LLVM) และกลไก (โดยใช้ JIT หรือการสร้างรหัสเครื่อง)

การควบคุมการเข้าถึงและการโต้ตอบกับระบบมีให้โดยใช้ WASI (WebAssembly System Interface) API ซึ่งจัดเตรียมอินเทอร์เฟซการเขียนโปรแกรมสำหรับการทำงานกับไฟล์ ซ็อกเก็ต และฟังก์ชันอื่น ๆ ที่ระบบปฏิบัติการจัดเตรียมไว้ให้ แอปพลิเคชันจะถูกแยกออกจากระบบหลักในสภาพแวดล้อมแซนด์บ็อกซ์ และมีสิทธิ์เข้าถึงเฉพาะฟังก์ชันที่ประกาศไว้เท่านั้น (กลไกความปลอดภัยที่อิงตามการจัดการความสามารถ - สำหรับการดำเนินการกับทรัพยากรแต่ละรายการ (ไฟล์ ไดเร็กทอรี ซ็อกเก็ต การเรียกของระบบ ฯลฯ) จะต้องได้รับอำนาจตามสมควร)

หากต้องการเปิดใช้คอนเทนเนอร์ WebAssembly ก็เพียงพอแล้วที่จะติดตั้ง Wasmer runtime บนระบบ ซึ่งมาโดยไม่ต้องพึ่งพาภายนอก (“curl https://get.wasmer.io -sSfL | sh”) และเรียกใช้ไฟล์ที่จำเป็น (“wasmer test .wasm”). มีการแจกจ่ายโปรแกรมในรูปแบบของโมดูล WebAssembly ทั่วไป ซึ่งสามารถจัดการได้โดยใช้ตัวจัดการแพ็คเกจ WAPM Wasmer ยังมีให้ใช้เป็นไลบรารีที่สามารถใช้เพื่อฝังโค้ด WebAssembly ในโปรแกรม Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir และ Java

แพลตฟอร์มนี้ช่วยให้คุณได้รับประสิทธิภาพการดำเนินการของแอปพลิเคชันที่ใกล้เคียงกับแอสเซมบลีดั้งเดิม การใช้ Native Object Engine สำหรับโมดูล WebAssembly คุณสามารถสร้างโค้ดเนทีฟ ("wasmer compile -native" สำหรับการสร้างไฟล์อ็อบเจ็กต์ .so, .dylib และ .dll ที่คอมไพล์ล่วงหน้า) ซึ่งต้องการรันไทม์น้อยที่สุดในการรัน แต่ยังคงไว้ซึ่งคุณสมบัติทั้งหมดของ การแยกแซนด์บ็อกซ์ เป็นไปได้ที่จะจัดหาโปรแกรมที่คอมไพล์ล่วงหน้าด้วย Wasmer ในตัว ขอเสนอ Rust API และ Wasm-C-API สำหรับการสร้างส่วนเสริมและส่วนเสริม

การเปลี่ยนแปลงที่สำคัญในหมายเลขเวอร์ชันของ Wasmer เกี่ยวข้องกับการแนะนำการเปลี่ยนแปลงที่เข้ากันไม่ได้กับ API ภายใน ซึ่งตามที่นักพัฒนาระบุว่าจะไม่ส่งผลกระทบต่อผู้ใช้แพลตฟอร์ม 99% ท่ามกลางการเปลี่ยนแปลงที่ทำลายความเข้ากันได้ ยังมีการเปลี่ยนแปลงรูปแบบของโมดูล Wasm ที่ทำให้เป็นอนุกรม (โมดูลที่ทำให้เป็นอนุกรมใน Wasmer 1.0 จะไม่สามารถใช้ใน Wasmer 2.0 ได้) การเปลี่ยนแปลงอื่นๆ:

  • รองรับคำสั่ง SIMD (คำสั่งเดียว หลายข้อมูล) ช่วยให้ดำเนินการข้อมูลแบบขนานได้ พื้นที่ที่การใช้ SIMD สามารถปรับปรุงประสิทธิภาพได้อย่างมาก ได้แก่ การเรียนรู้ของเครื่อง การเข้ารหัสและถอดรหัสวิดีโอ การประมวลผลภาพ การจำลองกระบวนการทางกายภาพ และการจัดการกราฟิก
  • รองรับประเภทการอ้างอิง ทำให้โมดูล Wasm สามารถเข้าถึงข้อมูลในโมดูลอื่นหรือในสภาพแวดล้อมพื้นฐาน
  • มีการเพิ่มประสิทธิภาพการทำงานที่สำคัญ ความเร็วของรันไทม์ LLVM ที่มีตัวเลขทศนิยมเพิ่มขึ้นประมาณ 50% การเรียกใช้ฟังก์ชันได้รับการเร่งความเร็วอย่างมากโดยการลดสถานการณ์ที่ต้องเข้าถึงเคอร์เนล ประสิทธิภาพตัวสร้างโค้ด Cranelift เพิ่มขึ้น 40% ลดเวลาการดีซีเรียลไลซ์ข้อมูล
    มี Wasmer 2.0 ซึ่งเป็นชุดเครื่องมือสำหรับสร้างแอปพลิเคชันที่ใช้ WebAssembly
    มี Wasmer 2.0 ซึ่งเป็นชุดเครื่องมือสำหรับสร้างแอปพลิเคชันที่ใช้ WebAssembly
  • เพื่อให้สะท้อนถึงสาระสำคัญได้แม่นยำยิ่งขึ้น ชื่อของเอ็นจิ้นจึงมีการเปลี่ยนแปลง: JIT → Universal, Native → Dylib (ไดนามิกไลบรารี), ออบเจ็กต์ไฟล์ → StaticLib (ไลบรารีแบบคงที่)

ที่มา: opennet.ru

เพิ่มความคิดเห็น