Oracle 开源 WebAssembly 引擎 GraalWasm

近日 Oracle 开源了其在 GraalVM 中实现的 WebAssembly 引擎 GraalWasm,开发团队介绍,GraalWasm 当前实现了 WebAssembly MVP(最小可行产品)规范,并且可以以二进制格式运行 WebAssembly 程序,该程序是由诸如 Emscripten 之类的编译器后端生成的。

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

为了实现 GraalWasm,开发团队使用 GraalVM 作为提供有效局部评估引擎的平台,使用 GraalVM 的 Truffle API,首先实现了 WebAssembly 二进制文件的解释器。

WebAssembly 的半结构化格式能够轻松地恢复程序的控制流结构,从而使存储代码的内存数据结构可以表示为 AST。用 AST 表示的程序的解释器可以用非常简单的方式编写,但是,尽管基于 AST 的数据结构更易于检查和操作,但它们确实存在引入额外内存开销的缺点。

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

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

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

 

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

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

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

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

开发团队还介绍了项目接下来的发展规划,其表示,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 的其余部分集成。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/112519/announcing-graalwasm

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。