【问题标题】:State of affairs of WebAssembly MVP in browsers浏览器中 WebAssembly MVP 的现状
【发布时间】:2016-08-09 06:43:48
【问题描述】:

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。但我在设计或规范中找不到。

【问题讨论】:

    标签: webassembly


    【解决方案1】:

    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 年第一季度结束,尽管浏览器预览期间的重大发现可能会延长持续时间。当 Browser Preview 结束时,CG 将生成 WebAssembly 规范草案,浏览器供应商可以开始默认发布符合要求的实现。

    开发人员应注意,在浏览器预览版和 WebAssembly 公开发布之间,至少会有一项重大更改需要开发人员更新其工具链和二进制文件。这些更改将提前公布并列于下方。

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


    原答案:

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

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

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

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

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

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

    【讨论】:

    猜你喜欢
    • 2021-08-01
    • 2019-03-11
    • 2020-12-26
    • 2020-11-15
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多