當前位置: 妍妍網 > 碼農

基於Rust語言實作高速且安全的WebAssembly執行時

2024-04-29碼農

Wasmtime 是一個用於WebAssembly(簡稱WASM)的獨立執行時,它由Bytecode Alliance計畫開發。WASM是一種為更高效執行和更安全的Web套用而設計的二進制指令格式。Wasmtime執行時為開發者提供了一系列豐富、符合WASM標準的API,並透過最佳化生成高品質的機器碼,使WASM套用能在各種環境中快速、安全地執行。

安裝與使用Wasmtime執行時

您可以透過使用以下簡單的安裝指令碼在Linux和macOS上安裝Wasmtime CLI:

curl https://wasmtime.dev/install.sh -sSf | bash

對於Windows使用者或其他感興趣的使用者,可以直接從GitHub的Releases頁面下載安裝程式和二進制檔。

安裝完Wasmtime後,如果您已經安裝了Rust編譯器,就可以使用以下的命令來編譯和執行Rust原始碼:

// Rust原始碼
fnmain() {
println!("Hello, world!");
}

// 編譯和執行命令
$ rustup target add wasm32-wasi
$ rustc hello.rs --target wasm32-wasi
$ wasmtime hello.wasm
// 輸出:Hello, world!

這個範例展示了如何將Rust原始碼編譯為WASM,並使用Wasmtime執行它。

Wasmtime的主要特性

  • 速度快 :Wasmtime基於最佳化的Cranelift程式碼生成器構建,可以快速生成高品質的機器碼。Wasmtime針對有效例項化、嵌入者和wasm之間的低開銷呼叫以及並行例項的可延伸性進行最佳化。

  • 安全 :Wasmtime的開發強烈專註於正確性和安全性。每個Wasmtime特性都透過仔細的審查和考慮透過RFC過程。一旦特性被設計和實作,他們就會經受Google的OSS Fuzz提供的24/7模糊測試。隨著特性的穩定,他們成為版本釋出的一部份,當事情出錯時,我們有一個明確的安全策略來快速緩解並修復任何問題。我們遵循深度防禦的最佳實踐,並整合針對像Spectre這樣的問題的保護和緩解措施。

  • 可配置 :Wasmtime使用合理的預設設定,但也可以配置提供對CPU和記憶體消耗等方面的更精細控制。

  • Wasmtime還提供了許多語言支持。Bytecode Alliance支持的語言包括Rust(wasmtime crate)、C(wasm.h、wasi.h、wasmtime.h表頭檔)、C++(wasmtime-cpp庫)、Python(wasmtime PyPI包)、.NET(Wasmtime NuGet包)、Go(wasmtime-go庫)和Ruby(wasmtime寶石)。社群還支持了Elixir(wasmex hex包)和Perl(Wasm Perl包的Wasm::Wasmtime)。

    文章精選

    「Rust

    關註公眾號並回復 「 WebAssembly 」 立即獲取計畫地址。