Tilde
LLVMの置き換えを目指す新たなコンパイラバックエンド
CuikというC11のコンパイラ実装の一部
Cuik(「クイック」と発音する)は、GCC、MSVC、LLVMを置き換えるために作られた新しい高速コンパイラー・ツールチェーン。
C11フロントエンドは1つのライブラリ(libCuik)。バックエンド(tb)は別々にコンパイルできる
チルダ(Tilde)・バックエンドを意味する TB という省略名が使われている
LLVMのAPI互換性のある代替品ではなく、初期のLLVMと同じようなビジョンを信じているただのバックエンド
その理由はとても単純で、コンパイルが遅すぎるし、内部から修正するには大きすぎるからだ。 もう20年も経つし、ゴミも溜まってきた。
主な特徴
Sea of nodes IR(LLVMやGCCのSSA CFGとは対照的)
シンプルな型システム
高速コンパイル
スレッドセーフなモジュール(同時に2つの関数を生成してコンパイルできる)
Codeviewデバッグ情報(ウィンドウズ・デバッガで問題なく扱える)
JITとAOTの両方が可能(リンクされた実行可能ファイルを直接出力し、従来のリンカーを回避する初期の研究もある)
進行中の作業
Odin-langとの統合を gingerBill氏と行っているらしい
https://github.com/FastVM/minivm
これと並行して、オプティマイザーも進行中で、期待される最適化の大部分とともに順調に進んでいる。SSA構築、SCCP、折りたたみ、GVN、DCE、コード・モーション、そして、最終的には最適化されたビルドのためのグラフ・カラーリングに置き換えられる予定の、まともな線形スキャン・アロケーターがある。
リポジトリ
https://yasserarg.com/tb
https://github.com/RealNeGate/Cuik/tree/master/tb
関連:
QBE
#言語実装
#コンパイラ
#C言語