Truffle 語言實作框架

Truffle 語言實作框架 (Truffle) 是一個開放原始碼函式庫,用於將工具和程式設計語言實作建置為自我修改抽象語法樹的直譯器。結合開放原始碼的 Graal 編譯器,Truffle 代表了動態語言當前時代程式設計語言實作技術的重大進展。

Truffle 成品會上傳至 Maven 中央存放庫。您可以從您的 pom.xml 檔案中使用它們,如下所示

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

實作您的語言 #

Truffle 框架可讓您在 GraalVM 上有效率地執行程式設計語言。它透過自動從直譯器衍生高效能程式碼來簡化語言實作。

開始使用 #

我們提供廣泛的 Truffle API 文件。從查看 TruffleLanguage 類別開始,您應該對其進行子類別化以開始開發語言。Truffle 隨附 Graal 編譯器和數個語言實作作為 GraalVM 的一部分。

開始使用 Truffle 實作您的語言的好方法是分支 SimpleLanguage 專案並開始進行破解。SimpleLanguage 是一個相對較小的語言實作,具有完善的文件記錄,旨在示範大部分 Truffle 功能。您也可以嘗試查看現有開放原始碼語言 實作和實驗中的程式碼。

進階主題 #

使用 Truffle 實作語言提供一種與其他「Truffle」語言互通的方法。若要評估您的語言是否為有效的多語公民,請閱讀有關使用 基於 Polyglot API 的測試相容性套件的資訊。值得探索的相關主題是 Truffle 函式庫,以及如何使用它們來實作 語言互通性。使用 Truffle 實作的語言也可以使用 Polyglot API 嵌入到 Java 主機應用程式中。

若要更好地瞭解如何改善語言的效能,請參閱有關 剖析 Truffle 直譯器最佳化 Truffle 直譯器的文件。此外,若要更好地瞭解如何使用 Truffle 的自動單態化功能 (例如,分割),請查看相關文件

實作您的工具 #

使用 Truffle 框架,您可以開發與語言無關的工具,例如偵錯工具、剖析器和其他檢測工具。從查看 TruffleInstrument 類別開始,與 TruffleLanguage 類似,應該對其進行子類別化以開始開發工具。

如果您想要實作自己的「Truffle」工具,開始的好方法是分支 SimpleTool 專案 – 就像上述的 SimpleLanguage 專案一樣 – 並開始進行破解。SimpleTool 是一個具有完善文件記錄、簡約的程式碼涵蓋率工具,旨在作為瞭解使用 Truffle 進行工具開發流程的起點。

由於使用 Truffle 開發的工具使用相同的基於 AST 節點的方法來檢測語言,因此在改善效能方面,語言開發人員可以使用的大部分技術,工具開發人員也可以使用。這就是為什麼建議您從語言開發人員的角度瞭解 Truffle 的運作方式,以充分利用您的工具。

相容性 #

Truffle API 以回溯相容的方式從一個版本演進到下一個版本。當 API 被棄用時,它將在移除之前至少保持棄用狀態 兩個 GraalVM 版本

最佳實務建議一次只升級一個 Truffle 版本。這樣,您可以遞增版本並修正棄用警告,然後再繼續下一個版本。棄用 API 上的棄用 Javadoc 標籤旨在作為如何升級的指南。

最新的新增功能和變更可以在 變更記錄中查看。

修改 Truffle #

若要瞭解如何修改 Truffle,請查看 這個檔案。如果您想要為 Truffle 做出貢獻,請參閱 貢獻文件

與我們聯繫