4

https://webassembly.github.io/demo/には、「完全な実行セマンティクスが実装されています」と書かれています。MVP が完成したように聞こえますが、正確には何が欠けているのでしょうか、それとも間違っているのでしょうか?

廃棄物:

(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);

Chrome Canary は WASM ファイルをロードしますが、grow_memory は実装されていないようです:

65536
0
65536

また、Firefox Nightly は読み込みに失敗します:

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

また、ページ サイズは 0x1000 ではなく 0x10000 のようです。しかし、私はそれをデザインやスペックで見つけることができません。

4

1 に答える 1

4

2017 年 3 月の更新:

WebAssembly MVP はコンセンサスに達しました:

Chrome、Edge、Firefox、および WebKit の 4 つのブラウザーを代表する WebAssembly CG メンバーは、初期 ( MVP ) WebAssembly API およびバイナリー形式の設計が完成し、実装の経験がなければそれ以上の設計作業が不可能であるというコンセンサスに達しました。利用方法。これにより、ブラウザー プレビューが終了し、ブラウザーがデフォルトで WebAssembly の出荷を開始できることを示します。この時点から、将来の機能は下位互換性を確保するように設計されます。

このコンセンサスには、リファレンス インタープリター を伴うJavaScript APIバイナリ形式が含まれます。Emscripten ツールチェーンを使用して、開発者ガイドに従い、 MDNの 詳細を読むことで、WebAssembly を今すぐ試すことができます。

次のステップは、W3C ワーキング グループを形成し、WebAssembly の最初のバージョンの仕様を作成し、現在のコミュニティ グループで将来の機能を反復することです。参加するには、デザイン ディスカッションに参加し、WebAssembly GitHub プロジェクトに貢献できます。

現在のwebassembly.orgサイトには、MVP の直後に従う次の手順が記載されています。

WebAssembly コミュニティ グループと貢献者は、次のことを計画しています。


2016 年 11 月の更新:

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

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

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

実験を開始するには「はじめに」を、フィードバックを送信する方法と場所については「フィードバック」を参照してください。


元の答え:

デモ用にブラウザー間の機能パリティを同期し、今後はすべてのブラウザーとデモをロックステップで MVP に向けて更新する予定です。

現在動作するものがありますが、安定していません。より大規模で多様なコードベースを扱っているので、実際に試してみて、何が改善できるかを確認し、MVP 後の機能を問題なく実装できるという確信を得たいと考えています。また、開発者からのフィードバックを求めて、ビルドしたものが使用可能であることを確認します!

WasmJavaScript オブジェクトへの API、インスタンス間でのメモリとポインタの共有など、一部の機能が欠落していWasmます。バイナリ形式についてもまだ決まっていません。現時点での最大の変更点はポスト オーダーですが、より小さな変更がたくさん予定されています。

ブラウザーの統合も不足しています。ビューソースと、おそらくいくつかのデバッグサポートを同梱したいと考えています。また、いくつかのパフォーマンス チューニングと、十分なセキュリティ テストもあります。

これらの問題を追跡するには、デザイン仕様の問題トラッカーを参照することをお勧めします。

特定の問題についてはgrow_memory、Chrome での作業が完了していません。仕事は始まったけど。

于 2016-04-17T15:55:37.390 に答える