Bytecode Allianceの1周年で、WebAssemblyの開発者であるLin Clark氏とTill Schneidereit氏は、FastlyがMozillaからWebAssembly(Wasm)チームの一部を買収したことをブログ投稿で発表した。今後、Mozillaは、特にFirefoxブラウザでWasm-in-the-browserにフォーカスしていく。一方、FastlyはWasm-on-the-serverのためにBytecode Alliance内で監督と報告の責務を持つことになる。Wasm-on-the-serverには、Fastly独自の商用WebAssemblyサーバーレス製品のCompute@Edgeが含まれる。この取り決めにより、MozillaのwasmtimeプロジェクトとFastly Lucet Wasm VMプロジェクトも統合された。Lucetとwasmtimeはすでに多くのコードベースを共有しており、この合併により、将来の開発が同じ道をたどることが保証される。
ブログ投稿で、Clark氏とSchneidereit氏は、Wasm-on-the-serverの将来に対するテクノロジービジョンを示した。彼らのビジョンの中核となるのはnanoprocessモデルである。これは、Wasmプログラム向けに安全で軽量なコンテナーを提供し、一方で、サンドボックス化されたWasmプログラムが相互に通信したり、他のシステムと容易に通信できるようにする。
技術的には、ナノプロセスへのクリティカルパス上でWasmに対する3つの拡張案が提案されている。
最初の拡張機能はWebAssembly Systems Interface(WASI)である。これは、Wasmプログラムに対してホストシステムの標準ライブラリ関数を呼び出す方法を提供する。サーバ側では、ファイルシステム、環境変数、乱数、ソケットへのアクセスを意味する。WASIは、複数の主要なWasm実装でサポートされるようになった。
WASIはその実装によって、完全性とパフォーマンスが異なる。たとえば、GoogleのV8は、ホスト環境のJavaScriptランタイムをオペレーティングシステムアクセスのプロキシとして使用するため、低速である。
WASIアプローチは、オペレーティングシステムの標準ライブラリアクセスに限定されない。ブログ投稿で、追加されたWASIのような拡張機能について説明した。これは、wasi-socketやwasi-nnなど、Bytecode Allianceが支持しているものである。Bytecode Alliance以外にも、Wasmにさらに多くのホスト機能へのアクセスを提供するための多くのイニシアチブがある。たとえば、ブロックチェーンの世界では、Ethereum flavored WebAssembly (Ewasm)は、一種のWASIである。それは、WasmにホストEthereumブロックチェーンのユーザーアカウントとトランザクションサービスへのアクセスを提供する。
2番目の拡張機能は、インターフェイスタイプの提案である。これにより、Wasmプログラムは外部プログラムと通信できるようになる。ホストオペレーティングシステム内あるいはWasmを組み込んでいる言語ランタイム(Node.jsなど)のどちらからでもである。この提案はまだ初期段階であり、コンパイラツールチェーンからのサポートはまだない。ただし、wasmtimeおよびSecond State VMではすでにサポートされている。目標は、Wasmプログラムをより強力で埋め込み可能にすることである。
WASIとインターフェイスタイプを組み合わせると、開発者はWasmサンドボックスのセキュリティを維持しながらネイティブホストシステムをフルに活用できる。初期の例は、tensorflowモデルの推論のためにWasmプログラムへのネイティブGPUアクセスを提供するSecond State VM処理である。
nanoprocessの3番目の要素はモジュールリンクである。これにより、Wasmプログラムは、ホスト関数の呼び出しに加えて、相互に呼び出すことができる。モジュールの依存関係を宣言する機能により、Node.jsのNPMやRustのCrate.ioと同じようなパブリックパッケージ管理システムを実現できる。これは、Wasmerがすでに開始したWAPMの処理を補完できる。
この最新のブログ投稿では、Bytecode Allianceがwasm-on-the-serverの具体的なビジョンを示している。同時に、Wasmオープンソースコミュニティは、Bytecode Allianceだけの企業よりもはるかに大きくなっている。複数のWasm VM実装、プログラミング言語用のコンパイラツールチェーン、ホストオペレーティングシステムと環境(Node.js、Deno、ブロックチェーンなど)がある。