Mandrel 是 GraalVM 社区版的下游发行版。 Mandrel 的主要目标是提供专门支持 Quarkus 的native-image
版本。目的是将 GraalVM 的native-image
功能与 OpenJDK 和 Red Hat Enterprise Linux 库结合起来,以提高本机 Quarkus 应用程序的可维护性。 Mandrel 可以最好地描述为常规 OpenJDK 的发行版,带有专门打包的 GraalVM Native Image 构建器( native-image
)。
Mandrel 版本是根据源自上游 GraalVM 代码库的代码库构建的,仅进行了微小的更改,但有一些重要的排除。 GraalVM 的完整发行版远不止native-image
:它具有多语言支持、允许高效实现解释器的 Truffle 框架、用于本机映像的 LLVM 编译器后端、作为 Hotspot 的 C2 服务器编译器替代品的 libgraal JIT 编译器还有更多。 Mandrel 是我们支持native-image
用例的功能的一小部分。
Mandrel 的native-image
也不包含以下功能:
--experimental-build-server
选项。-H:CompilerBackend=llvm
选项。--libc=musl
选项。--static
选项。--language:
选项。Mandrel 的构建方式也与 GraalVM 略有不同,它使用标准 OpenJDK 项目版本的 jdk17u。这意味着它无法从 Oracle 添加到用于构建自己的 GraalVM 下载的 OpenJDK 版本中的一些小增强功能中获益。这些增强功能大部分是针对 JVMCI 模块的,该模块允许 Graal 编译器在 OpenJDK 中运行。其他的只是行为上的微小改变。在某些情况下,这些增强功能可能会导致本机图像生成的进度出现微小差异。它们不应导致生成的图像本身以明显不同的方式执行。
#mandrel
频道请根据漏洞报告指南报告安全漏洞。
Mandrel 发行版可以从存储库的版本中下载,容器镜像可以在 quay.io 上获取。
Mandrel 的native-image
依赖于以下包:
在 Fedora/CentOS/RHEL 上,可以使用以下命令安装它们:
dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static
注意:该包可能称为glibc-static
或libstdc++-devel
而不是libstdc++-static
具体取决于您的系统。如果系统缺少stdc++,还需要gcc-c++
包。
在类似 Ubuntu 的系统上:
apt install g++ zlib1g-dev libfreetype6-dev
要从源代码构建 Mandrel,请参阅 mandrel-packaging 并参考 CONTRIBUTING.md 中的存储库结构,了解要使用的 Mandrel 分支。
通过 Works on Arm 计划增强软件开发能力 Works on Arm 是一项战略举措,旨在支持和加速 Arm64 的软件生态系统。
GraalVM 的 Mandrel 发行版为 Quarkus Native 提供支持,自豪地将自己视为成功利用 Works on Arm 资源的库和工具之一。