, ,

GraalVM 25.5 is here!

原文はこちら。
The original article was written by Alina Yurenko (Developer Advocate for GraalVM, Oracle Labs).
GraalVM 25.5 is here! 🎉. We’re happy to announce GraalVM 25.5! | by Alina Yurenko | graalvm | Nov, 2026 | Medium

GraalVM 25.5のリリースを発表できることを嬉しく思います!

今回のリリースでは、Native Image向けの新しいコンパイラ最適化、開発者体験および可観測性の向上、そしてGraalVM言語エコシステム全体にわたる更新が盛り込まれています。詳しく見ていきましょう!

Introducing Pyronaut: high-performance applications powered by GraalPy 🔥

GraalPyは、Pythonアプリケーションを構築する新たな方法を可能にしました。Pyronautはその一つで、Micronautプロジェクトから生まれた新しいフレームワークです。

Pyronaut — High-performance Python framework

これはGraalPyとMicronautのアプリケーションモデルを組み合わせることで、統合されたデータアクセス、バリデーション、および可観測性をPythonサービスにもたらします。Pythonの型ヒントとデコレータによってアプリケーションが定義され、ビルド時の処理によって、起動前に配線、設定、データベースクエリがチェックされます。これにより、最初のリクエストが到着する前に多くの問題を検知でき、インフラチームが構築する必要のある作業量を削減できます。

Pyronaut performance highlights – Performance — Pyronaut

GraalVMスタックが実行と統合の両方を支えています。GraalPyがPythonコードを実行し、Graal JITが頻繁に実行されるコードを最適化し、MicronautがノンブロッキングなNettyベースのHTTPランタイムと、その広範なエコシステムへのアクセスを提供します。Pythonアプリケーションは、慣れ親しんだPython構文、async/await、およびpytestなどのツールを維持しつつ、Micronautの機能やJVMライブラリを直接利用できます。

Pyronautアプリケーションは、最高のパフォーマンスを得るためにJVMアプリケーションとして実行したり、再利用可能なCremaネイティブベースを使用して起動を高速化し、メモリ使用量を削減したり(変更のたびにネイティブ実行ファイルを再ビルドする必要はありません)、あるいはネイティブ実行ファイルとしてコンパイルしたりすることができます。例や導入手順については、Pyronautのウェブサイトをご覧ください。

Project Crema: Open World for Native Image · Issue #11327 · oracle/graal
Introducing Pyronaut | Pyronaut Blog

Even higher performance 🚀

GraalVM 25.5 では、いくつかの新しいコンパイラ最適化が追加されており、その多くはループに焦点を当てています。積極的な部分展開とシミュレーションベースのループピーリングにより、コンパイラが反復処理を最適化する機会をさらに増やします。また、新しいループ変換により、長時間実行されるループを分割してセーフポイントのオーバーヘッドを低減したり、ループを再構成してさらなる最適化を図ったりすることも可能です。範囲チェック、メモリの読み書き、および厳密な算術演算の改善により、アプリケーションの挙動を維持しつつ、対象となるループ内で実行される処理をさらに削減できます。

ループ以外にも、コンパイラは同じオブジェクトのネストされたロックや単純な制御フローを跨ぐロックなど、より多くのロックを排除できるようになりました。また、収束する分岐から同等のコードを共有することも可能で、これにより生成されるコードのサイズを削減できる可能性があります。これらの最適化はデフォルトで有効になっています。完全なリストと対応するオプションについては、リリースノートを参照してください。

Release notes – GraalVM 25.5

GraalVM 25.5 performance using the Micronaut Similarity benchmark from the Barista suite.
barista/benchmarks/micronaut-similarity at master · barista-benchmarks/barista
barista-benchmarks/barista: Barista is an open-source Microservice Benchmark Suite for the JVM platform. It comprises applications written in a variety of popular frameworks and supports both JIT and AOT compilations.

これらの最適化は、特に配列の処理、計算の実行、データの変換、あるいはCPU上でのLLM推論など、ループ内でかなりの時間を費やすアプリケーションに大きなメリットをもたらすと期待されています。同期処理が頻繁に行われるワークロードや、類似した制御フロー分岐が多いワークロードにおいても、オーバーヘッドの低減や生成されるコードサイズの縮小が見込まれます。

Even better runtime visibility 🔎

jstack、jinfo、jps、jstat などの JDK 診断ツールを Crema 上で実行し、他の JVM プロセスを検査できるようになりました。Linux および macOS では、--enable-monitoring=jvmstatでビルドされたネイティブ実行ファイルも、他の HotSpot および Native Image プロセスによって公開されたファイルベースの JVMStat パフォーマンスデータを読み取ることができます。

Native Image build and runtime updates 🤖

There are a few other useful practical changes:

  • Clearer option errors. An unrecognized Native Image option beginning with - or -- now fails instead of being treated as a main class or output filename. If you intentionally want an output name beginning with a dash, pass it with -o, for example native-image -jar hello.jar -o --my-image, or prefix the positional name with ./.
  • Bundle format 2.0. Bundles now record explicit path root kinds, build argument groups with their source platform, and markers for unavailable inputs. Older bundle formats remain readable.

他にも、実用的な変更点がいくつかあります:

オプションエラーの明確化

- または -- で始まる認識されない Native Image オプションは、メインクラスや出力ファイル名として扱われるのではなく、エラーになるようになりました。意図的にダッシュで始まる出力名を指定したい場合は、-o を付けて指定してください(例:native-image -jar hello.jar -o --my-image)。あるいは、位置指定名の先頭に ./ を付ける方法もあります。

Bundle format 2.0

バンドルには、明示的なパスルートの種類、ソースプラットフォームを含むビルド引数グループ、および利用できない入力のマーカーが記録されるようになりました。以前のバンドル形式も引き続き読み取ることができます。

WebAssembly in Oracle AI Database, powered by GraalVM 🚀

Oracle AI Database 23.26.4 では、データベース内で JavaScript を実行するための GraalVM 搭載ランタイムである Multilingual Engine (MLE) 内の WebAssembly モジュール に対する サポートが追加されました。

What’s new in MLE 23.26.4: WebAssembly lands in Oracle AI Database | developers

開発者は、適切な Wasm バイナリを MLE モジュールとして保存し、その JavaScript バインディングをロードして、データベースロジックの一部として呼び出すことができるようになりました。

これは、アプリケーションが、データを格納している場所(例えば、データ変換、検証、または特殊な処理など)で既存のWasmライブラリを直接再利用する必要がある場合に有用です。この処理を別のサービスに移行せずに済みます。

Community Updates 🤝

毎年秋になると、私たちのお気に入りの年次イベントの一つであるGraalVM Community Summitが開催されます。今年は、Amazon、Apple、BellSoft、Broadcom、Elide、Google、HEBI Robotics、IBM、JetBrains、Netflix、Red Hat、Saxonica などの企業を代表する、約 70 名のコミッター、パートナー、ベンダーの方々をお迎えしました。2 日間にわたり新機能や今後の計画について議論を交わし、世界中の開発者にとって GraalVM をさらに有用なものにするために、これまで以上に意気込みを新たにしています。

Community Summit

Conclusion

この場を借りて、今回のリリースに寄せられたすべてのフィードバック、提案、そして貢献をしてくださった素晴らしいコントリビューターやコミュニティの皆様に感謝申し上げます。

今回のリリースに関するフィードバックや、今後のリリースで実装してほしい機能の提案がございましたら、Slack、GitHub、またはLinkedInにてぜひお寄せください。

さあ、さっそく新しいGraalVMをお試しください! 🚀

コメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。