現在のYJITはx86アーキテクチャのCPUだけをサポートしています。 arm64やRISC-Vをサポートしようと考えています。 Rubyのinstructions と機械語の間にYJIT IRという中間層を設けて、CPUアーキテクチャの差異を吸収する作戦だそうです。
つまり、次のものを作りまくるって話ですよね?
- YJIT IRの設計
- Ruby instructionsからYJIT IRをはくコンパイラ
- YJIT IRからx86用のコードをはくコンパイラ
- YJIT IRからarm64用のコードをはくコンパイラ
- YJIT IRからRISC-V用のコードをはくコンパイラ
そしてつくっている間にRuby自体に機能追加されていく・・・。 やろうとしていることが、壮大すぎてすごいです。 Kevin Newtonのパーサー書き直しといい、Shopifyの人達のアウトプット力ヤバいですね。 会社の仕事としてやっているから分担して進められるとか、そういうことなんですか?
IRという言葉は A Faster CRuby interpreter with dynamically specialized IR - @ledsun blog でも出てきました。 JITを考えるときには一般的な用語なのかもしれません。