Skip to content

Releases: graalvm/mandrel

Mandrel 21.3.6.0-Final

21 Apr 13:04
mandrel-21.3.6.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 21.3.6.0-Final is a downstream distribution of the GraalVM community edition 21.3.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk 17.0.7+7 and 11.0.19+7.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-21.3.6.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-21.3.6.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J  'https://code.quarkus.io/d?e=resteasy-reactive&S=io.quarkus.platform%3A2.13&cn=code.quarkus.io'
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Dquarkus.platform.version=2.13.3.Final -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  'https://code.quarkus.io/d?e=resteasy-reactive&S=io.quarkus.platform%3A2.13&cn=code.quarkus.io'
unzip code-with-quarkus.zip
cd code-with-quarkus
./mvnw package -Dquarkus.platform.version=2.13.3.Final -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:21.3.6.0-Final-java17
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=resteasy-reactive&S=io.quarkus.platform%3A2.13&cn=code.quarkus.io"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Dquarkus.platform.version=2.13.3.Final -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:21.3.6.0-Final-java17
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

For a complete list of changes please visit mandrel-21.3.5.1-Final...mandrel-21.3.6.0-Final


Mandrel 21.3.6.0-Final
OpenJDKs used: 17.0.7+7, 11.0.19+7

Mandrel 22.3.1.0-Final

23 Jan 23:18
mandrel-22.3.1.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 22.3.1.0-Final is a downstream distribution of the GraalVM community edition 22.3.1.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk17u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-22.3.1.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-22.3.1.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
unzip code-with-quarkus.zip
cd code-with-quarkus
        ./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17
        ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

For a complete list of changes please visit mandrel-22.3.0.1-Final...mandrel-22.3.1.0-Final


Mandrel 22.3.1.0-Final
OpenJDKs used: 17.0.6+10

Mandrel 21.3.5.1-Final

23 Jan 22:32
mandrel-21.3.5.1-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 21.3.5.1-Final is a downstream distribution of the GraalVM community edition 21.3.5.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u and jdk17u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-21.3.5.1-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-21.3.5.1-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
unzip code-with-quarkus.zip
cd code-with-quarkus
        ./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:21.3-java17
        ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:21.3-java17
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
        docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

Backports

  • #470 - Backport: Add support for CgroupMetrics.getTotalMemory0

For a complete list of changes please visit mandrel-21.3.5.0-Final...mandrel-21.3.5.1-Final


Mandrel 21.3.5.1-Final
OpenJDKs used: 11.0.18+10,17.0.6+10

Mandrel 22.3.0.1-Final

02 Nov 10:07
mandrel-22.3.0.1-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 22.3.0.1-Final is a downstream distribution of the GraalVM community edition 22.3.0.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

Announcement

Starting with the 22.3, Mandrel releases will no longer include builds based on OpenJDK 11. Please use the OpenJDK 17 based builds instead.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk17u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-22.3.0.1-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-22.3.0.1-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
unzip code-with-quarkus.zip
cd code-with-quarkus
./mvnw package -Pnative -Dquarkus.native.container-build=true \
    -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3.0.1-Final-java17
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3.0.1-Final-java17
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

Backports

  • #445 - Backport c++ compatible mangling support to 22.3
  • #444 - Only require libmanagement_ext if it's actually needed.

For a complete list of changes please visit vm-22.3.0...mandrel-22.3.0.1-Final


Mandrel 22.3.0.1-Final
OpenJDKs used: 17.0.5+8

Mandrel 21.3.4.0-Final

10 Nov 09:36
mandrel-21.3.4.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 21.3.4.0-Final is a downstream distribution of the GraalVM community edition 21.3. It includes updates for the OpenJDK October 2022 CPU updates (17.0.5, 11.0.17).
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u and jdk17u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-21.3.4.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-21.3.4.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

The Quarkus builder image for this release is still being prepared, please try again later.

Changelog

For a complete list of changes please visit mandrel-21.3.3.0-Final...mandrel-21.3.4.0-Final


Mandrel 21.3.4.0-Final
OpenJDKs used: 17.0.5+8,11.0.17+8

Mandrel 22.2.0.0-Final

27 Jul 11:37
mandrel-22.2.0.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 22.2.0.0-Final is a downstream distribution of the GraalVM community edition 22.2.0.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u and jdk17u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-22.2.0.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-22.2.0.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
unzip code-with-quarkus.zip
cd code-with-quarkus
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:22.2.0.0-Final-java17
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:22.2.0.0-Final-java17
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

