Mandrel est une distribution en aval de l'édition communautaire GraalVM. L'objectif principal de Mandrel est de fournir une version native-image
spécifiquement pour prendre en charge Quarkus. L'objectif est d'aligner les capacités native-image
de GraalVM avec les bibliothèques OpenJDK et Red Hat Enterprise Linux afin d'améliorer la maintenabilité des applications Quarkus natives. Mandrel peut être mieux décrit comme une distribution d'un OpenJDK standard avec un générateur d'images natives GraalVM spécialement emballé ( native-image
).
Les versions Mandrel sont construites à partir d'une base de code dérivée de la base de code GraalVM en amont, avec seulement des modifications mineures mais quelques exclusions importantes. Une distribution complète de GraalVM est bien plus qu'une native-image
: elle prend en charge les polyglottes, le framework Truffle qui permet une implémentation efficace des interpréteurs, un back-end de compilateur LLVM pour l'image native, le compilateur libgraal JIT en remplacement du compilateur de serveur C2 de Hotspot. et bien plus encore. Mandrel est le petit sous-ensemble de cette fonctionnalité que nous prenons en charge pour le cas d'utilisation native-image
.
native-image
de Mandrel n'inclut pas non plus les fonctionnalités suivantes :
--experimental-build-server
.-H:CompilerBackend=llvm
.--libc=musl
.--static
.--language:
.Mandrel est également construit légèrement différemment de GraalVM, en utilisant la version standard du projet OpenJDK de jdk17u. Cela signifie qu'il ne bénéficie pas de quelques petites améliorations qu'Oracle a ajoutées à la version d'OpenJDK utilisée pour créer ses propres téléchargements GraalVM. La plupart de ces améliorations concernent le module JVMCI qui permet d'exécuter le compilateur Graal dans OpenJDK. Les autres sont de petits changements cosmétiques de comportement. Ces améliorations peuvent dans certains cas entraîner des différences mineures dans la progression de la génération d'images natives. Ils ne doivent pas provoquer une exécution sensiblement différente des images résultantes.
#mandrel
sur l'espace de travail Slack de GraalvmVeuillez signaler les vulnérabilités de sécurité conformément au guide Signalement des vulnérabilités.
Les distributions de mandrins peuvent être téléchargées à partir des versions du référentiel et les images de conteneurs sont disponibles sur quay.io.
native-image
de Mandrel dépend des packages suivants :
Sur Fedora/CentOS/RHEL, ils peuvent être installés avec :
dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static
Remarque : Le package peut s'appeler glibc-static
ou libstdc++-devel
au lieu de libstdc++-static
selon votre système. Si le système ne dispose pas de stdc++, le package gcc-c++
est également nécessaire.
Sur les systèmes de type Ubuntu avec :
apt install g++ zlib1g-dev libfreetype6-dev
Pour créer Mandrel à partir des sources, veuillez consulter Mandrel-Packaging et consulter la structure du référentiel dans CONTRIBUTING.md pour connaître la branche de Mandrel à utiliser.
Renforcer le développement de logiciels grâce à l'initiative Works on Arm Works on Arm est une initiative stratégique visant à activer et à accélérer l'écosystème logiciel pour Arm64.
La distribution Mandrel de GraalVM qui alimente Quarkus Native se compte fièrement parmi les bibliothèques et les outils qui ont exploité avec succès les ressources de Works on Arm.