Turbo Haskell(THC)は、GHCがパース、型チェック、デシュガリング、Core最適化を終えた後に引き継ぐコンパイラです。TruffleとGraalVM上の独自ランタイムを介してGHC Coreをコンパイルおよび実行します。GHC 9.14.1のすべてのprim-opを実装し、Native Imageを介してJITおよびAOTコンパイルを提供することで、Haskellプログラムをスタンドアロン実行可能ファイルに変換できます。この設計は、GHCの洗練されたフロントエンドを再利用しつつ、バックエンドとしてJVMをターゲットにします。

THCは、Python、Ruby、R、JavaScript向けのポリグロットな外部関数インターフェイス(FFI)を提供し、UTF-8エンコードデータに対してHaskellのData.TextとTruffle文字列間のゼロコピー変換を可能にします。これにより、Haskellプログラムはこれらの言語のライブラリを呼び出し、その結果を直接JITコンパイル済みのコードに取り込むことができます。数値ワークロードに対して、THCはGHCの限られたSIMD prim-opを活用し、 incubating JDK Vector API(jdk.incubator.vector)を通じて実行時にSIMDの「species」幅を選択し、ベクトル命令を使用するループをJITコンパイルすることで、適切なハードウェアにおいてJITがパフォーマンス向上を獲得する道筋を提供します。

THCは、テールコール最適化のために従来のトランポリンを回避します。ホットなテールコールはサイドエグジットを持つタイトな基本ブロックスタイルのループに変換され、トレースモード中に64ビットBloomフィルターがおそらく再帰的なテールコールを検出します。該当する可能性が見つかったとき、スローパス例外がカスタムTruffleノードをトリガーし、Graalに対して関数本体全体にわたるテールコールループを単一のタイトなループに再構成するよう指示します。誤検出は結果を変更せずに単にスローパス作業を追加するだけです。ランタイムはまた、従来のJavaスレッドおよびProject Loomの両方をサポートし、HECスタイルのエグゼキューターによる軽量なGHCスタイルのグリーンスレッドを提供し、MVar類似のプリミティブを低コストで利用可能にします。初期のベンチマークでは、THCでのData.Mapの実行時間はウォームアップ後、3倍速いから3倍遅いまでの範囲で変動し、おおむねGHCより10〜20%遅い程度でした。ただし、最近の開発ではパフォーマンスの退化が見られており、現在対応中です。