Skip to content

Releases: graalvm/mandrel

Mandrel 24.1.1.0-Final for JDK 23

23 Oct 18:26
mandrel-24.1.1.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 24.1.1.0-Final is a downstream distribution of the GraalVM community edition.
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 23.0.1+11.
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 Linux/MacOS

Mac users:

  • Use artifact mandrel-java23-macos-aarch64-24.1.1.0-Final.tar.gz
  • Use JAVA_HOME="$( pwd )/mandrel-java23-24.1.1.0-Final/Contents/Home"
$ curl -O -J -L "https://github.com/graalvm/mandrel/releases/download/mandrel-24.1.1.0-Final/mandrel-java23-linux-amd64-24.1.1.0-Final.tar.gz"
$ tar -xf mandrel-java23-linux-amd64-24.1.1.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java23-24.1.1.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J "https://code.quarkus.io/d?e=rest&cn=code.quarkus.io"
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quick start Windows

Note that vcvars64 command is usually located in your VS installation and you should add it to your PATH,
e.g. C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build.

powershell -c "Start-BitsTransfer -Source 'https://github.com/graalvm/mandrel/releases/download/mandrel-24.1.1.0-Final/mandrel-java23-windows-amd64-24.1.1.0-Final.zip'"
powershell -c "Expand-Archive -Path mandrel-java23-windows-amd64-24.1.1.0-Final.zip -DestinationPath . -Force"
SET JAVA_HOME=%CD%\mandrel-java23-24.1.1.0-Final
SET GRAALVM_HOME=%JAVA_HOME%
SET PATH=%JAVA_HOME%\bin;%PATH%
vcvars64
powershell -Command "Invoke-WebRequest -Uri 'https://code.quarkus.io/d?e=rest&cn=code.quarkus.io' -OutFile 'code-with-quarkus.zip'"
powershell -c "Expand-Archive -Path code-with-quarkus.zip -DestinationPath . -Force"
cd code-with-quarkus
mvnw package -Pnative -Dquarkus.native.additional-build-args=-J-Djdk.console=jdk.base
target\code-with-quarkus-1.0.0-SNAPSHOT-runner

Note: The -Dquarkus.native.additional-build-args=-J-Djdk.console=jdk.base bit is a workaround until oracle#9884 is fixed and integrated in quarkusio/quarkus#43777. The error does not manifest headlessly in CI, only in a real Windows terminal.

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-24.1.0.0-Final...mandrel-24.1.1.0-Final


Mandrel 24.1.1.0-Final
OpenJDK used: 23.0.1+11

Mandrel 23.1.5.0-Final for JDK 21

23 Oct 08:29
mandrel-23.1.5.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 23.1.5.0-Final is a downstream distribution of the GraalVM community edition.
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 21.0.5+11-LTS.
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 Linux/MacOS

Mac users:

  • Use artifact mandrel-java21-macos-aarch64-23.1.5.0-Final.tar.gz
  • Use JAVA_HOME="$( pwd )/mandrel-java21-23.1.5.0-Final/Contents/Home"
$ curl -O -J -L "https://github.com/graalvm/mandrel/releases/download/mandrel-23.1.5.0-Final/mandrel-java21-linux-amd64-23.1.5.0-Final.tar.gz"
$ tar -xf mandrel-java21-linux-amd64-23.1.5.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java21-23.1.5.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J "https://code.quarkus.io/d?e=rest&cn=code.quarkus.io"
$ unzip code-with-quarkus.zip
$ cd code-with-quarkus/
$ ./mvnw package -Pnative
$ ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

Quick start Windows

Note that vcvars64 command is usually located in your VS installation and you should add it to your PATH,
e.g. C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build.

powershell -c "Start-BitsTransfer -Source 'https://github.com/graalvm/mandrel/releases/download/mandrel-23.1.5.0-Final/mandrel-java21-windows-amd64-23.1.5.0-Final.zip'"
powershell -c "Expand-Archive -Path mandrel-java21-windows-amd64-23.1.5.0-Final.zip -DestinationPath . -Force"
SET JAVA_HOME=%CD%\mandrel-java21-23.1.5.0-Final
SET GRAALVM_HOME=%JAVA_HOME%
SET PATH=%JAVA_HOME%\bin;%PATH%
vcvars64
powershell -Command "Invoke-WebRequest -Uri 'https://code.quarkus.io/d?e=rest&cn=code.quarkus.io' -OutFile 'code-with-quarkus.zip'"
powershell -c "Expand-Archive -Path code-with-quarkus.zip -DestinationPath . -Force"
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-23.1.4.0-Final...mandrel-23.1.5.0-Final


Mandrel 23.1.5.0-Final
OpenJDK used: 21.0.5+11-LTS

Mandrel 23.0.6.0-Final for JDK 17

22 Oct 11:34
mandrel-23.0.6.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 23.0.6.0-Final is a downstream distribution of the GraalVM community edition.
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.13+11.
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 Linux

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

Quick start Windows

Note that vcvars64 command is usually located in your VS installation and you should add it to you PATH,
e.g. C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build.

powershell -c "Expand-Archive -Path mandrel-java17-windows-amd64-23.0.6.0-Final.zip -DestinationPath . -Force"
SET JAVA_HOME=%CD%\mandrel-java17-23.0.6.0-Final
SET GRAALVM_HOME=%JAVA_HOME%
SET PATH=%JAVA_HOME%\bin;%PATH%
vcvars64
powershell -Command "Invoke-WebRequest -Uri 'https://code.quarkus.io/d?j=17&e=resteasy-reactive&S=io.quarkus.platform%3A3.2&cn=code.quarkus.io' -OutFile 'code-with-quarkus.zip'"
powershell -c "Expand-Archive -Path code-with-quarkus.zip -DestinationPath . -Force"
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