It is also possible to use Podman for Windows with appending: -Dquarkus.native.container-runtime=podman.

Changelog

For a complete list of changes please visit vm-22.2.0...mandrel-22.2.0.0-Final


Mandrel 22.2.0.0-Final
OpenJDKs used: 17.0.4+8,11.0.16+8

Mandrel 21.3.3.0-Final

27 Jul 10:50
mandrel-21.3.3.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 21.3.3.0-Final is a downstream distribution of the GraalVM community edition 21.3.3.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u and jdk17u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java17-linux-amd64-21.3.3.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-21.3.3.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive
unzip code-with-quarkus.zip
cd code-with-quarkus
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:21.3.3.0-Final-java17
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy-reactive"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:21.3.3.0-Final-java17
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

It is also possible to use Podman for Windows with appending: -Dquarkus.native.container-runtime=podman.

Changelog

For a complete list of changes please visit vm-ce-21.3.3...mandrel-21.3.3.0-Final


Mandrel 21.3.3.0-Final
OpenJDKs used: 17.0.4+8,11.0.16+8

Mandrel 22.1.0.0-Final

27 Apr 22:34
mandrel-22.1.0.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 22.1.0.0-Final is a downstream distribution of the GraalVM community edition 22.1.0.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java11-linux-amd64-22.1.0.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java11-22.1.0.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy
unzip code-with-quarkus.zip
cd code-with-quarkus
        ./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:22.1.0.0-Final-java11
        ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:22.1.0.0-Final-java11
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
        docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

For a complete list of changes please visit vm-22.1.0...mandrel-22.1.0.0-Final


Mandrel 22.1.0.0-Final
OpenJDKs used: 17.0.3+7,11.0.15+10

Mandrel 21.3.2.0-Final

27 Apr 09:17
mandrel-21.3.2.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 21.3.2.0-Final is a downstream distribution of the GraalVM community edition 21.3.2.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java11-linux-amd64-21.3.2.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java11-21.3.2.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

Mandrel Quarkus builder image can be used to build a Quarkus native Linux executable right away without any GRAALVM_HOME setup.

curl -O -J  https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy
unzip code-with-quarkus.zip
cd code-with-quarkus
        ./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:21.3.2.0-Final-java11
        ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with Docker Desktop (mind Resources-> File sharing settings so as Quarkus project directory is mountable).

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy"
powershell -c "Expand-Archive -Path quarkus.zip -DestinationPath . -Force
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:21.3.2.0-Final-java11
docker build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
        docker run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

For a complete list of changes please visit mandrel-21.3.1.1-Final...mandrel-21.3.2.0-Final


Mandrel 21.3.2.0-Final
OpenJDKs used: 17.0.3+7,11.0.15+10

Mandrel 21.3.1.1-Final

14 Mar 23:38
mandrel-21.3.1.1-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 21.3.1.1-Final is a downstream distribution of the GraalVM community edition 21.3.1.
Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
The aim is to align the native-image capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications.

How Does Mandrel Differ From Graal

Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
They support the same native image capability as GraalVM with no significant changes to functionality.
They do not include support for Polyglot programming via the Truffle interpreter and compiler framework.
In consequence, it is not possible to extend Mandrel by downloading languages from the Truffle language catalogue.

Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u.
This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads.
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
The others are small cosmetic changes to behaviour.
These enhancements may in some cases cause minor differences in the progress of native image generation.
They should not cause the resulting images themselves to execute in a noticeably different manner.

Prerequisites

Mandrel's native-image depends on the following packages:

  • freetype-devel
  • gcc
  • glibc-devel
  • libstdc++-static
  • zlib-devel

On Fedora/CentOS/RHEL they can be installed with:

dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static

Note: The package might be called glibc-static or libstdc++-devel instead of libstdc++-static depending on your system.
If the system is missing stdc++, gcc-c++ package is needed too.

On Ubuntu-like systems with:

apt install g++ zlib1g-dev libfreetype6-dev

Quick start

$ tar -xf mandrel-java11-linux-amd64-21.3.1.1-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java11-21.3.1.1-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J https://code.quarkus.io/d?e=io.quarkus:quarkus-resteasy
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quarkus builder image

The Quarkus builder image for this release is still being prepared, please try again later.

Changelog

  • #360 - Implement annotation support for RecordComponents

For a complete list of changes please visit mandrel-21.3.1.0-Final...mandrel-21.3.1.1-Final


Mandrel 21.3.1.1-Final
OpenJDKs used: 17.0.2+8,11.0.14.1+1