用於構建基於 WebAssembly 的應用程序的工具包 Wasmer 2.0 可用

Wasmer 專案發布了第二個主要版本,開發了一個用於執行 WebAssembly 模組的運行時,該模組可用於創建可在不同作業系統上運行的通用應用程序,以及獨立運行不受信任的程式碼。 該專案程式碼是用 Rust 編寫的,並根據 MIT 許可證分發。

可移植性是透過將應用程式程式碼編譯為低階 WebAssembly 中間程式碼來實現的,這些程式碼可以在任何作業系統上運行或嵌入到其他程式語言的程式中。 這些程式是運行 WebAssembly 偽代碼的輕量級容器。 這些容器不依賴作業系統,並且可以包含最初用任何程式語言編寫的程式碼。 Emscripten 工具包可用於編譯為 WebAssembly。 為了將 WebAssembly 翻譯為目前平台的機器碼,它支援連接各種編譯後端(Singlepass、Cranelift、LLVM)和引擎(使用 JIT 或機器碼產生)。

使用 WASI(WebAssembly 系統介面)API 提供存取控制和與系統的交互,該 API 提供用於處理文件、套接字和作業系統提供的其他功能的程式介面。 應用程式在沙箱環境中與主系統隔離,並且只能存取聲明的功能(基於功能管理的安全機制 - 針對每個資源(檔案、目錄、套接字、系統呼叫等)的操作、申請必須被賦予適當的權力)。

要啟動 WebAssembly 容器,只需在系統上安裝沒有外部依賴項的 Wasmer 運行時(“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 程序中。

該平台允許您實現接近本機程序集的應用程序執行性能。 使用 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%。 減少資料反序列化時間。
    用於構建基於 WebAssembly 的應用程序的工具包 Wasmer 2.0 可用
    用於構建基於 WebAssembly 的應用程序的工具包 Wasmer 2.0 可用
  • 為了更準確地反映本質,引擎的名稱已更改:JIT → Universal、Native → Dylib(動態函式庫)、Object File → StaticLib(靜態函式庫)。

來源: opennet.ru

添加評論