New Truffle and GraalVM Languages release

原文はこちら。
The original article was written by Alina Yurenko (Developer Advocate for GraalVM, Oracle Labs).
https://medium.com/graalvm/new-truffle-and-graalvm-languages-release-1e5c8cdaaff

新しいGraalVMリリースが到着しました!TruffleとGraalVM言語の中身を見てみましょう。

Truffle Unchained

GraalVMのPolyglot言語ランタイムであるTruffleと言語ランタイムが、GraalVM JDKから切り離されました。ネイティブ版とJVMスタンドアロン版のスタンドアロン言語ランタイムをダウンロード可能です。Javaアプリケーションに埋め込むために、GraalVM JDKと他の互換性のあるJDKのために動作するMaven Centralからすべての成果物をダウンロードできます。変更点を詳しく見ていきましょう。詳細は専用のブログ記事をご覧ください。

Truffle Unchained — Portable Language Runtimes as Java Libraries
https://medium.com/graalvm/truffle-unchained-13887b77b62c
https://logico-jp.io/2023/09/21/truffle-unchained-portable-language-runtimes-as-java-libraries/

Standalone Language Runtimes

GraalVM言語ランタイム(JavaScript、Python、Ruby、Java on Truffle、WebAssembly、LLVM用)は、GitHubからスタンドアロンのディストリビューションとしてダウンロードできるようになりました。

GraalVM for JDK 21 Community 21.0.0
https://github.com/graalvm/graalvm-ce-builds/releases/

各言語のスタンドアロン言語ランタイムには以下の2個のモードがあります。

  • Native: 高速起動可能なAOTコンパイル済み言語ランタイム
  • JVM: 完全なJava互換性を持つ、JVMベースのランタイム

さらに各スタンドアロン言語ランタイムには、Community Edition(-communityという接尾辞が付く)とGFTC (GraalVM Free Terms and Conditions) ベースのOracle GraalVM用のバージョンもあります。

Introducing the GraalVM Free License
https://blogs.oracle.com/java/post/graalvm-free-license

Polyglot Embedding

これまで、JavaアプリケーションにGraalVM言語を埋め込むには、guツールを使って言語をインストールする必要がありましたが、このリリースですべての言語がMaven依存関係として利用できるようになりました。Mavenの依存関係グループorg.graalvm.polyglotで、embedderに関連するすべてのアーティファクトを見つけることができます。

Maven Central: org.graalvm.polyglot
https://central.sonatype.com/namespace/org.graalvm.polyglot

例えば、PythonをJavaプログラムに埋め込む場合、以下のスニペットをpom.xmlに追加してください。

<dependency>
  <groupId>org.graalvm.polyglot</groupId>
  <artifactId>polyglot</artifactId>
  <version>23.1.0</version>
</dependency>
<dependency>
  <groupId>org.graalvm.polyglot</groupId>
  <artifactId>python</artifactId>
  <version>23.1.0</version>
  <type>pom</type>
</dependency>

完全なプロジェクトのサンプルは、GitHubのPolyglot embedding demoにあります。

Polyglot Embedding Demo with GraalVM for JDK 21
https://github.com/graalvm/polyglot-embedding-demo

言語ランタイムをMaven/Gradleの依存関係としてインストールできるようになったので、guツールを非推奨にして、削除しています。GraalVM for JDK 21以後で各言語を有効化する方法に関連するチケットを確認ください。

[GR-46219] Remove the GraalVM Updater #6855
https://github.com/oracle/graal/issues/6855

Truffle Unchainedに関する詳細は、以下のエントリをご覧ください。

Truffle Unchained — Portable Language Runtimes as Java Libraries
https://medium.com/graalvm/truffle-unchained-13887b77b62c
https://logico-jp.io/2023/09/21/truffle-unchained-portable-language-runtimes-as-java-libraries/

GraalVM SDK changes

GraalVM SDKは、4つの細かいモジュールに分割されました。

org.graalvm.nativeimage高度なユースケースのためのNative ImageのパブリックAPI
org.graalvm.polyglotPolyglot言語実装をJavaに埋め込むためのライブラリ
org.graalvm.wordJavaで機械語サイズの値を扱うための低レベルライブラリ
org.graalvm.collectionsGraalVMコンポーネント用のコレクションライブラリ

このリリースでは、すべてのGraalVM APIに互換性があることに注意してください。

それでは、各言語の新機能を見ていきましょう。

JavaScript

