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 資源的函式庫和工具之一。