Rubyインストール時にRust環境が必要
Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしまうので注意しましょう。
これはrbenvでRubyをインストールする場合も例外ではありません。Macの場合は次のような手順で事前にRust環境をインストールしておきます。
$ brew install rustup-init
$ rustup-init
$ exec $SHELL -l
$ rbenv install 3.3.0
rubyを--yjit
オプション付きで実行するとYJITが有効になります。バージョン情報を確認すると「+YJIT」と表示されて、YJITが有効になっていることが確認できます。
% ruby -v --yjit
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) +YJIT [arm64-darwin23]
RailsでYJITを有効化する方法
--yjit
オプション以外の方法として、プログラム実行時にRubyVM::YJIT.enable
とすることで実行中動的にYJITが有効化されます。
Railsの場合、config/initializersに置くと良いです。
config/initializers/enable_yjit.rb
if defined? RubyVM::YJIT.enable
Rails.application.config.after_initialize do
RubyVM::YJIT.enable
end
end
これはRails 7.2でデフォルトの挙動になる予定です。
https://github.com/rails/rails/pull/49947