JavaScriptの言語スタンドアロンディストリビューションはGitHubからご利用いただけます。

GraalVM for JDK 21 Community 21.0.0
https://github.com/graalvm/graalvm-ce-builds/releases/

Javaプログラムへの埋め込みにあたっては、以下のMaven coordinateを使ってください(Oracle GraalVMであればjs、Community Editionであればjs-community)。

<dependency>
  <groupId>org.graalvm.polyglot</groupId>
  <artifactId>js</artifactId>
  <version>23.1.0</version>
  <type>pom</type>
</dependency>

GraalVMには”js” ScriptEngineが同梱されないことに注意してください。”js” ScriptEngineを有効にするには、Maven依存関係を使用するか、モジュールパスに明示的にjs-scriptengine.jarを置いてください。

またこのリリースでは、ECMAScript 2023 の機能をデフォルトで有効にし、Node.js をバージョン 18.17.1 に更新しています。

その他、いくつかの新たなオプションを追加していますので、詳細は変更履歴をご覧ください。

changelog
https://github.com/oracle/graaljs/blob/master/CHANGELOG.md

What’s new in GraalPy 🐍

GraalPyはGFTCライセンスでも利用できるようになりました。CEとGFTCの両方のビルドをGitHubから入手できます。

GraalVM for JDK 21 Community 21.0.0
https://github.com/graalvm/graalvm-ce-builds/releases/

GraalPyはpyenvを使ってスタンドアロンでインストールも可能です。

# To install Oracle GraalPy
pyenv install graalpy-23.1.0

# To install GraalPy Community Edition
pyenv install graalpy-community-23.1.0

GraalPyはWindows用のディストリビューションも提供するようになりました。これはWindowsをサポートするGraalPyの最初のプレビューゆえに制約が存在しますが、Pygalのようなpure Pythonパッケージは動作しますし、python -m pip --no-cache install pygal でインストールできます。

今回、sqlite3モジュールのサポートを追加しました。これにより、coverageFlask-SQLAlchemyのような多くのパッケージがこの組み込みデータベースの上で動作するようになります。

GraalPyスタンドアロンツールは、Linux、Windows、macOSで実行可能なPythonバイナリの単一実行ファイルをビルドできるようになりました。

また、GitHubのsetup-pythonアクションでのGraalPyのサポートをコントリビュートしているところです。

Add GraalPy support #694
https://github.com/actions/setup-python/pull/694

現在作業中ですが、近いうちにGitHub ActionでGraalPyを使えるようになることを願っています。

TruffleRuby

他のGraalVM言語と同様に、TruffleRubyにはnativejvmの2つのスタンドアロンモードがあり、GitHubで利用できます。

GraalVM for JDK 21 Community 21.0.0
https://github.com/graalvm/graalvm-ce-builds/releases/

Linux向けOracle GraalVMのTruffleRuby Nativeスタンドアロン言語ランタイムでは、G1 GCが使用されるようになり、パフォーマンスが大幅に向上しました。

本リリースのRubyバージョンが3.2.2に更新されています。

gu install $LANGUAGE は、TruffleRuby JVMスタンドアロン言語ランタイムで利用可能な truffleruby-polyglot-get $LANGUAGE で置き換えられました。詳細は以下のドキュメントをご覧ください。

Installing Other Languages
https://github.com/oracle/truffleruby/blob/master/doc/user/polyglot.md#installing-other-languages

その他の変更点や改善点はリリースノートをご覧ください。

Release TruffleRuby 23.1.0
https://github.com/oracle/truffleruby/releases/tag/graal-23.1.0

Conclusion

この場を借りて、このリリースに寄せられたすべてのフィードバック、提案、貢献に感謝します。このリリースに関する追加のフィードバックや、将来のリリースで見たい機能に関する提案がありましたら、Slack、GitHub、またはTwitterで共有してください。

Slack invitation
https://www.graalvm.org/slack-invitation
GitHub Issues
https://github.com/oracle/graal
Twitter
https://twitter.com/graalvm

GraalVM JDKおよびNative Imageのアップデートについては、以下のブログエントリをご覧ください。

GraalVM for JDK 21 is here! 🚀
https://medium.com/graalvm/graalvm-for-jdk-21-is-here-ee01177dd12d
https://logico-jp.io/2023/09/22/graalvm-for-jdk-21-is-here/

新しいGraalVMを試してみてください!🚀

Download GraalVM
https://graalvm.org/downloads/

コメントを残す

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