gpt4 book ai didi

graalvm - 在 GraalVM 架构上实现编程语言

转载 作者:行者123 更新时间:2023-12-02 11:14:35 26 4
gpt4 key购买 nike

在 GraalVM 架构上实现编程语言有哪些(架构)差异 - 特别是使用 Sulong 的 Graal、Truffle 和 LLVM 之间?

我计划在 GraalVM 架构上重新实现现有的静态类型编程语言,以便我可以轻松地从 Java 中使用它。

目前有三个选项:

  • 发出 JVM 字节码
  • 编写 Truffle 解释器
  • 发出 LLVM 位代码,使用 Sulong 在 GraalVM 上运行

enter image description here

最佳答案

发出 JVM 字节码是传统的选择。您必须在字节码级别工作,并且必须在发出字节码之前优化您的代码,因为 JVM 在发出字节码后对其进行优化的选项是有限的。为了获得良好的性能,您可能必须使用 invokedynamic。

我认为使用 Truffle 是最简单的选择。您只需要编写一个 AST 解释器,然后代码生成就为您完成了。它也是高性能选项 - 在所有有 Truffle 版本和字节码版本的语言中,Truffle 版本自信地优于字节码版本,并且由于没有字节码生成阶段而更简单。

发出 LLVM 位代码并在 Sulong 上运行是一种选择,但我不建议这样做,除非您有其他限制导致您选择该选项。同样,您必须自己生成位码,并且必须在发出位码之前优化自己,因为设置位码后优化受到限制。

Ruby 非常适合比较这些选项 - 因为有一个版本可以发出 JVM 字节码 (JRuby),一个版本使用 Truffle (TruffleRuby),还有一个版本可以发出 LLVM 位码(Rubinius,但它不会运行该位码)于苏龙)。我想说 TruffleRuby 的实现比 Rubinius 或 JRuby 更快、更简单。 (我从事 TruffleRuby 工作。)

我不会担心你的语言是静态类型的。 Truffle 可以使用静态类型,并且它可以使用分析专门化在运行时再次检测比静态表达的更细粒度的类型。

关于graalvm - 在 GraalVM 架构上实现编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54631823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com