Backports

  • #781 - [23.0] Backport: Adopt "JDK-8324646: Avoid Class.forName in SecureRandom constructor"

For a complete list of changes please visit mandrel-23.0.5.0-Final...mandrel-23.0.6.0-Final


Mandrel 23.0.6.0-Final
OpenJDK used: 17.0.13+11

Mandrel 24.1.0.0-Final for JDK 23

23 Sep 18:03
Compare
Choose a tag to compare

Mandrel

Mandrel 24.1.0.0-Final is a downstream distribution of the GraalVM community edition for JDK 23.
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 23+37.
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-java23-linux-amd64-24.1.0.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java23-24.1.0.0-Final"
$ export GRAALVM_HOME="${JAVA_HOME}"
$ export PATH="${JAVA_HOME}/bin:${PATH}"
$ curl -O -J 'https://code.quarkus.io/d?e=rest&cn=code.quarkus.io'
$ 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=rest&cn=code.quarkus.io'
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:jdk-23
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

powershell -c "Invoke-WebRequest -OutFile quarkus.zip -Uri https://code.quarkus.io/d?e=rest&cn=code.quarkus.io"
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:jdk-23
podman build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
podman run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

For a complete list of changes please visit jdk-23.0.0...mandrel-24.1.0.0-Final


Mandrel 24.1.0.0-Final
OpenJDK used: 23+37

Mandrel 24.0.2.0-Final for JDK 22

21 Jul 01:24
mandrel-24.0.2.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 24.0.2.0-Final is a downstream distribution of the GraalVM community edition.
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 and 22.0.2+9.
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-java-linux-amd64-24.0.2.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java-24.0.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-builder-image:jdk-22
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

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-builder-image:jdk-22
podman build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
podman run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

For a complete list of changes please visit mandrel-24.0.1.0-Final...mandrel-24.0.2.0-Final


Mandrel 24.0.2.0-Final
OpenJDKs used: 22.0.2+9

Mandrel 23.1.4.0-Final for JDK 21

21 Jul 01:22
mandrel-23.1.4.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 23.1.4.0-Final is a downstream distribution of the GraalVM community edition.
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 and 21.0.4+7-LTS.
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-java-linux-amd64-23.1.4.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java-23.1.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
$ 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-builder-image:jdk-21
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

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-builder-image:jdk-21
podman build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
podman run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

Backports

  • #738 - [23.1] Backports resolving OpenJDK 21.0.4 updates compatibility issues
  • #737 - [23.1] Backport: Minor JNI and libchelper fixes

For a complete list of changes please visit mandrel-23.1.3.0-Final...mandrel-23.1.4.0-Final


Mandrel 23.1.4.0-Final
OpenJDKs used: 21.0.4+7-LTS

Mandrel 23.0.5.0-Final for JDK 17

21 Jul 01:19
mandrel-23.0.5.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 23.0.5.0-Final is a downstream distribution of the GraalVM community edition.
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.12+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-23.0.5.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-23.0.5.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-builder-image:jdk-17 \
    -Dmaven.compiler.release=17
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

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-builder-image:jdk-17 -Dmaven.compiler.release=17
podman build -f src/main/docker/Dockerfile.native -t my-quarkus-mandrel-app .
podman run -i --rm -p 8080:8080 my-quarkus-mandrel-app

Changelog

Backports

  • #768 - [23.0] [backport] [GR-46536] Add jdk.internal.platform to built-in package natives.

For a complete list of changes please visit mandrel-23.0.4.0-Final...mandrel-23.0.5.0-Final


Mandrel 23.0.5.0-Final
OpenJDK used: 17.0.12+7

Mandrel 23.1.3.1-Final for JDK 21

10 May 09:42
08389e1
Compare
Choose a tag to compare

Mandrel

Mandrel 23.1.3.1-Final is a downstream distribution of the GraalVM community edition for JDK 21.
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 21.0.3+9-LTS.
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-java21-linux-amd64-23.1.3.1-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java21-23.1.3.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

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

docker pull quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21
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-builder-image:jdk-21
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

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-builder-image:jdk-21
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-23.1.3.0-Final...mandrel-23.1.3.1-Final


Mandrel 23.1.3.1-Final
OpenJDK used: 21.0.3+9-LTS

Mandrel 23.0.4.1-Final for JDK 17

10 May 09:33
87f3e29
Compare
Choose a tag to compare

Mandrel

Mandrel 23.0.4.1-Final is a downstream distribution of the GraalVM community edition for JDK17.
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.11+9.
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-23.0.4.1-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java17-23.0.4.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

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

docker pull quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-17
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-builder-image:jdk-17 
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

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-builder-image:jdk-17
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

  • #683 - Fix for birth time support

For a complete list of changes please visit mandrel-23.0.4.0-Final...mandrel-23.0.4.1-Final


Mandrel 23.0.4.1-Final
OpenJDK used: 17.0.11+9

Mandrel 24.0.1.0-Final for JDK 22

23 Apr 10:51
mandrel-24.0.1.0-Final
Compare
Choose a tag to compare

Mandrel

Mandrel 24.0.1.0-Final is a downstream distribution of the GraalVM community edition for JDK 22.0.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 jdk 22.0.1+8.
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-java22-linux-amd64-24.0.1.0-Final.tar.gz
$ export JAVA_HOME="$( pwd )/mandrel-java22-24.0.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
$ 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.

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-builder-image:jdk-22
./target/code-with-quarkus-1.0.0-SNAPSHOT-runner

One can use the builder image on Windows with e.g. Podman Desktop, see Podman For Windows.

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-builder-image:jdk-22
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-24.0.0.0-Final...mandrel-24.0.1.0-Final


Mandrel 24.0.1.0-Final
OpenJDK used: 22.0.1+8