WebAssembly
読み:ウェブアセンブリー
外語:WASM: WebAssembly
Webブラウザー
用のクロスプラットフォームな
プログラミング言語
の一つ。WASMとも。
目次
概要
特徴
コンパイル
WASMバイナリー
HTML5
概要
Webブラウザー用のクロスプラットフォームなプログラミング言語は、幾つかが作られたが最終的には
JavaScript
ただ一つが生き残った。
JavaScriptは
高級言語
であるが、WebAssemblyは
低級言語
であり、このバイナリーがあらゆるブラウザー上で動作することを目標としている。発想自体は
Java
に近いとも言える。
この目的のために、WebAssemblyは
asm.js
とPortable Native Client(PNaCl)をベースに開発が開始された。
主要WebブラウザーメーカーであるApple、Microsoft、Google、Mozillaすべてが参画して開発しているため、完成後は標準として使われることが既に決まっている。
特徴
コンパイル
C/C++
などを、WASMバイナリーフォーマットにコンパイルして使用する。
コンパイルには
clang/LLVM
などを使用する。
つまりフロントエンドに
clang
など各言語に適合するもの、バックエンドに
LLVM
を使用することが想定されて開発されているため、LLVMに対応できるフロントエンドが用意できれば、理論上はあらゆるプログラミング言語が利用できることになる。
ただ開発中のこれを著している時点では、LLVMはまだWASMバイナリーフォーマットを出力できないため、LLVMは中間層として用い、バックエンドとしてbinaryenが使われている。
LLVMとしては、LLVM 5.0からWASMバイナリーフォーマットの出力に正式対応する予定である。
WASMバイナリー
WASMバイナリーは、8ビットを1バイトとする
スタックマシン
となっており、これもJavaに似ている。数値については
LEB128
符号化が採用されており、これは
Android
の
Dalvik
および
ART
(Android Runtime)に似ている。
WASMバイナリーの機械語、つまりWebAssemblyが動作する
仮想計算機
(仮想マシン)用の機械語は、1バイト単位の可変長である。これ自体は人間では読みにくいので、1対1で対応する
アセンブリ言語
も用意されている。
HTML5
WebAssembly自体はHTML5とは直接関係ないが、併用されることは確実である。
Adobe Flash
からHTML5にブラウザーゲームは移行が必要となるが、ゲームは速度が求められるため、将来的には
WebGL
+WebAssemblyで作られることが多くなると見込まれている。
再検索