概要

JVM上で動作する動的プログラミング言語Apache Groovyの開発チームは9月22日、メジャーバージョンとなる「Groovy 6.0.0」を正式リリースした。3回のリリース候補(RC)を経てのGA(一般提供)到達となる。公式アナウンスによれば、本リリースには10件のバグ修正・改善が含まれている。InfoQによれば、あわせて依存関係の更新も行われている。詳細な変更点は公式サイトのダウンロードページおよびJIRA上のリリースノートで確認できるとしている。

レキサー・パーサーの内部実装刷新

今回のリリースで特に注目されるのが、字句解析(レキサー)および構文解析(パーサー)の性能改善だ。InfoQのJava News Roundupによれば、具体的には以下の4点の内部実装変更が行われている。

  • 数値リテラルの断片を文字クラスへとフラット化
  • ASCII識別子の処理を、述語を用いないDFA(決定性有限オートマトン)ベースの経路に分離
  • 正規表現ベースだったレキサーの述語処理を、直接的な文字比較へ置き換え
  • アノテーション要素の値をゲーティングし、AdaptivePredictが代入式を探索しないようにする

これらはいずれもコンパイル時の字句・構文解析処理を効率化するための最適化であり、正規表現マッチングや述語評価に依存していた処理経路を、より高速な文字単位の判定やDFAベースの処理へ置き換えることで、パーサー全体の処理性能を底上げする狙いがあるとみられる。処理系内部の実装変更が中心であるため、既存のGroovyコードの互換性への影響は限定的と考えられる。

位置づけと今後

Groovyはアナウンス文中で「a multi-faceted programming language for the JVM(JVM向けの多面的なプログラミング言語)」と自己紹介されている通り、動的型付けとJavaとの高い相互運用性を両立させる言語として、Gradleのビルドスクリプトをはじめ幅広い用途で使われてきた。今回のメジャーバージョンアップは、InfoQによれば新機能として位置づけられるレキサー・パーサーの性能改善に加え、バグ修正と依存関係の更新を含むリリースといえる。

なお同時期には、GPUカーネル開発向けのTileContextクラスを追加したTornadoVM 7.0、コンパイラ最適化を拡張したGraalVM 25.4、Jakarta Persistence 4.0対応を進めるHibernate ORM 8.0のベータ版、32件のCVEを修正したQuarkus 3.39.5、Java 27対応とWindows環境で45%の性能改善を実現したGradle 9.8、最終RC候補とされるMaven 4.0 RC7など、JVMエコシステム全体で活発なアップデートが相次いでおり、Groovy 6.0のリリースもこの流れの一環として位置づけられる。