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

此外,页面大小似乎是 0x10000 而不是 0x1000。但我在设计或规格中找不到它。

4

1 回答 1

4

2017 年 3 月更新:

WebAssembly MVP 已达成共识

代表四种浏览器 Chrome、Edge、Firefox 和 WebKit 的 WebAssembly CG 成员已达成共识,即初始 ( MVP ) WebAssembly API 和二进制格式的设计已经完成,如果没有实施经验和意义重大,就不可能进行进一步的设计工作。用法。这标志着浏览器预览的结束,并表明浏览器可以开始默认交付 WebAssembly。从这一点开始,未来的功能将被设计为确保向后兼容。

这个共识包括一个JavaScript API二进制格式 ,并附有一个参考解释器您现在可以按照开发人员指南 并阅读MDN上的更多信息,使用 Emscripten 工具链测试 WebAssembly 。

下一步将是组建一个 W3C 工作组,为 WebAssembly 的初始版本制定规范,并继续迭代当前社区组中的未来功能。要参与其中,您可以加入设计讨论并为WebAssembly GitHub 项目做出贡献。

当前的webassembly.org站点记录了在 MVP 之后要遵循的以下后续步骤:

WebAssembly 社区组和贡献者计划:


2016 年 11 月更新:

目前有一个浏览器预览版,正在征求开发者的反馈。来自webassembly.org

WebAssembly 社区组有一个初始( MVP ) 二进制格式候选版本和 JavaScript API,它们在多个浏览器中实现。作为浏览器预览期的一部分,CG 现在正在征求更广泛社区的反馈。CG 的暂定目标是在 2017 年第一季度结束浏览器预览,但浏览器预览期间的重大发现可能会延长持续时间。当 Browser Preview 结束时,CG 将生成 WebAssembly 的规范草案,浏览器供应商可以开始默认交付符合要求的实现。

开发人员应该知道,在浏览器预览版和 WebAssembly 的公开发布之间,至少会有一个重大变化,需要开发人员更新他们的工具链和二进制文件。这些更改将提前公布,并在下面列出。

有关如何以及在何处引导反馈,请参阅入门以开始试验和反馈。


原答案:

我们为演示同步了浏览器之间的功能奇偶性,并打算从现在开始同步更新所有浏览器 + 演示,朝着 MVP 迈进。

我们有一些目前可以工作的东西,但它并不稳定。当我们使用更大、更多样化的代码库时,我们希望能够摆脱困境,看看可以改进的地方,并确信后 MVP 功能将可以毫无问题地实现。我们还希望开发人员提供反馈,以确保我们构建的内容可用!

它缺少一些功能,例如 JavaScript 对象的 API 、内存和跨实例Wasm共享指针。Wasm我们也没有确定二进制格式,目前最大的变化是后订购,但还有很多较小的变化。

浏览器集成也很缺乏:我们希望提供查看源代码和可能的一些调试支持。还有一些性能调整和大量安全测试。

要跟踪这些问题,我建议查看设计规范问题跟踪器。

关于您的具体问题,我们还没有grow_memory在 Chrome 中完成。不过工作已经开始。

于 2016-04-17T15:55:37.390 回答