バグ #1606
完了YJITが有効になっていないRubyでmikutterが起動しない
説明
YJITが有効になっていないRubyでは、以下の行でエラーとなってmikutterが起動できなくなります。
Rust環境がないPCで、rbenv等を使用してビルドされたRuby環境がおもに該当します。
--- a/mikutter.rb
+++ b/mikutter.rb
@@ -61,7 +61,7 @@ Plugin.call(:boot, nil)
# _profile_ がtrueなら、プロファイリングした結果を一時ディレクトリに保存する
def boot!(profile)
begin
- RubyVM::YJIT.enable if RUBY_VERSION.split('.') >= %w[3 3]
+ #RubyVM::YJIT.enable if RUBY_VERSION.split('.') >= %w[3 3]
if profile
require 'ruby-prof'
begin
以下はしばふの解析です。
https://ertona.net/@shibafu528/114242983598722984
https://ertona.net/@shibafu528/114242985389869403
https://ertona.net/@shibafu528/114242988422991960
ファイル
Izumi Tsutsui さんが約1ヶ月前に更新
- ファイル 0001-Ruby-YJIT-YJIT.enable-refs-1606.patch 0001-Ruby-YJIT-YJIT.enable-refs-1606.patch を追加
- ステータス を 分類待ち から パッチ適用待ち に変更
https://x.com/ebijun/status/2036635798108504254
NetBSD/earmv7hf mikutter rubyのYJIT 定義があったらenableするようにすると起動する。
pkgsrc-2026Q1 でやっと Ruby 3.3 がデフォルトになって NetBSD/i386 でも同じ現象で自分でも試しましたが
添付のパッチ 0001-Ruby-YJIT-YJIT.enable-refs-1606.patch で起動はしました。
ebijun さんの diff に対してなんとなく Ruby バージョンのチェックを先にしています。
toshi_a 初音 さんが約1ヶ月前に更新
- ステータス を パッチ適用待ち から レビュー待ち に変更
- 担当者 を Izumi Tsutsui にセット
- ブランチ を topic/1606-yjit にセット
修正しました。
ただし、YJIT定数が前のRubyバージョンでは定義されてるはずがないこと、mikutter 5.2でRuby3.3未満のサポートを切ることからバージョン判定は取り除いています
Izumi Tsutsui さんが約1ヶ月前に更新
- 再現手順 を更新 (差分)
記入する場所を間違えるておくれになった……
超アバウトに NetBSD/i386 11.0_RC3 + pkgsrc-2026Q1 (なので bundler は無し)で
mikutter develop + topic/1290-pango-emoji-height + topic/1606-yjit + topic/1609-ruby4 + addressable 2.9.0 + ruby-gnome 4.3.6
という全部入りで起動テストしてOKです