Mandrel é uma distribuição downstream da edição da comunidade GraalVM. O principal objetivo do Mandrel é fornecer uma versão native-image
especificamente para suportar o Quarkus. O objetivo é alinhar os recursos native-image
do GraalVM com as bibliotecas OpenJDK e Red Hat Enterprise Linux para melhorar a capacidade de manutenção de aplicativos Quarkus nativos. Mandrel pode ser melhor descrito como uma distribuição de um OpenJDK regular com um construtor GraalVM Native Image especialmente empacotado ( native-image
).
As versões do Mandrel são construídas a partir de uma base de código derivada da base de código upstream do GraalVM, com apenas pequenas alterações, mas algumas exclusões significativas. Uma distribuição completa do GraalVM é muito mais do que native-image
: possui suporte poliglota, o framework Truffle que permite a implementação eficiente de interpretadores, um back-end do compilador LLVM para imagem nativa, o compilador libgraal JIT como substituto do compilador de servidor C2 do Hotspot e muito mais. Mandrel é o pequeno subconjunto dessa funcionalidade que oferecemos suporte para o caso de uso native-image
.
native-image
do Mandrel também não inclui os seguintes recursos:
--experimental-build-server
.-H:CompilerBackend=llvm
.--libc=musl
.--static
.--language:
.O Mandrel também é construído de maneira um pouco diferente do GraalVM, usando a versão padrão do projeto OpenJDK do jdk17u. Isso significa que ela não lucra com algumas pequenas melhorias que a Oracle adicionou à versão do OpenJDK usada para criar seus próprios downloads do GraalVM. A maioria dessas melhorias refere-se ao módulo JVMCI que permite que o compilador Graal seja executado dentro do OpenJDK. As outras são pequenas mudanças cosméticas no comportamento. Essas melhorias podem, em alguns casos, causar pequenas diferenças no progresso da geração da imagem nativa. Eles não devem fazer com que as próprias imagens resultantes sejam executadas de maneira visivelmente diferente.
#mandrel
no espaço de trabalho slack do graalvmRelate vulnerabilidades de segurança de acordo com o guia Reporting Vulnerabilities.
As distribuições do Mandrel podem ser baixadas dos lançamentos do repositório e as imagens do contêiner estão disponíveis em quay.io.
native-image
do Mandrel depende dos seguintes pacotes:
No Fedora/CentOS/RHEL eles podem ser instalados com:
dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static
Nota : O pacote pode ser chamado de glibc-static
ou libstdc++-devel
em vez de libstdc++-static
dependendo do seu sistema. Se o sistema estiver faltando stdc++, o pacote gcc-c++
também será necessário.
Em sistemas semelhantes ao Ubuntu com:
apt install g++ zlib1g-dev libfreetype6-dev
Para construir o Mandrel a partir do código-fonte, consulte mandrel-packaging e consulte a Estrutura do Repositório em CONTRIBUTING.md sobre qual branch do Mandrel usar.
Capacitando o desenvolvimento de software com a iniciativa Works on Arm Works on Arm é uma iniciativa estratégica para habilitar e acelerar o ecossistema de software para Arm64.
A distribuição Mandrel do GraalVM que alimenta o Quarkus Native orgulhosamente se considera uma das bibliotecas e ferramentas que aproveitaram com sucesso os recursos do Works on Arm.