GraalVM 有很多令人惊讶的功能。但是我还没有看到但想看到的一件事是能够在浏览器中运行 GraalVM 应用程序。像这样的来源(使用 GraalVM 要做的 10 件事)显示了与 Node.js 的互操作性,但没有在浏览器中运行已编译的应用程序。
这可能吗?如果是这样,是否有这方面的文档?谢谢!
GraalVM 有很多令人惊讶的功能。但是我还没有看到但想看到的一件事是能够在浏览器中运行 GraalVM 应用程序。像这样的来源(使用 GraalVM 要做的 10 件事)显示了与 Node.js 的互操作性,但没有在浏览器中运行已编译的应用程序。
这可能吗?如果是这样,是否有这方面的文档?谢谢!
看到一个嵌入 GraalVM 的浏览器并且可以运行它的语言引擎,即使最初只适用于 JavaScript,这将是非常有趣的。
据我所知,目前还没有这样的浏览器。也许有趣的第一步是使用Electronjs,并尝试用 GraalVM 的 node.js 版本替换他们使用的 node 版本。这不是微不足道的,因为它们对现有的 node.js 进行了一些更改,而 GraalVM 在用自己的实现替换 JavaScript 引擎时引入了一些更改。
但是,它绝对应该可以实现。
好吧,看起来这可能使用 Webassembly 是可能的。来自 Graal VM 负责人 Thomas Wuerthinger:https ://twitter.com/thomaswue/status/943592646915878912?lang=en
Webassembly 对于静态类型语言(作为 LLVM 后端)很有用。我不知道有任何成功针对 Webassembly 的 Ruby、R 或 Python 实现。Graal VM 将能够通过浏览器中的 Webassembly 运行。它还具有带有独立二进制文件的“本机”模式。
因此,如果您正在使用 Clojure 或 Python 之类的东西进行编码并计划通过 Graal VM 编译为 Webassembly,那么您可能会遇到与 Webassembly 相同的限制,例如浏览器沙箱并且只能访问 Web API。看看这些边界是否可以通过错误消息或其他编译时检查来传达将会很有趣。