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文件,但growt_memory似乎未实现:
65536
0
65536
Firefox Nightly加载失败:
TypeError: wasm validation error at offset 124: bad expression code
此外,页面大小似乎是0x10000,而不是0x1000。但我在设计或规范中找不到它。
2017年3月更新:
WebAssembly MVP达成共识:
代表四种浏览器的WebAssembly CG成员,Chrome、Edge、Firefox,和WebKit已经达成共识WebAssembly API和二进制格式是完整的,没有进一步设计工作是可能的,没有实施经验和意义用法这标志着浏览器预览的结束,并表示浏览器默认情况下,可以在上开始运送WebAssembly。从这一点开始,未来的功能将被设计为确保向后兼容性。
这种共识包括JavaScript API和二进制格式由参考口译员陪同。您可以测试WebAssembly今天按照开发人员指南使用Emscripten工具链以及阅读更多关于MDN的信息。
下一步将组建W3C工作组WebAssembly初始版本的规范,并继续迭代当前社区组中的未来功能。获取参与,您可以加入设计讨论并为WebAssembly GitHub项目。
当前的webassembly.org网站记录了MVP:之后要遵循的以下步骤
WebAssembly社区小组和贡献者计划:
- 提炼设计和规范解释器repos转换为规范中的单一统一规范回购
- 为W3C WebAssembly工作组提出新的章程
- 将WebAssembly LLVM后端从实验阶段升级为稳定阶段(并更新Emscripten)
- 原型附加WebAssembly集成到浏览器开发工具中
- 开始开发MVP后功能
2016年11月更新:
目前有一个浏览器预览,征求开发者的反馈。来自webassembly.org:
WebAssemblyCommunityGroup有一个初始(MVP)二进制格式的候选版本和JavaScript API,它们在多个浏览器中实现。作为浏览器预览期的一部分,CG现在正在征求更广泛的社区的反馈。CG的初步目标是让浏览器预览在2017年第一季度结束,尽管浏览器预览期间的重大发现可能会延长持续时间。当浏览器预览结束时,CG将生成WebAssembly的规范草案,浏览器供应商可以在默认情况下开始交付符合要求的实现。
开发人员应该意识到,在浏览器预览和WebAssembly的公开发布之间,至少会有一个突破性的变化,这将要求开发人员更新他们的工具链和二进制文件。这些变化将提前公布,如下所示。
请参阅开始试验和反馈,了解如何以及在何处引导反馈。
原始答案:
我们为演示同步了浏览器之间的功能奇偶性,并打算从现在起同步更新所有浏览器+演示,以实现MVP。
我们有一些目前有效的东西,但它并不稳定。当我们使用更大、更多样的代码库时,我们希望能够突破障碍,看看可以改进什么,并相信MVP后的功能将可以毫无头痛地实现。我们还希望开发人员提供反馈,以确保我们构建的内容可用!
它缺少一些功能,如Wasm
JavaScript对象的API、Wasm
实例之间的内存和指针共享。我们还没有确定二进制格式,目前最大的变化是发布订单,但还有很多较小的变化。
浏览器集成也缺乏:我们希望提供视图源代码,并可能提供一些调试支持。还有一些性能调优和大量的安全测试。
为了跟踪这些问题,我建议查看设计和规范问题跟踪器。
关于您的具体问题,我们还没有在Chrome中完成grow_memory
。不过工作已经开始了。