Mandrel 是 GraalVM 社区版的下游发行版。Mandrel的主要目标是提供一个专门支持 Quarkus 的native-image
版本。目的是将 GraalVM 的native-image
功能与 OpenJDK 和 Red Hat Enterprise Linux 库统一起来,以提高本地 Quarkus 应用的可维护性。
Mandrel版本是基于上游 GraalVM 代码库衍生的代码库构建的,只做了一些小的改动。它们支持与 GraalVM 相同的native image 功能,但功能上没有重大变化。它们不包括通过 Truffle 解释器和编译器框架对 Polyglot 编程的支持。因此,不可能通过从 Truffle 语言目录下载语言来扩展 Mandrel。
Mandrel 的构建方式也与 GraalVM 略有不同,它使用标准的 OpenJDK 项目版本 jdk11u。这意味着它不能从 Oracle 添加到用于构建自己的 GraalVM 下载的 OpenJDK 版本中的一些小的增强功能中获益。
这些改进大多是对 JVMCI 模块的改进,它允许 Graal 编译器在 OpenJDK 中运行。其他的则是对 behaviour 的一些微小修饰。在某些情况下,这些 enhancements 可能会导致 native image 生成的进度出现微小差异。它们不应该导致生成的 images 本身以明显不同的方式执行。