GraalVM Hello World Program Down To "Just" 6.5MB
Summary
GraalVM Community Edition 25.1.3 reduces the size of a native Hello World binary to 6.5MB, adds JIT compilation recording/replay, a disassembly tool, and more.
View Cached Full Text
Cached at: 07/01/26, 10:05 PM
GraalVM CE 25.1.3 Gets Native Image “Hello World” Program Down To Just 6.5MB
Source: https://www.phoronix.com/news/GraalVM-Community-25.1.3

GraalVM, the advanced JDK focused on ahead-of-time (AOT) Native Image compilation and since last year beganshifting focus to more non-Java languageslike Python and JavaScript, is out with its newest community feature release. GraalVM Community Edition 25.1.3 is now available with some interesting changes in tow.
GraalVM 25.1.3 adds support for recording and replaying JIT compilations with the Graal compiler, a new disassembly tool is added, and there is optional constant blinding support for untrusted code. Plus new performance improvements, debugging enhancements, improved compatibility, Linux builds now producing Position Independent Executables (PIEs) by default, and other enhancements. There is also improved language support for GraalJS as the JavaScript offering, GraalPy for Python adding more features, and more.
GraalVM 25.1.3 also has Web Image as a new experimental back-end for GraalVM Native Image that compiles a Java application ahead-of-time to a WebAssembly module with a JavaScript wrapper.
Catching me most by surprise was a listed change for reducing Native Image sizes by further compacting them:
“Reduced Native Image size by compacting image heap metadata and storage, including module metadata, runtime dynamic-access metadata, and symbol table data, and intrinsifying simple constant String.format and String::formatted calls. This reduces the size of a HelloWorld application on Linux AMD64 to ~6.5 MB.”
As in, catching me by surprise that getting a basic “Hello World” program down to**~6.5MB**... Perhaps too used to other languages, but a 6.5MB binary for a “Hello World” program?! I was curious how big the HelloWorld AMD64 Linux build was previously, so was digging through the activity. Much of Graal development is behind Oracle’s closed doors butthis pull requestbrought up a public question over the impact on size. The additional Native Image compaction in this release “should be around 1-2% image size across the board.” And then furtherelaborated:
“Overall, you will see larger improvements of 25.1 vs 25.0.x in image size, because we did several smaller optimizations in this area (some still pending) that add up. There is also a smaller positive effect on RSS due to the more compact representations. You will see a very large drop in helloworld image size due to the String format intrinsification.”
But still, getting a HelloWorld app down to 6.5MB; is it just me or is that still rather bloated for all but the most elaborate “hello world” programs?
Downloads and more details on the GraalVM Community 25.1.3 release can be found viaGitHub.
Similar Articles
Golfing Zig ELF Binaries (2025)
A technical deep-dive into reducing the size of Zig ELF binaries, starting from 2180K to under 500 bytes by stripping debug info, switching to ReleaseSmall, and using a freestanding target.
Bytecode VMs in surprising places (2024)
This article explores surprising uses of bytecode virtual machines, specifically eBPF in the Linux kernel and DWARF expressions for debug information in compiled binaries.
mvm - a fast virtual machine for Go
mvm is a fast, portable virtual machine for Go that allows running Go programs directly from source, embedding a Go interpreter, and includes a REPL, debugger, and standard library.
Tiny-Lua-Compiler: Possibly the smallest Lua compiler ever
Tiny-Lua-Compiler is an educational, self-hosting Lua 5.1 compiler and VM written in pure Lua, designed to be small enough to study but complete enough to handle real language features.
@tarunsachdeva: playing with http://zero-native.dev tonight, this thing is crazy got a native mac app with webview in... 680kb
Zero-native is a new tool for building lightweight native desktop apps using Zig and a WebView, producing sub-megabyte binaries with fast rebuilds and direct C library access.