您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Oracle 开源 WebAssembly 引擎 GraalWasm
    时间:2020-03-07 12:21 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    近日 Oracle 开源了其在 GraalVM 中完成的 WebAssembly 引擎 GraalWasm,开发团队引见,GraalWasm 以后完成了 WebAssembly MVP(最小可行产品)标准,并且可以以二进制格式运转 WebAssembly 顺序,该顺序是由诸如 Emscripten 之类的编译器后端生成的。

    支持 WebAssembly 扩展了 GraalVM 与其它支持的言语一同执行的才能,进一步有望使其成为通用编程言语执行平台。不过目前 GraalWasm 还是一个十分早期的完成,并且处于实验形式。

    Oracle 开源 WebAssembly 引擎 GraalWasm

    为了完成 GraalWasm,开发团队运用 GraalVM 作为提供有效部分评价引擎的平台,运用 GraalVM 的 Truffle API,首先完成了 WebAssembly 二进制文件的解释器。

    WebAssembly 的半结构化格式可以轻松地恢复顺序的控制流结构,从而使存储代码的内存数据结构可以表示为 AST。用 AST 表示的顺序的解释器可以用十分复杂的方式编写,但是,虽然基于 AST 的数据结构更易于反省和操作,但它们确实存在引入额外内存开支的缺陷。

    另一方面,基于位码的代码表示不需求为每个基本指令实例化树节点,这就是基于位码的 GraalVM 解释器通常具有更小的内存占用的缘由。

    由于每个 WebAssembly 块仅包含线性指令序列,因此 GraalWasm 可以结合两种解释器办法中的最佳办法:AST 叠加在 WebAssembly 的控制流指令之上,如 if 和 loop。但是每个块都用一个 Truffle AST 节点,称之为 Wasm 块节点,这增加了内存占用,由于每个块中的单个指令不需求独自的节点对象。

    此外,GraalWasm 块节点不会复制原始指令流的各个部分,而是仅将指针包含在 WebAssembly 二进制文件的字节数组中。

    Oracle 开源 WebAssembly 引擎 GraalWasm

    文本 WebAssembly、二进制 WebAssembly 与 GraalWasm AST 之间的对应关系

    在此数据结构之上完成的解释器是基于 AST 的解释器和基于位码的解释器之间的混合体。在较高的控制流级别上,它在适当的基本块之间分配。在每个基本块中,解释器在迭代该基本块的操作码的解释循环内完成。这种设计使转译更容易了解,并简化了部分评价。

    运转时,解释器和顺序将传递到 Truffle 的部分评价引擎,然后该引擎将解释器专门用于顺序,并将专门的代码传递给 GraalVM 编译器,最终为目的平台生成高效的汇编代码。

    关于 GraalWasm 的更多技术细节可以查看官方博客:

    https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2

    开发团队还引见了项目接上去的开展规划,其表示,GraalWasm 的动机之一是扩展 GraalVM 的 node.js 完成支持的 API 集,WebAssembly 支持的添加将使其可以完成加载 WebAssembly 二进制文件的 V8 兼容 API 功用。

    下一步将是完成 WebAssembly 系统接口(WASI),这关于在 Web 上下文外部运转 WebAssembly 顺序是必需的。WASI 是一组 API,用于笼统化对各种操作系统功用的拜访,例如文件 API、网络套接字和时钟。

    同时 GraalWasm 将专注于提高功用,初步实验和对多个 C 微基准的功用调整表明,与以最高优化水平停止编译的本地 GCC 二进制文件相比,GraalWasm 以后可完成约 0.5 倍至 0.75 倍的峰值功用。

    另一方面是改善 GraalWasm 中的调试支持,并将其与 GraalVM 的其他部分集成。

    【编辑引荐】

    2019 年女性顺序员报告:掌握 C、Java 和 C++ 的人最多

    2019 编程言语排行榜:Java 稳坐榜首!

    2019 年 JavaScript 现状调查报告炽热出炉!

    2019年 Java 调查报告:“被取代”是不存在的!

    年末将至,值得你关注的16个Java 开源项目!

    (责任编辑:admin)