先月共有しました ここのブログで Mozilla、Fastly、Intel、およびRedHatが協力して開発したというニュース を作る技術 WebAssembly (ニュースについてもっと知りたい場合は、それを参照することができます このリンク) そして今 そのニュースの数週間後 W3Cコンソーシアムは、このテクノロジーが WebAssembly 推奨規格になっています。
WebAssemblyに慣れていない人のために 彼らはそれを知るべきです これはミドルウェアを提供します ユニバーサル アプリケーションを実行するためのブラウザに依存しない低レベル 編集済み さまざまなプログラミング言語から。 WebAssemblyは、高性能Webアプリケーションを構築するための最も有望でポータブルなクロスブラウザーテクノロジーとして位置付けられています。
WebAssembly のeは、高いパフォーマンスを必要とするタスクを解決するために使用できますたとえば、ビデオエンコーディング、サウンド処理、3Dグラフィックスと操作、ゲーム開発、暗号化操作、数学的計算、プログラミング言語のポータブル実装の作成などです。
WebAssembly Asm.jsによく似ています、ただし、JavaScriptにバインドされていないバイナリ形式であるという点で異なります。 明示的なメモリ管理が使用されるため、WebAssemblyではガベージコレクタを使用する必要はありません。
特徴的な機能 WASを使用するアプリケーションの実行モデルの概要サンドボックス環境で起動しています 各リソース(ファイル、ディレクトリ、ソケット、システムコールなど)でのアクションのために、メインシステムから分離し、容量管理に基づくセキュリティメカニズムを使用します。
JIT for WebAssemblyを有効にすることで、ネイティブコードに近いパフォーマンスレベルを達成できます。 WebAssemblyの主なタスクには、移植性、動作の予測可能性、およびさまざまなプラットフォームでのコード実行のIDの提供があります。
最近 WebAssemblyもユニバーサルプラットフォームとして進歩しています ブラウザに限らず、あらゆるインフラストラクチャ、オペレーティングシステム、デバイスでコードを安全に実行するため。
W3CはXNUMXつの仕様を標準化しました WebAssemblyに関連:
- WebAssemblyコア-実行される多くのマイクロプロセッサの機能を厳密に模倣する低レベルの仮想マシンとして定義されます。 コンパイルまたはジャストインタイム解釈のいずれかにより、WebAssemblyエンジンは、ネイティブプラットフォーム用にコンパイルされたコードとほぼ同じ速度で実行できます。
リソース .だった ファイルに類似しています .class of 静的データとその静的データを操作するコードセグメントが含まれているという意味でのJava。 Javaとは異なり、WebAssemblyは通常、C / C ++やRustなどの他のプログラミング言語のコンパイルターゲットとして作成されます。 - WebAssembly Web API: 「.wasm」リソースを要求および実行するためのPromiseメカニズムに基づくプログラミングインターフェイスを定義します。 WebAssemblyリソース形式は、ファイルが完全に読み込まれるのを待たずに実行を開始するように最適化されており、Webアプリケーションの応答性が向上しています。
- WebAssembly JavaScriptインターフェース: JavaScriptと統合するためのAPIを提供します。 値を取得し、WebAssembly関数にパラメーターを渡すことができます。 WebAssemblyの実行はJavaScriptセキュリティモデルに対応しており、ホストとのすべての対話はJavaScriptコードの実行と同様の方法で実行されます。
将来的には準備する予定です 次のようなWebAssembly関数の仕様:
- 共有メモリとアトミックメモリへのアクセスを使用したマルチスレッド。
- サイクルの実行を並列化できるSIMDに基づくベクトル演算。
- WebAssemblyコード内のオブジェクトへの直接参照の参照タイプ。
- スタックに追加のスペースを費やすことなく関数を呼び出す機能。
- ECMAScriptモジュールとの統合:ECMAScript6仕様に準拠するモジュールとしてJavaScriptからWebAssemblyコードをロードする機能。
- ガベージコレクターの操作方法。
- デバッグインターフェイス。
- WASI(WebAssemblyシステムインターフェイス):オペレーティングシステムと直接対話するためのAPI(ファイル、ソケットなどを操作するためのPOSIX API)。
それについてもっと知りたい場合は、元のメモを参照してください 次のリンクで。