WebAssembly
WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications. C/C++/Rustで書いたコードをWebアプリ(実際にはWeb以外にも)利用できる
WebAssemblyで実装できるのはインタプリタとしてのランタイムであり、ネイティブに実装されたJITコンパイラのような、ネイティブコードを動的に生成して実行するといったことは、言語の仕様上できません。 では、WebAssemblyによるランタイムは、JITコンパイラを採用したランタイムよりもつねに遅い実行速度しか期待できないのかと言うと、そうではないと、Bytecode Allianceのブログに投稿された記事「Making JavaScript run fast on WebAssembly」で解説されています。
WebAssemblyでJITコンパイラに迫る実行速度のJavaScriptエンジンが実装できれば、瞬時に起動するサーバレスコンピューティングのJavaScriptエンジンや、JITコンパイラが許されていないiOS上での高速なJavaScript実行が可能になります。
現状は?
https://www.youtube.com/watch?v=gk9ERa7UYPM
WebAssembly は最近のウェブブラウザーで動作し、新たな機能と大幅なパフォーマンス向上を提供する新しい種類のコードです。
基本的に直接記述ではなく、C、C++、Rust 等の低水準の言語にとって効果的なコンパイル対象となるように設計されています。
目標
高速で、高効率であり、ポータブル
WebAssembly のコードは 共通ハードウェア対応環境 を利用して異なるプラットフォーム間でネイティブ水準の速度で実行可能です。
可読性を持ちデバッグ可能
WebAssembly は低水準のアセンブリ言語ですが、人間が読めるテキストフォーマットを持ちます(その仕様策定は終わっていないものの)。
このフォーマットは人の手で読み書きできて、デバッグもできます。
安全
WebAssembly は安全でサンドボックス化された実行環境上で動作するように設計されています。
他のウェブ言語と同様に、ブラウザーに対して same-origin および権限ポリシーの確認を強制します。
他のウェブ技術と協調し、後方互換性を維持
事例