このプロジェクトについて
Wasmtimeは、WebAssembly用のスタンドアロンランタイムであり、Bytecode Allianceプロジェクトとして開発されています。高速で、安全で、設定可能で、標準準拠となるように設計されており、コマンドラインツールとしても、他のアプリケーションに組み込むランタイムとしても使用できます。
インストール
CLIは、LinuxとmacOSではシェルスクリプトを使用してインストールできます。このスクリプトは$WASMTIME_HOME(デフォルトでは$HOME/.wasmtime)にインストールし、実行可能ファイルを$WASMTIME_HOME/binに配置します。Windowsユーザーやその他のユーザーは、GitHub Releasesページからインストーラとバイナリをダウンロードできます。その他のインストールオプションはオンラインブックに記載されています。
使用例
Rustコンパイラがインストールされていれば、Rustプログラムをwasm32-wasip2ターゲットを使用してWebAssemblyコンポーネントにコンパイルし、wasmtimeコマンドで実行できます。READMEには、実行すると「Hello, world!」と出力するhello-worldの例が示されています。
主な特徴
- 高速: 最適化を行うCraneliftコードジェネレータ上に構築されており、実行時または事前にマシンコードを生成できます。効率的なインスタンス化、エンベッダーとwasm間の低オーバーヘッドな呼び出し、同時インスタンスのスケーラビリティに最適化されています。
- 安全: 開発では正確性とセキュリティを重視し、Rustの実行時安全性の保証に基づいています。機能はRFCプロセスを経て、GoogleのOSS Fuzzによる継続的なファジング、リリースポリシー、明確に定義されたセキュリティポリシーが適用されます。また、Spectreなどの問題に対する防御策を統合し、WasmtimeとCraneliftの重要な部分の形式検証について学術研究者と協力しています。
- 設定可能: 適切なデフォルトが提供されていますが、設定によりCPUとメモリ消費を細かく制御でき、小さな環境から多数の同時インスタンスを実行する大規模サーバーまで対応します。
- WASI: WASI標準を通じてホスト環境とやり取りするための豊富なAPIセットをサポートしています。
- 標準準拠: 公式のWebAssemblyテストスイートに合格し、wasmの公式C APIを実装し、将来のWebAssemblyプロポーザルも実装しています。開発者はWebAssembly標準化プロセスに関与しています。
言語サポート
Wasmtimeは複数の言語から組み込むことができます。Bytecode Allianceがサポートする言語には、Rust(wasmtimeクレート)、C(wasm.h、wasi.h、wasmtime.hヘッダー、CMake対応)、C++(wasmtime.hhヘッダー)、Python(wasmtime PyPIパッケージ)、.NET(Wasmtime NuGetパッケージ)、Go(wasmtime-goリポジトリ)、Ruby(wasmtime gem)があります。コミュニティサポートの言語には、Elixir(wasmex hexパッケージ)とPerl(Wasm PerlパッケージのWasm::Wasmtimeモジュール)があります。
ドキュメント
Wasmtimeガイドは、Wasmtimeで何ができるかを学び、質問への回答を得て、プロジェクトに貢献するための推奨される出発点です。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.