2016-04-17 14 views
4

https://webassembly.github.io/demo/は、「完全実行セマンティクスが実装されています。 MVPのように聞こえますが、正確に何が欠けているのですか、何か間違っていますか?ブラウザでのWebAssembly MVPの状態

WAST:

(module 
    (memory 1) 

    (export "growMemory" $growMemory) 
    (func $growMemory (param $0 i32) (result i32) (grow_memory (get_local $0))) 

    (export "getMemorySize" $getMemorySize) 
    (func $getMemorySize (result i32) (memory_size)) 
) 

JS-コード:

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'build/test.wasm', true); 
xhr.responseType = 'arraybuffer'; 
xhr.onload = function() { 
    var module = Wasm.instantiateModule(new Uint8Array(xhr.response)); 
    console.log(module.exports.getMemorySize()); 
    console.log(module.exports.growMemory(1)); 
    console.log(module.exports.getMemorySize()); 
}; 
xhr.send(null); 

クロムカナリアはWASMファイルをロードしますが、grow_memoryが未実装しているように見える:

65536 
0 
65536 

とFirefoxのナイトリーロードに失敗しました:

TypeError: wasm validation error at offset 124: bad expression code 

また、ページサイズは0x1000ではなく0x10000と思われます。しかし、私はそれをデザインや仕様で見つけることはできません。

答えて

4

2017年3月更新:

WebAssembly MVPがありreached consensus

4つのブラウザを表す

WebAssembly CGのメンバーは、Chromeは、エッジは、Firefoxの、 とWebKitのは、合意に達した

いるの設計initial( MVP) WebAssembly APIとバイナリ形式は、実装経験なしで デザイン作業が不可能なほど完成しました。 年齢。これはブラウザプレビューの終了を示し、ブラウザは がデフォルトでWebAssemblyの出荷を開始できることを知らせます。この時点から、将来の互換性を確保するために、今後の機能は となる予定です。

この合意は、reference interpreterを伴うJavaScript APIbinary format が含まれています。 WebAssembly は、developer’s guide に続いてMDNに続き、Emscriptenツールチェーンを使用してテストできます。

次のステップは、W3Cワーキンググループを形成するためにWebAssemblyの初期バージョンの 仕様を生成するために、現在のコミュニティグループにfuture featuresに 反復を継続することになります。 を取得するには、WebAssembly GitHubプロジェクトの にdesign discussionscontributeを参加させることができます。

WebAssemblyコミュニティグループと貢献者がすることを計画:

現在webassembly.orgサイトは右のMVPの後に従うことを、次の次の手順を文書化

のスタート作業をプロトタイプ追加WebAssembly統合を安定に卒業した実験から WebAssembly LLVM backend
  • W3C WebAssemblyワーキンググループのための新しい憲章を提案する(とEmscriptenを更新)

  • 2016年11月更新:

    現在、ブラウザのプレビューがあり、開発者のフィードバックを求めています。 webassembly.orgから:

    WebAssembly Community Group、いくつかのブラウザで実装されている初期(MVP)バイナリ形式のリリース候補とJavaScript APIを持っています。 CGはブラウザプレビュー期間の一環として広範なコミュニティからのフィードバックを求めています。 CGの暫定的な目標は、2017年第1四半期にブラウザプレビューを締結することですが、ブラウザプレビュー中に重要な結果が潜在的に期間を延長する可能性があります。ブラウザプレビューが終了すると、CGはWebAssemblyの仕様草案を作成し、ブラウザベンダーは、準拠している実装をデフォルトで出荷することができます。

    開発者は、ブラウザプレビューとWebAssemblyの一般公開の間に、開発者がツールチェーンとバイナリを更新する必要がある少なくとも1つの改訂があることに注意する必要があります。これらの変更は、事前に発表され、以下にリストされています。

    実験を開始するにはGetting Startedを参照し、どのようにフィードバックを送信するかについてはFeedbackを参照してください。


    オリジナルの答え:

    我々はデモのために、ブラウザの機能のパリティに同期してMVPに向けて、今からロックステップですべてのブラウザ+のデモを更新していきます。

    私たちは現在動作していますが、安定していないものがあります。より大きく多様なコードベースを使って作業を進めていくうちに、タイヤを蹴り上げ、何が改善できるかを見て、ポストMVPの機能が頭痛のないように実現できるようになると確信しています。私たちはまた、開発者からのフィードバックが、私たちが構築したものが使用可能であることを確認することを望んでいます

    Wasm JavaScriptオブジェクト、メモリ、およびWasmインスタンス間のポインタ共有などのAPIの機能が欠落しています。私たちはバイナリ形式でも解決されていませんが、現在の最大の変更はポストオーダーですが、小さな変更がたくさんあります。

    ブラウザの統合も欠落しています。ビューソースと出荷される可能性があります。デバッグのサポートが可能です。また、いくつかのperfチューニングとセキュリティテストがたくさんあります。

    これらの問題を追跡するには、designspecの問題追跡ツールをお勧めします。

    具体的な問題として、Chromeでgrow_memoryが完了していません。仕事は始まった。

  • +0

    迅速な回答をいただきありがとうございます。ページサイズの問題が見つかりました:https://github.com/WebAssembly/design/pull/442 –

    関連する問題