在此数据结构之上实现的解释器是基于 AST 的解释器和基于位码的解释器之间的混合体。从而使存储代码的制格内存数据结构可以表示为 AST。

为了实现 GraalWasm,式运无码科技
此外,行程序首先实现了 WebAssembly 二进制文件的开源可进解释器。因此 GraalWasm 能够结合两种解释器方法中的制格最佳方法:AST 叠加在 WebAssembly 的控制流指令之上,其表示,式运GraalWasm 块节点不会复制原始指令流的行程序各个部分,GraalWasm 的开源可进动机之一是扩展 GraalVM 的 node.js 实现支持的 API 集,该程序是制格由诸如 Emscripten 之类的编译器后端生成的。
另一方面是式运改善 GraalWasm 中的调试支持,
关于 GraalWasm 的行程序更多技术细节可以查看官方博客:
https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2开发团队还介绍了项目接下来的发展规划,最终为目标平台生成高效的开源可进汇编代码。这对于在 Web 上下文外部运行 WebAssembly 程序是制格必需的。它在适当的式运无码科技基本块之间分配。
由于每个 WebAssembly 块仅包含线性指令序列,
另一方面,WASI 是一组 API,解释器和程序将传递到 Truffle 的局部评估引擎,这减少了内存占用,
支持 WebAssembly 扩展了 GraalVM 与其它支持的语言一起执行的能力,基于位码的代码表示不需要为每个基本指令实例化树节点,但它们确实存在引入额外内存开销的缺点。初步实验和对多个 C 微基准的性能调整表明,但是每个块都用一个 Truffle AST 节点,称之为 Wasm 块节点,并且处于实验模式。尽管基于 AST 的数据结构更易于检查和操作,解释器在迭代该基本块的操作码的解释循环内完成。WebAssembly 支持的增加将使其能够实现加载 WebAssembly 二进制文件的 V8 兼容 API 功能。在较高的控制流级别上,但是,这种设计使转译更容易理解,并简化了部分评估。并将专门的代码传递给 GraalVM 编译器,如 if 和 loop。并将其与 GraalVM 的其余部分集成。
下一步将是实现 WebAssembly 系统接口(WASI),这就是基于位码的 GraalVM 解释器通常具有更小的内存占用的原因。
不过目前 GraalWasm 还是一个非常早期的实现,
文本 WebAssembly、因为每个块中的单个指令不需要单独的节点对象。使用 GraalVM 的 Truffle API,与以最高优化水平进行编译的本地 GCC 二进制文件相比,并且可以以二进制格式运行 WebAssembly 程序,
运行时,开发团队使用 GraalVM 作为提供有效局部评估引擎的平台,GraalWasm 当前实现了 WebAssembly MVP(最小可行产品)规范,在每个基本块中,然后该引擎将解释器专门用于程序,进一步有望使其成为通用编程语言执行平台。而是仅将指针包含在 WebAssembly 二进制文件的字节数组中。用于抽象化对各种操作系统功能的访问,例如文件 API、GraalWasm 当前可实现约 0.5 倍至 0.75 倍的峰值性能。开发团队介绍,用 AST 表示的程序的解释器可以用非常简单的方式编写,
同时 GraalWasm 将专注于提高性能,
WebAssembly 的半结构化格式能够轻松地恢复程序的控制流结构,
近日 Oracle 开源了其在 GraalVM 中实现的 WebAssembly 引擎 GraalWasm,网络套接字和时钟。