2025/03/18 17:44 What's new in Graal Languages 24.2

やっほー、ロボ子!GraalVM Languages 24.2が出たみたいじゃぞ!

博士、こんにちは。GraalVM Languagesの新しいバージョンですね!今回のリリースには、どのようなアップデートがあるのでしょうか?

ふむ、JDK 24向けに設計されてて、JDK 21とも互換性があるらしいぞ。それに、GraalPy用のGradleプラグインとか、JavaスレッドでのネイティブPythonのスケーリングとか、色々盛りだくさんじゃ!

GraalPyのGradleプラグインは便利そうですね。Pythonパッケージの構成が簡単になるのは素晴らしいです。ネイティブPythonのスケーリングも気になります。

そうじゃろ!実験的な機能みたいじゃが、Javaスレッド間でネイティブPythonをスケールできるのはすごいぞ!`python.IsolateNativeModules`オプションを有効にして、GraalPyのマルチコンテキストモードを使うらしい。

なるほど。Apache Arrowとの統合で、JavaとPython間で大量のデータを直接共有できるのも魅力的ですね。

その通り!それと、Value APIも拡張されて、`Value#as(byte[].class)`でゲスト言語のバイトバッファを新しいバイト配列にコピーできるようになったみたいじゃ。

`Value.fromByteBasedString(…)`と`Value.fromNativeString(…)`で、生のバイト配列とネイティブメモリから文字列を作成できるのも便利ですね。

じゃろじゃろ!GraalJSとGraalWasmも進化してるぞ。ECMAScriptの新しい提案が実装されたり、WebAssembly/ESモジュールの統合がサポートされたりしてるみたいじゃ。

WebAssemblyモジュールをimport文でロードできるのは、モジュール間の連携がしやすくなりそうですね。

そして、Espresso!Continuation APIっていう実験的な新機能が追加されたらしいぞ。実行中のプログラムを一時停止して、状態を保存して、後で再開できるんだと!

それはすごいですね!投機的実行やコルーチンの実装、Webリクエストの処理など、色々なユースケースが考えられますね。

そうそう!ヒープオブジェクトをシリアライズして、別のJVMインスタンスで実行を再開できるのも面白いぞ。分散コンピューティングとかライブプログラミングにも応用できそうじゃ。

TruffleRubyもRuby 3.3.5に更新されたんですね。Panama NFIバックエンドに切り替えたことで、C拡張機能のパフォーマンスが向上したとのことですが、具体的にはどのくらい速くなったのでしょうか?

`sqlite3`, `trilogy`, `json`などのC拡張機能が2倍から3倍高速化されたらしいぞ!

それは素晴らしいですね!Truffle Language Implementation Frameworkには、Bytecode DSLが追加されたんですね。Truffle上にバイトコードインタープリターを実装するための新しいフレームワークですか。

そう!ASTのような仕様からバイトコードインタープリターの複雑な詳細を生成してくれるらしい。段階的解釈、バイトコード高速化、ボクシング除去などの機能もサポートしてるみたいじゃ。

GraalVM Languagesは、コミュニティとエコシステムも活発なんですね。GraalPyを使うと、JavaアプリケーションでPygalを使ってインタラクティブなSVGチャートを簡単に作成できるとのことですが、試してみたいです。

せっかくGraalVMの話をしたから、ロボ子にクイズじゃ!GraalVMで動く好きな言語はなーんだ?

えーっと、たくさんありすぎて迷いますね… やっぱり、Java、Python、JavaScript、Ruby、Wasm、全部好きです!

ぶっぶー!全部正解!…って、そういうボケじゃないんじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。