Mozillaは、すべてのデバイス、コンピューター、およびオペレーティングシステムにWASIを使用します

みなさんこんにちは! TestMace接続し 、JavaScriptの世界から最もホットなニュースを提供し続けています。 次の行は、WebAssemblyをブラウザーの外部で使用できるようにするテクノロジーであるWASIに関する記事の翻訳です。







すべてを支配する1つのフォーマット









Mozillaは今週、WebAssemblyコードがオペレーティングシステムと対話する方法を標準化するために、 WASI (WebAssembly System Interface)と呼ばれるプロジェクトを導入しました。 プロジェクトが成功すると、Oracle Java仮想マシンと同じ機能を実行しますが、はるかに効率的で高度な機能を備えています。







WebAssembly (WASM)は、さまざまなハードウェアアーキテクチャで実行できる仮想マシン用のバイナリ命令形式です。 C / C ++、Go、Rustなどの多くの言語で記述されたコードは、WASMコードにコンパイルできます。







多くのWebブラウザーはWebAssemblyのサポートを導入していますが、これまではブラウザー以外でWebAssemblyを使用するための標準はありませんでした。 そして今、WASIがあります。

「Mozilla Hacksブログ投稿 」で、Mozilla開発者のLin Clark氏は、「コードがブラウザの外部のシステム、つまりシステムインターフェイスと対話する方法が必要です」と説明しました。 「WebAssemblyプラットフォームにはまだそのようなメソッドがありません。」







WASM + WASI



WASIを使用して、WASMコードをブラウザーまたは他の互換環境で起動できます。これにより、言語に依存しないクロスプラットフォーム開発が可能になります。 ポータブルオペレーティングシステムインターフェイス(POSIX)は、UNIXライクなオペレーティングシステム間でプログラムソースコードの移植性を確保することを目的としていますが、WASIは異なるデバイスやオペレーティングシステムでコンパイルされたバイナリファイルの互換性をサポートするように設計されています。 この標準は、速度がネイティブに近いユニバーサルランタイムを提供します。







Java Virtual Machine(JVM)も同じことを行いますが、ブラウザでJavaコードを実行するにはプラグインが必要です。 提案されたWebAssemblyプラットフォームなどの言語の柔軟性は、 GraalVMを使用してJavaで実現できますが、Oracleの知的財産権侵害の主張に関連するイベントのため、Javaエコシステムはまだバックグラウンドにあります。







メモリへのアクセスのセキュリティと便利な検証 提供するWASM形式は、 セキュリティの点でJavaアプレットよりも優れていますが、プログラムの初期制御フローを変更することを目的とした攻撃を受ける可能性があります。 また、C / C ++およびRustともうまく機能します。







MozillaのWebAssemblyチームリーダーであるTill Schneiderは、 Twitterで WebAssemblyとJavaの違いを次のように説明しています。「WebAssemblyは、小型デバイスから巨大なサーバーグループまたはCDNにスケールするように設計されました。実装はリソースをあまり必要としません。」







WASIの潜在的な利点がまだ明らかでない場合、Docker Solomon Hykesの作成者が彼について次のように語っています。コンピューティング。標準化されたシステムインターフェイスがありませんでした。WASIがこの問題を解決することを願っています!」







この楽観的な波で、Fastlyは木曜日に、クラウド環境でWebAssembly WASMコードを実行するためのネイティブコンパイラおよび環境であるLucetをリリースしました 。 これは、ブラウザ外のWASMコードランタイム環境であるMozilla Wasmtimeを補完します。







もちろん、WASIはまだ理想からはほど遠いものです。 また、WebAssemblyは、たとえばブラウザーDOMにアクセスする機能追加するなど、さらに洗練させると便利です。 開発者はすでに一生懸命働いており、プラットフォームに依存しない単一のバイナリ形式を提供しています。 それまでの間、Javaでの成功をお祈りします。








All Articles