
Rustコンパイラがない → YJITが有効
YJITはRustで実装されていますから、これはあり得ません。 Rustコンパイラがあるかどうかの判定はRubyビルド時に行なわれることであって、 Ruby実行時にRustコンパイラがあるかどうかは関係ないことを勘違いしておられるのではないかと思います。
Rustコンパイラがインストールされている可能性がある状況で、 を満たすには明示的に --disable-rjit を指定する必要があったためです。
そもそもRubyビルド時にはYJIT"サポート"やRJIT"サポート"が有効になるだけで、Rubyの起動時に自動でYJITかRJITが有効になるわけではありません。 何も指定しない場合に "意図せずに、RJITが有効になる" ことはないです。明示的にYJITを起動したいのであれば、--jitではなく--yjitを使ってください。 On Sat, Feb 17, 2024 at 8:04 AM Takahiro Kambe <taca@back-street.net> wrote:
こんばんは。
In message <CAOM42UcNiOm2KF2T= PnWd9FLhsJfCqU5ErBbD8sYaYtuytVAPA@mail.gmail.com> on Thu, 1 Feb 2024 20:02:01 -0800, Takashi Kokubun <takashikkbn@gmail.com> wrote:
Rustコンパイラがある状態でconfigureした場合YJITサポートはデフォルトで有効となり、--jitはRJITではなくYJITを優先して起動するようになっています。
YJITは後から追加された、Rustで記述されているコンポーネントのため、Rustコンパイラがない状態でRubyがビルドでき、またその場合YJITサポートが有効にできないのは意図的です。 特に指定しないと、
Rustコンパイラがある → RJITが有効 Rustコンパイラがない → YJITが有効
ではないでしょうか。パッケージ作成や自前でビルドする際に、たまたまRust がある環境で意図せずに、RJITを有効になったことから質問した次第です。
Rustコンパイラがインストールされている可能性がある状況で、
* 本番環境ではYJITを引き続き使用してください。
を満たすには明示的に --disable-rjit を指定する必要があったためです。
-- 神戸 隆博 / Takahiro Kambe