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。但我无法在设计或规格中找到它。
答案 0 :(得分:4)
2017年3月更新:
WebAssembly MVP有reached consensus:
WebAssembly CG成员代表四个浏览器,Chrome,Edge,Firefox, 和WebKit,已达成共识,即初始设计(MVP) WebAssembly API和二进制格式完成到不再进一步的程度 没有实施经验和重要的设计工作是可能的 用法。这标志着浏览器预览的结束并向浏览器发出信号 可以默认开始发送WebAssembly。从这一点开始, 未来的功能将被设计为确保向后兼容。
此共识包括JavaScript API和binary format 伴随着reference interpreter。您可以测试WebAssembly 今天按照developer’s guide使用Emscripten工具链 并在MDN上阅读更多内容。
接下来的步骤将是组建一个W3C工作组,以制作一个 WebAssembly初始版本的规范,并继续 迭代当前社区组中的future features。要得到 参与其中,您可以加入design discussions和contribute加入 WebAssembly GitHub项目。
当前webassembly.org网站记录了MVP之后的以下后续步骤:
WebAssembly社区组和贡献者计划:
- 提炼design 和spec interpreter回购 spec中的单一统一规范 回购
- 为W3C WebAssembly工作组提出新的章程
- 毕业WebAssembly LLVM backend从实验到稳定(并更新Emscripten)
- 将其他WebAssembly集成到浏览器开发人员工具中
- 开始post-MVP features
工作
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和一些调试支持。还有一些性能调整,以及大量的安全测试。
要跟踪这些问题,我建议您查看design和spec问题跟踪器。
关于您的具体问题,我们尚未在Chrome中完成grow_memory
。工作已经开始了。