我成功使用Scala Native将scala项目编译为机器代码。 但是我想在运行时生成一些可执行代码(我计划实现从类似scala的语言到机器代码的独立编译器)。 目标是拥有独立于JVM的自托管语言。 是否可以以某种方式将Scala Native编译器嵌入我的项目中?
答案 0 :(得分:1)
如https://www.scala-native.org/en/v0.4.0/contrib/build.html中所述,
Scala Native sbt 插件及其依赖项(目录名在括号中)。这些是 JVM 项目。
因此 Scala Native 并不像 OP 的问题所寻求的那样独立于 JVM。相反,研究 Scala Native 代码库的 NIR(scala-Native 中间表示)部分可能表明一个点(接近 NIR 向前发射的地方)来分解非 JVM NIR 到 LLVM 后端。然后 OP 的“自托管语言”将 NIR 编译为 LLVM IR 到机器代码“从类似 Scala 的语言到机器代码”作为 OP 的问题寻求可能是可能的,因为它源自 Scala Native 代码库的一些后端提取/片段之后解析器,也许是在 AST 之后,它依赖于 Scala(-proper) 的基于 JVM 的解析器,而从 NIR 开始就在 JVM 中,因为解析器和 AST 已经在 JVM 中了。