Microsoftは、Rustライブラリクレート「Hyperlight Wasm」を発表した。さまざまなプログラミング言語で書かれたWebAssemblyモジュールおよびコンポーネントを、軽量仮想マシンベースのサンドボックス内で実行可能にするものだ。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2025年3月26日(米国時間)、さまざまなプログラミング言語で書かれたWebAssembly(Wasm)モジュールおよびコンポーネントを、軽量仮想マシン(VM)ベースのサンドボックス内で実行可能にするRustライブラリクレート「Hyperlight Wasm」を発表した。この軽量VMは、「Hyperlight VMマイクロゲスト」や「Hyperlight Wasmゲスト」と呼ばれる。
Hyperlight Wasmは、オープンソースのRustライブラリ「Hyperlight」上に構築されている。MicrosoftがCloud Native Computing Foundation(CNCF)のSandboxプログラムに寄贈したHyperlightは、ハイパーバイザーベースの保護を用いて小さな組み込み関数を実行するために使用できる。高速、効率的で安全なクラウドネイティブコンピューティングの水準を引き上げることを目指している。
Hyperlightプロジェクトに新たに追加されたHyperlight Wasmは、アプリケーションが信頼できない、またはサードパーティー製のWasmコードを、非常に低いレイテンシ(遅延)/オーバーヘッドでVM内で安全に実行できるようにすることを目的としている。
現在、Windows上の「Windows Hypervisor Platform」、Linux上の「KVM」、または「mshv」(Microsoft Hypervisorラッパー)のいずれかを使用したアプリケーションの実行をサポートしている。ただし、GitHubリポジトリでは、「まだ実験的なコードであり、本番環境での使用に適しているとは見なされておらず、また、『サポートされている』ソフトウェアでもない」と、注記されている。
Hyperlight Wasmゲストでは、WebAssemblyラインタイムの「Wasmtime」が使用され、さまざまなプログラミング言語で書かれたWasmコンポーネントを実行できる。
Wasmtimeや「Jco」のようなランタイムを用いてローカルでプログラムを実行したり、Nginx Unit、Spin、WasmCloud、そしてHyperlight Wasmを使ってサーバ上で実行したりできる。
Hyperlight Wasmゲストで実行できるWasmコンポーネントは、C、Go、Rustのようなコンパイル言語だけでなく、Python、JavaScript、C#のようなインタープリタ言語でも作成できる。これはコンテナと同様に、イメージの一部として言語ランタイムを含めることで可能になる。JavaScriptの場合、「StarlingMonkey JS Runtime」はWebAssemblyでネイティブに動作するように設計されている。
Hyperlight Wasmでは、HyperlightとWebAssemblyを組み合わせることで、従来のVMよりも少ない作業でより高いセキュリティとパフォーマンスを実現する。
Microsoftによると、従来の仮想マシンマネジャー(VMM)が新しいVMを作成する場合、仮想デバイスの作成、カーネルの読み込み、OSの読み込みなどが必要となり、最低でも約125ミリ秒かかる。
これに対し、Hyperlight Wasmでは、新しいVMを作成する場合、必要なのはメモリスライスの作成とVMゲストの読み込みだけであり、そのVMゲストがWasmワークロードを読み込む。これには現在1〜2ミリ秒しかかからず、将来的には1ミリ秒未満になる見込みだ。
「この高速な起動は、アプリケーションのスケジューリング方法にも影響する。ワークロードの起動に約1ミリ秒しかかからなければ、アイドル状態のインスタンスを持つ必要がなくなるからだ。HyperlightとWebAssemblyの組み合わせは、セキュリティにも有益だ。Hyperlight Wasmゲストに使用されるWasmtimeランタイムは、ソフトウェア定義のランタイムサンドボックスを通じて、Wasmワークロードの強力な分離境界を提供する」(Microsoft)
Hyperlight Wasmは近い将来、Arm64プロセッサでも動作するようになる予定だ。ホストを再ビルドすれば、内部で実行されるWasmアプリケーションは、再コンパイルすることなく動作するようになるという。
また、一部の「WASI」(WebAssembly System Interface)インタフェースのデフォルトバインディングでHyperlight Wasmを拡張することも計画されている。Hyperlight WasmゲストはWASI APIをサポートできるが、VMMホストは、WASIインタフェースを既定(デフォルト)で実装していないため、現時点では開発者が自ら実装する必要があるためだ。
WASIは、WebAssemblyでネットワークやファイル、メモリなどのシステムリソースを抽象化するAPI仕様だ。
Copyright © ITmedia, Inc. All Rights Reserved.