メインコンテンツまでスキップ

WebAssemblyブラウザプレビュー

· 約3分
V8チーム

私たちは本日、FirefoxおよびEdgeと同時に、WebAssemblyブラウザプレビューを発表します。WebAssembly(またはWasm)は、Google、Mozilla、Microsoft、Apple、そしてW3C WebAssembly Community Groupの協力者によって設計された、ウェブ向けの新しいランタイムおよびコンパイルターゲットです。

このマイルストーンは何を意味するか?

このマイルストーンは以下を意味します:

  • 私たちのMVP(最小限の実行可能製品)の設計(セマンティクスバイナリフォーマットJS APIを含む)のリリース候補
  • V8やSpiderMonkeyでのフラグの背後にあるWebAssemblyの互換性と安定した実装、Chakraの開発ビルドでの進行中の実装、JavaScriptCoreでの進行中の作業
  • 開発者がC/C++ソースファイルからWebAssemblyモジュールをコンパイルするための動作ツールチェーン
  • コミュニティのフィードバックに基づく変更がない限り、デフォルトオンでWebAssemblyを出荷するためのロードマップ

プロジェクトサイトでWebAssemblyについてさらに読むこともできますし、開発者向けガイドをフォローして、Emscriptenを使用してC & C++からWebAssemblyのコンパイルを試すこともできます。バイナリフォーマットおよびJS APIドキュメントは、それぞれWebAssemblyのバイナリエンコーディングとブラウザ内でWebAssemblyモジュールをインスタンス化するためのメカニズムを概説しています。以下は、Wasmがどのように見えるかを示す簡単なサンプルです:

WebAssemblyでの最大公約数関数の実装、生のバイト、テキスト形式(WAST)、Cソースコードを表示中。

WebAssemblyはChromeのフラグ(chrome://flags/#enable-webassembly)の背後にまだあるため、現時点では商用利用には推奨されません。しかし、ブラウザプレビュープレ期間中、仕様の設計と実装に関するフィードバックを積極的に収集しています。開発者にはアプリケーションのコンパイルと移植を試み、それをブラウザで実行することを推奨します。

V8はTurboFanコンパイラにおけるWebAssemblyの実装の最適化を続けています。昨年3月に最初の実験的サポートを発表して以来、並行コンパイルのサポートを追加しました。さらに、asm.jsをWebAssemblyに内部的に変換する代替のasm.jsパイプラインがほぼ完成し、既存のasm.jsサイトがWebAssemblyの事前コンパイルのメリットの一部を享受できます。

次に何が起こる?

コミュニティのフィードバックによる大きな設計変更がない限り、WebAssembly Community Groupは2017年第1四半期に公式仕様を作成し、その時点でブラウザはWebAssemblyをデフォルトオンで出荷することが推奨されます。その時点以降、バイナリフォーマットはバージョン1にリセットされ、WebAssemblyはバージョンレスとなり、機能テストおよび後方互換性が保証されます。WebAssemblyプロジェクトサイトでより詳細なロードマップを確認することができます。