浏览器中

时间:2016-04-17 15:36:59

标签: webassembly

https://webassembly.github.io/demo/说:"实现完全执行语义。"听起来像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);

Chrome Canary加载WASM文件,但grow_memory似乎未实现:

65536
0
65536

Firefox Nightly在加载时失败:

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

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

1 个答案:

答案 0 :(得分:4)

2017年3月更新:

WebAssembly MVP有reached consensus

  

WebAssembly CG成员代表四个浏览器,Chrome,Edge,Firefox,   和WebKit,已达成共识,即初始设计(MVP)   WebAssembly API和二进制格式完成到不再进一步的程度   没有实施经验和重要的设计工作是可能的   用法。这标志着浏览器预览的结束并向浏览器发出信号   可以默认开始发送WebAssembly。从这一点开始,   未来的功能将被设计为确保向后兼容。

     

此共识包括JavaScript APIbinary format   伴随着reference interpreter。您可以测试WebAssembly   今天按照developer’s guide使用Emscripten工具链   并在MDN上阅读更多内容。

     

接下来的步骤将是组建一个W3C工作组,以制作一个   WebAssembly初始版本的规范,并继续   迭代当前社区组中的future features。要得到   参与其中,您可以加入design discussionscontribute加入   WebAssembly GitHub项目。

当前webassembly.org网站记录了MVP之后的以下后续步骤:

  

WebAssembly社区组和贡献者计划:

     

2016年11月更新:

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

  

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

     

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

     

请参阅Getting Started开始试验,Feedback了解如何以及在何处发送反馈。

原始回答:

我们在演示的浏览器之间同步功能奇偶校验,并打算从现在开始以锁步方式向MVP更新所有浏览器+演示。

我们目前有一些工作,但它不稳定。当我们使用更大,更多样化的代码库时,我们希望能够放弃轮胎,看看有什么可以改进的地方,并且确信后MVP功能可以实现而不会让人头疼。我们还希望开发人员提供反馈,以确保我们构建的内容可用!

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

浏览器集成也缺乏:我们希望提供view-source和一些调试支持。还有一些性能调整,以及大量的安全测试。

要跟踪这些问题,我建议您查看designspec问题跟踪器。

关于您的具体问题,我们尚未在Chrome中完成grow_memory。工作已经开始了。