WebAssembly-はじめに

WebAssemblyはWASMとも呼ばれ、2017年に最初に導入されました。WebAssemblyの起源の背後にある大手テクノロジー企業は、Google、Apple、Microsoft、Mozilla、およびW3Cです。

話題は、WebAssemblyが実行速度が速いためにJavascriptに取って代わるということですが、そうではありません。WebAssemblyとJavascriptは、複雑な問題の解決に向けて連携することを目的としています。

WebAssemblyの必要性

これまでのところ、ブラウザ内で正常に動作できるJavascriptしかありません。javascriptを使用してブラウザで実行するのが難しい非常に重いタスクがあります。

いくつか例を挙げると、画像認識、コンピューター支援設計(CAD)アプリケーション、ライブビデオ拡張、VRおよび拡張現実、音楽アプリケーション、科学的視覚化およびシミュレーション、ゲーム、画像/ビデオ編集などがあります。

WebAssemblyは、読み込みと実行を高速化できるバイナリ命令を備えた新しい言語です。上記のタスクは、C、C ++、Rustなどの高級言語で簡単に実行できます。C、C ++、Rustにあるコードをコンパイルして、Webブラウザーで使用できる方法が必要です。WebAssemblyを使用しても同じことが達成できます。

WebAssemblyコードがブラウザ内にロードされたとき。次に、ブラウザがプロセッサが理解できるマシン形式への変換を処理します。

javascriptの場合、コードをダウンロードして解析し、マシン形式に変換する必要があります。それに多くの時間がかかり、前述のような重いタスクの場合、非常に遅くなる可能性があります。

WebAssemblyの動作

C、C ++、Rustなどの高級言語は、バイナリ形式にコンパイルされます。 .wasm およびテキスト形式 .wat

C、C ++、Rustで記述されたソースコードは次のようにコンパイルされます。 .wasmコンパイラを使用します。EmscriptenSDKを使用してC / C ++をコンパイルできます。.wasm

流れは次のとおりです-

C / C ++コードは次のようにコンパイルできます .wasmEmscriptenSDKを使用します。後で、.wasm コードをhtmlファイルのjavascriptを使用して使用すると、出力を表示できます。

WebAssemblyの重要な概念

重要な概念は以下のとおりです-

モジュール

モジュールは、ブラウザによって実行可能なマシンコードにコンパイルされるオブジェクトです。モジュールはステートレスであると言われ、WindowsとWebワーカーの間で共有できます。

記憶

WebAssemblyのメモリは、 arraybufferデータを保持します。Javascript api WebAssembly.memory()を使用してメモリを割り当てることができます。

テーブル

WebAssemblyのテーブルは型付き配列であり、WebAssemblyメモリの外部にあり、ほとんどの場合関数への参照があります。関数のメモリアドレスを格納します。

インスタンス

インスタンスは、javascriptから呼び出してブラウザ内で実行できるすべてのエクスポートされた関数を持つオブジェクトです。