Truffle言語実装フレームワーク

Truffle言語実装フレームワーク(Truffle)は、自己変更する抽象構文ツリーのインタプリタとしてツールやプログラミング言語実装を構築するためのオープン・ソース・ライブラリです。Truffleは、オープン・ソースのGraalコンパイラとともに、現在の動的言語の時代におけるプログラミング言語実装テクノロジの重要な進歩を示しています。

TruffleのビットはMaven Centralにアップロードされます。これらは、pom.xmlファイルから次のように使用できます:

<dependency>
    <groupId>org.graalvm.truffle</groupId>
    <artifactId>truffle-api</artifactId>
    <version>22.1.0</version> <!-- or any later version -->
</dependency>
<dependency>
    <groupId>org.graalvm.truffle</groupId>
    <artifactId>truffle-dsl-processor</artifactId>
    <version>22.1.0<</version>
    <scope>provided</scope>
</dependency>

言語の実装

Truffleフレームワークを使用すると、GraalVMでプログラミング言語を効率的に実行できます。これにより、インタプリタから高パフォーマンス・コードが自動的に導出されるため、言語実装が簡略化されます。

スタート・ガイド

言語の構築を開始する方法については、言語実装のチュートリアルを参照してください。API参照ドキュメントは、Truffle Javadocの一部として入手できます。まず、言語の開発を開始するためにサブクラス化する必要があるTruffleLanguageクラスを確認します。Truffleには、GraalVMの一部としてGraalコンパイラおよび複数の言語実装が事前に組み込まれています。

Truffleで言語の実装を開始する際は、SimpleLanguageプロジェクトをフォークしてハッキングを開始することをお薦めします。SimpleLanguageは比較的小規模な言語実装で、ドキュメントが充実し、ほとんどのTruffle機能を示すように設計されています。また、既存のオープン・ソース言語の実装および実験のいずれかでコードを確認することもできます。

Truffleの多くの側面の仕組みの詳細は、これらの資料を参照してください。ただし、他のソフトウェア・プロジェクトと同様に、ソース・コードがその根本になります。

高度なトピック

Truffleを使用して言語を実装すると、他のTruffle言語と相互運用できます。言語が有効なポリグロットであることを確認する方法を学習するには、ポリグロットTCKの使用方法を参照してください。探索する価値がある関連トピックは、Truffleライブラリおよびそれらを使用して言語の相互運用性を実装する方法です。Truffleで実装された言語は、ポリグロットAPIを使用してJavaホスト・アプリケーションに埋め込むこともできます。

言語のパフォーマンスを向上させる方法をより理解するには、言語のプロファイリングおよび最適化に関するドキュメントを参照してください。また、Truffleの自動単相化機能(分割)の使用方法をより理解するには、関連ドキュメントを参照してください。

ツールの実装

GraalVMには、デバッガ、プロファイラ、その他のインストゥルメンテーションなど、言語に依存しないツールを作成するためのフレームワークが用意されています。通常、GraalVMには、プログラム・コードを表現して実行するための標準化された方法が用意されており、これにより、言語間検索や、1回開発してから任意の言語に適用できるツールの開発が可能になります。

API参照ドキュメントは、Truffle Javadocの一部として入手できます。まず、ツールの開発を開始するためにサブクラス化する必要がある、TruffleLanguageに類似したTruffleInstrumentクラスを確認します。

独自のTruffleツールを実装する場合は、前述のSimpleLanguageプロジェクトのように、SimpleToolプロジェクトをフォークしてハッキングを開始することをお薦めします。SimpleToolはドキュメントが充実した最小化されたコード・カレッジ・ツールで、Truffleを使用したツール開発プロセスを理解するための開始点となるように設計されました。

Truffleで開発されたツールは、同じASTノードベースのアプローチを使用して言語をインストゥルメントするため、パフォーマンスの向上に関して言語開発者が使用できるほとんどの手法はツール開発者も使用できます。このため、ツールを最大限に活用するために、言語開発者の視点からTruffleの仕組みを理解することをお薦めします。

互換性

Truffle APIは、あるバージョンから次のバージョンへと下位互換性のある方法で進化しています。APIが非推奨になると、削除されるまで最低1か月間は少なくとも2つのGraalVMリリースで非推奨のままになります。

ベスト・プラクティスとして、一度にTruffleの1つのバージョンのみをアップグレードすることをお薦めします。これにより、次のバージョンに進む前に、バージョンを増分し、非推奨の警告を修正できます。非推奨APIに対する非推奨Javadocのタグは、アップグレード方法に関するガイドとなるように設計されています。

最新の追加および変更は、変更ログで確認できます。

Truffleの変更

Truffleの変更方法を理解するには、このファイルを参照してください。Truffleに投稿する場合は、投稿ドキュメントを参照してください。