昨年12月、Ruby JITチームのメンバーは、YJITコードベースをC99からRustに移植することを提案しました。多くの開発者はこれについて留保していますが、プロジェクトは最終的にRubyコア開発者であり創設者のMatzによって承認されました。
昨日、プロジェクトを担当する開発者は、Rustに実装されたRuby YJITコンパイラを完了したと述べました。これは、既存のCバージョンを効果的に置き換え、現在、アップストリームマージを待っています。
報告によると、YJITコンパイラのRustバージョンはCバージョンと同じレベルです。これは、すべてのCRubyテストに合格し、すべてのYJITベンチマークを実行でき、基本的にCバージョンと同じように実行されるためです(同じ方法で、基本的に同じマシンコードを生成します)。さらに、開発チームは、Ruby on Railsアプリケーションで大きな役割を果たすことが期待される、よりきめ細かい定数無効化メカニズムなど、いくつかの設計改善を取り入れました。
デフォルトでは、YJITはコンパイルされておらず、cargo/rustcを必要としません。YJITが開発モードでビルドされている場合は、cargo
開発の依存関係を取得するために使用されますが、リリースでビルドする場合は必須でcargo
はなく、必要なだけですrustc
。現在、YJITにはRust1.60.0以降が必要です。
計画どおり、Rust YJITはコンパイルされ、Ruby3.2リリースのシステムパッケージとコンパイル済みバイナリに含まれます。開発チームによると、RustはYJITがサポートするすべてのプラットフォームで十分にサポートされているため、大きな問題は予想されていません。