Releases: beehive-lab/TornadoVM
TornadoVM 4.0.1-jdk25
29/04/26
Bug Fixes
- #831: [fix] F16 miscompilation for Metal, PTX, SPIR-V backends with JDK 25
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 25 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.1-jdk25/tornadovm-4.0.0-jdk25-opencl-linux-amd64.zip
unzip tornadovm-4.0.1-jdk25-opencl-linux-amd64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.1-jdk25-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.1-jdk25/tornadovm-4.0.0-jdk25-opencl-mac-aarch64.zip
unzip tornadovm-4.0.1-jdk25-opencl-mac-aarch64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.1-jdk25-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-4.0.1-jdk25-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.1-jdk25/tornadovm-4.0.1-jdk25-opencl-windows-amd64.zip
tar -xf tornadovm-4.0.1-jdk25-opencl-windows-amd64.zip
set TORNADOVM_HOME=%cd%\tornadovm-4.0.1-jdk25-opencl
set PATH=%TORNADOVM_HOME%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 4.0.1-jdk21
29/04/26
Compatibility
- #832: Adopt jdk21 version suffix on develop and update release workflows
- #827: Bump org.apache.logging.log4j:log4j-core from 2.25.3 to 2.25.4
Bug Fixes
- #831: [fix] F16 miscompilation for Metal, PTX, SPIR-V backends with JDK 25
- #830: [fix] Fix F16 miscompilation in PTX and Metal backends
- #829: [fix] Backport jdk25 OCL plugin fixes: 64-bit address arithmetic, node insertion, and atomics
Other Changes
- #823: Update SDKMAN! versions for backend options
- #825: [feat] Add workflow to automatically create mirroring PRs for JDK25
- #824: Update master
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.1-jdk21/tornadovm-4.0.1-jdk21-opencl-linux-amd64.zip
unzip tornadovm-4.0.1-jdk21-opencl-linux-amd64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.1-jdk21-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.1-jdk21/tornadovm-4.0.1-jdk21-opencl-mac-aarch64.zip
unzip tornadovm-4.0.1-jdk21-opencl-mac-aarch64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.1-jdk21-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-4.0.1-jdk21-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.1-jdk21/tornadovm-4.0.1-jdk21-opencl-windows-amd64.zip
tar -xf tornadovm-4.0.1-jdk21-opencl-windows-amd64.zip
set TORNADOVM_HOME=%cd%\tornadovm-4.0.1-jdk21-opencl
set PATH=%TORNADOVM_HOME%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 4.0.0-jdk25
02/04/26
This release for JDK25 support, is synced with 4.0.0-jdk21.
Improvements
- Add
Apple Metalbackend to run natively on Apple Silicon - Add
SIMD Shuffle/ReductionSupport to PTX Backend - Add support for
CUDA Graphsto replay bytecodes to reduce dispatch overhead
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 25 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.0-jdk25/tornadovm-4.0.0-jdk25-opencl-linux-amd64.zip
unzip tornadovm-4.0.0-jdk25-opencl-linux-amd64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.0-jdk25-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.0-jdk25/tornadovm-4.0.0-jdk25-opencl-mac-aarch64.zip
unzip tornadovm-4.0.0-jdk25-opencl-mac-aarch64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.0-jdk25-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-4.0.0-jdk25-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.0-jdk25/tornadovm-4.0.0-jdk25-opencl-windows-amd64.zip
tar -xf tornadovm-4.0.0-jdk25-opencl-windows-amd64.zip
set TORNADOVM_HOME=%cd%\tornadovm-4.0.0-jdk25-opencl
set PATH=%TORNADOVM_HOME%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 4.0.0-jdk21
02/04/26
Improvements
- #796: [JDK21] Add
Apple Metalbackend to run natively on Apple Silicon - #813: Add
SIMD Shuffle/ReductionSupport to PTX Backend - #811: Add support for
CUDA Graphsto replay bytecodes to reduce dispatch overhead
Bug Fixes
- #817: [hotfix] Fix double-deletion of PiNode when multiple OffsetAddressNodes share the same PiNode
Other Changes
- #814: [docs] Update readme to inlcude metal
- #819: Sync master with develop
- #818: [fix] Make cmake to always set CMAKE_OSX_SYSROOT explicitly
- #808: Add TornadoVM developer skill (build, test, debug, Java 21+ idioms) for Claude
- #807: Post release minor fixes for mvn deploy and readme budges
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.0-jdk21/tornadovm-4.0.0-jdk21-opencl-linux-amd64.zip
unzip tornadovm-4.0.0-jdk21-opencl-linux-amd64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.0-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.0-jdk21/tornadovm-4.0.0-jdk21-opencl-mac-aarch64.zip
unzip tornadovm-4.0.0-jdk21-opencl-mac-aarch64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-4.0.0-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-4.0.0-jdk21-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v4.0.0-jdk21/tornadovm-4.0.0-jdk21-opencl-windows-amd64.zip
tar -xf tornadovm-4.0.0-jdk21-opencl-windows-amd64.zip
set TORNADOVM_HOME=%cd%\tornadovm-4.0.0-opencl
set PATH=%TORNADOVM_HOME%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 3.0.0-jdk25
24/02/26
Other Changes
- #799: Add JDK 25.0.2 release automation workflows
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 25 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v3.0.0-jdk25/tornadovm-3.0.0-jdk25-opencl-linux-amd64.zip
unzip tornadovm-3.0.0-jdk25-opencl-linux-amd64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-3.0.0-jdk25-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v3.0.0-jdk25/tornadovm-3.0.0-jdk25-opencl-mac-aarch64.zip
unzip tornadovm-3.0.0-jdk25-opencl-mac-aarch64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-3.0.0-jdk25-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-3.0.0-jdk25-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v3.0.0-jdk25/tornadovm-3.0.0-jdk25-opencl-windows-amd64.zip
tar -xf tornadovm-3.0.0-jdk25-opencl-windows-amd64.zip
set TORNADOVM_HOME=%cd%\tornadovm-3.0.0-jdk25-opencl
set PATH=%TORNADOVM_HOME%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 3.0.0-jdk21
24/02/26
Improvements
- #790: [feat] Move --intellijinit from CLI to developer-only Makefile target with dynamic backend selection
Compatibility
- #804: Refactor GH actions to split JDK21 and JDK25 testing, packaging and deployment
- #777: Bump org.apache.logging.log4j:log4j-core from 2.17.1 to 2.25.3
- #775: [docs] Revise TornadoVM installation instructions
- #776: [feat] Add new action to push default tornadovm version
Bug Fixes
- #785: [fix] Added scripts in dist directory to resolve issue with intellijinit
Other Changes
- #803: Whitelist `TestInheritedFields` for non-OpenCL backends
- #802: [fix] Handle Windows CRLF line endings in virtual device tests and native tests & Update Makefile.mak
- #801: Add GitHub workflows for JDK 25 build, deployment, and release prepar…
- #799: Add JDK 25.0.2 release automation workflows
- #787: [refactor] Prepare compiler and API infrastructure for Jdk25 migration
- #781: Fix OCLFieldBuffer to include inherited instance fields
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v3.0.0/tornadovm-3.0.0-opencl-linux-amd64.zip
unzip tornadovm-3.0.0-opencl-linux-amd64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-3.0.0-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v3.0.0/tornadovm-3.0.0-opencl-mac-aarch64.zip
unzip tornadovm-3.0.0-opencl-mac-aarch64.zip
export TORNADOVM_HOME="$(pwd)/tornadovm-3.0.0-opencl"
export PATH=$TORNADOVM_HOME/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-3.0.0-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v3.0.0/tornadovm-3.0.0-opencl-windows-amd64.zip
tar -xf tornadovm-3.0.0-opencl-windows-amd64.zip
set TORNADOVM_HOME=%cd%\tornadovm-3.0.0-opencl
set PATH=%TORNADOVM_HOME%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 2.2.0
17/12/25
Improvements
- #765: Add cross-platform SDK compatibility checks and fix launcher issues
- #713: [ptx] Support for CUDA JIT compiler flags
Compatibility
- #764: [cicd] Prevent workflows from running on forks
Other Changes
- #773: [build] Replace TORNADO_SDK with TORNADOVM_HOME
- #772: [docs] Refactor license table in README.md for clarity and conciseness
- #771: [CI] Publish archives to sdkman action
- #769: Update README.md for TornadoVM version 2.1.0 for SDKs
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.2.0/tornadovm-2.2.0-opencl-linux-amd64.zip
unzip tornadovm-2.2.0-opencl-linux-amd64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.2.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.2.0/tornadovm-2.2.0-opencl-mac-aarch64.zip
unzip tornadovm-2.2.0-opencl-mac-aarch64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.2.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-2.2.0-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v2.2.0/tornadovm-2.2.0-opencl-windows-amd64.zip
tar -xf tornadovm-2.2.0-opencl-windows-amd64.zip
set TORNADO_SDK=%cd%\tornadovm-2.2.0-opencl
set PATH=%TORNADO_SDK%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 2.1.0
09/12/25
Improvements
- #754: Support to express Q8_0 tensors as Tornado ByteArray
Compatibility
- #756: [CI] Add night workflow to build and test all supported JDKs (Zulu, OpenJDK, GraalVM, Corretto, Mandrel etc) on Linux x64 runner
- #755: [docs] Refining README and simplifying instructions
Bug Fixes
- #753: [hotfix] Fix Conversion Error from FP16 to FP32
Other Changes
- #752: Update POM files: bump parent version to `2.0.1-dev` across all modules
- #758: [CI] Pre and post release workflows to automate release deployments
How to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.1.0/tornadovm-2.1.0-opencl-linux-amd64.zip
unzip tornadovm-2.1.0-opencl-linux-amd64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.1.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.1.0/tornadovm-2.1.0-opencl-mac-aarch64.zip
unzip tornadovm-2.1.0-opencl-mac-aarch64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.1.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-2.1.0-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v2.1.0/tornadovm-2.1.0-opencl-windows-amd64.zip
tar -xf tornadovm-2.1.0-opencl-windows-amd64.zip
set TORNADO_SDK=%cd%\tornadovm-2.1.0-opencl
set PATH=%TORNADO_SDK%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 2.0.0
Improvements
#722: Simplify running tornadovm with a Java argfile
#732: [types] Support for GPU-native Int8 types for PTX and OpenCL
#736: Implement support for compressed oops (coops)
#738: [feat] Update TornadoVM to be packaged as SDK across multiple platforms
#739: [feat] Zero-copy TornadoNativeArray type instances with shallow memory segments
#740: Add support for byte and half-float arrays in local memory across all backends
#748: Support FP32 to FP16 conversion across all backends
Compatibility
#704: Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0 in tornado-benchmarks
#709: Fix Python dependency installation issues in installer
#717: [feat] Added streamlit python dependency for compatibility with TornadoViz
Bug Fixes
#705: [fix] Support for ShortCircuits in OpenCL and PTX
#706: [fix] Codegen support for IntegerBelowNode & Fix of closing bracket in OpenCL
#712: [fix] Fix for Loop Partial Unroll Phase
#714: [fix] The differences CUDA 13 introduced to CUDA API cuCtxCreate
#721: [fix] Integer overflow in TornadoNativeArray implementations that caused IllegalArgumentException when allocating large arrays
#723: [fix] Prevent NullPointerException when trying to dump bytecodes during warm-up
#746: [fix] Remove @ prefix from inline Truffle export flags
Refactors & Infrastructure
#703: Updated build instructions for using a single thread for maven.
#708: [test] Mark unsupported tests for SPIRV
#711: Add mvn test configuration to ease unit-testing when porting TornadoVM to third-party projects
#716: [build-infra] Add missing checksums and script to generate checksum files for TornadoVM Maven artifacts
#720: Increase default memory size on device
#725: [refactor] Move Dynamic Reconfiguration to research features
#730: [build] Revamp build infrastructure by adding Maven wrapper mvnw
#733: Move argfile generation to python from bash
#742: [CI] Migrate build & test workflows (OpenCL, PTX, SPIR-V) to GitHub Actions for Linux (x64) and macOs(arm64)
#737: [tests] Marked Quantization Tests as whitelisted due to NVIDIA driver issues
#743: [build] Use shared export‑list files instead of verbose inline --add-exports in pom.xml
#744: Add licences in pom files - prep work for migrating release to maven central
#745: [deploy] Add release profile in maven to prepare maven central release
#747: [CI] Add deploy-maven-central workflow for deploying artifacts to Maven central
#749: [CI] Add GPG key configuration and Maven settings to deploy-maven-central
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v2.0.0/
How to build
Select the backend/s you want.
## You can try the interactive mode of the installer and select the backends to build with:
./bin/tornadovm-installerHow to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.0.0/tornadovm-2.0.0-opencl-linux-amd64.zip
unzip tornadovm-2.0.0-opencl-linux-amd64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.0.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.0.0/tornadovm-2.0.0-opencl-mac-aarch64.zip
unzip tornadovm-2.0.0-opencl-mac-aarch64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.0.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-2.0.0-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v2.0.0/tornadovm-2.0.0-opencl-windows-amd64.zip
tar -xf tornadovm-2.0.0-opencl-windows-amd64.zip
set TORNADO_SDK=%cd%\tornadovm-2.0.0-opencl
set PATH=%TORNADO_SDK%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 1.1.1
Improvements
#657: Optimize to reuse the allocated buffers for batch processing.
#659: Fixed object state to be the one from the last executed TaskGraph.
#660: New PERSIST bytecode to improve object lifecycle tracking.
#661: Saving the TornadoVM Bytecodes in a log file.
#660: Distinguish the data transfer mode when logging the execution of the TRANSFER_TO_DEVICE_ONCE Bytecode.
#667: Update documentation of the TornadoVM flags.
#670: Refactoring of the Matrix4x4Float type.
#674: Updated project links in README.
#675: Avoid rescheduling IfNodes used for loop-bound evaluation.
#676: Added unit-tests for Transformer Compute Kernels.
#679: Added Matrix-Vector Row-Major compute example.
#683: Mark flash attention unittest unsupported for SPIR-V.
#684: Performance improvements for processing with Dynamic Reconfiguration.
#685: Dynamic reconfiguration refactored.
#686: New API Functions for warmup.
#693: Disabling fast math to support FMA in PTX.
#695: Update tornadovm-installer script to be interactive.
#696: Increase sizes for auxiliary data structures related with the number of Tasks in a TaskGraph.
#697: Added auto-deps mode in tornadovm-installer and restored backend and jdk console arguments.
#698: Update tornadovm-installer changes in README.
Compatibility
#668: Updated build instructions for RISC-V systems.
Bug Fixes
#664: Fix kernel name in PTX with sanitizer check.
#666: Fix GridScheduler for execution plans that have multiple TaskGraphs.
#671: Fix ANSI espace characters for logging TornadoVM Bytecodes.
#677: Fix 1.0/sqrt(x) replacement with native rsqrt(x) function.
#678: Fix profiling on macOS systems, regarding accessing UPS metrics.
#681: Fix closing bracket for flash attention.
#688: Fix state after warmup phase.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.1.1/
How to build
Select the backend/s you want.
## You can try the interactive mode of the installer and select the backends to build with:
./bin/tornadovm-installer