Oracle开源WebAssembly引擎GraalWasm:可二进制格式运行

世界之最 2025-07-26 15:04www.178959.com奇闻奇事

近日,Oracle公司开源了其使用GraalVM实现的WebAssembly引擎GraalWasm。开发团队表示,GraalWasm已经实现了WebAssembly MVP(最小可行产品)规范,并能以二进制格式运行由诸如Emscripten之类的编译器后端生成的WebAssembly程序。

GraalWasm的推出是对GraalVM多语言执行能力的进一步扩展,使其有望成为通用的编程语言执行平台。目前GraalWasm还处于早期实验阶段。

为了实现GraalWasm,开发团队利用GraalVM作为局部评估引擎的平台,并使用其Truffle API实现了WebAssembly二进制文件的解释器。WebAssembly的半结构化格式能轻松恢复程序的控制流结构,这使得存储代码的内存数据结构可以表示为AST(抽象语法树)。虽然基于AST的数据结构更易于检查和操作,但它们也存在引入额外内存开销的缺点。

为了优化内存占用,GraalWasm结合了基于AST的解释器和基于位码的解释器的优点。每个WebAssembly块仅包含线性指令序列,因此GraalWasm能够在AST和位码之间找到最佳的平衡。具体来说,每个块都用一个Truffle AST节点表示,称为Wasm块节点。这些节点不会复制原始指令流的各个部分,而是仅包含指向WebAssembly二进制文件的字节数组的指针。

基于这种数据结构,GraalWasm解释器在较高的控制流级别上运行,并在适当的基本块之间分配。在每个基本块内,解释器在解释循环内完成操作码的解释。这种设计简化了部分评估,并使得运行时转译更容易理解。解释器和程序将被传递到Truffle的局部评估引擎,然后生成高效的汇编代码为目标平台。

开发团队表示,GraalWasm的下一步发展规划包括实现WebAssembly系统接口(WASI),这是运行WebAssembly程序在Web上下文外部所必需的。GraalWasm还将专注于提高性能和改善调试支持,并将其与GraalVM的其余部分集成。初步实验表明,与经过高度优化的本地GCC二进制文件相比,GraalWasm当前可实现约0.5至0.75倍的峰值性能。尽管目前的性能尚未完全达到本地编译代码的水平,但作为WebAssembly的一个早期实现,GraalWasm已经展现出令人瞩目的成果。未来随着技术的不断进步和持续优化,我们有理由期待GraalWasm的性能将进一步提升。同时开发团队还介绍了项目未来的发展规划,GraalWasm旨在扩展GraalVM对node.js支持的API集,并计划实现加载WebAssembly二进制文件的V8兼容API功能。关于GraalWasm的更多技术细节,可访问其官方博客以获取更多信息。特别提醒:本文内容转载自其他媒体,请自行核实相关内容。

Copyright © 2019-2025 www.178959.com 奇秀网 版权所有 Power by

奇闻奇事,奇闻怪谈,奇秀网,奇闻异事,灵异事件,未解之谜,猎奇八卦,历史解密,科学探索,奇闻趣事