Mandrel は、GraalVM コミュニティ エディションのダウンストリーム ディストリビューションです。 Mandrel の主な目標は、特に Quarkus をサポートするためのnative-image
リリースを提供することです。目的は、GraalVM のnative-image
機能を OpenJDK および Red Hat Enterprise Linux ライブラリと連携させて、ネイティブ Quarkus アプリケーションの保守性を向上させることです。 Mandrel は、特別にパッケージ化された GraalVM Native Image ビルダー ( native-image
) を備えた通常の OpenJDK のディストリビューションとして最もよく説明できます。
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 は、標準 OpenJDK プロジェクト リリースの jdk17u を使用して、GraalVM とは少し異なる方法で構築されています。これは、Oracle が独自の GraalVM ダウンロードを構築するために使用した OpenJDK のバージョンに追加したいくつかの小さな機能強化から利益を得られないことを意味します。これらの機能強化のほとんどは、OpenJDK 内で Graal コンパイラを実行できるようにする JVMCI モジュールに対するものです。その他は、動作に対する表面上の小さな変更です。これらの機能強化により、ネイティブ イメージの生成の進行にわずかな違いが生じる場合があります。結果として得られるイメージ自体が著しく異なる方法で実行されるべきではありません。
#mandrel
チャンネルに参加してください脆弱性の報告ガイドに従ってセキュリティの脆弱性を報告してください。
Mandrel ディストリビューションはリポジトリのリリースからダウンロードでき、コンテナ イメージは quay.io で入手できます。
Mandrel のnative-image
次のパッケージに依存します。
Fedora/CentOS/RHEL では、以下を使用してインストールできます。
dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static
注: パッケージは、システムによっては、 libstdc++-static
ではなく、 glibc-static
またはlibstdc++-devel
と呼ばれる場合があります。システムに stdc++ がない場合は、 gcc-c++
パッケージも必要です。
Ubuntu のようなシステムで以下を実行する場合:
apt install g++ zlib1g-dev libfreetype6-dev
Mandrel をソースからビルドする場合は、mandrel-packaging を参照し、使用する Mandrel のブランチについて CONTRIBUTING.md のリポジトリ構造を参照してください。
Works on Arm Initiative によるソフトウェア開発の強化 Works on Arm は、Arm64 のソフトウェア エコシステムを有効にして加速するための戦略的取り組みです。
Quarkus Native を強化する GraalVM の Mandrel ディストリビューションは、Works on Arm のリソースをうまく活用したライブラリとツールの 1 つであることを誇りに思っています。