ruby-trunk-changes 2022-10-20

今日は Kernel#Integer に to_str で String に変換できるオブジェクトを渡した時の挙動の変更や YJIT のコマンドラインオプションの変更、rubygems や bundler のテストの修正などがありました。

[dae843f6b7] Hiroshi SHIBATA 2022-10-19 10:40:00 UTC

rubygems のテストで git の不具合修正の影響で git submodule が失敗することがあるので git config で protocol.file.allow=always という設定をしておくように対応しています。

[a25c033805] Hiroshi SHIBATA 2022-10-19 05:57:07 UTC

template/Makefile.in で fgrep コマンドを利用しているところで fgrep が警告を出力するようになっているそうなので grep -F におきかえています。

[86096a91d5] Hiroshi SHIBATA 2022-10-19 11:39:07 UTC

dae843f6b7502f921a7e66f39e3714a39d860181rubygems のテストでの git config コマンド実行のための %W リテラルでデリミタを [] に変更しています。"" だと文字列リテラルとまぎらわしいからかな。

[412e3c7a8d] Nobuyoshi Nakada 2022-10-19 09:45:26 UTC

STATIC_ASSERT() で Qfalse(=0) と Qnil の違いが 1 bit だけであることを確認するようにしています。 RTEST() マクロの実装がこれを前提にしているのでその保証のためみたいです。

[eeea633eb2] Aaron Patterson 2022-09-27 18:51:34 UTC

インスタンス変数の管理に Object Shapes を導入した結果不要になったとのことでインスタンス変数管理のテーブルに Qundef や 0 を埋めておく処理を削っています。

[c32180d5ce] Burdette Lamar 2022-10-19 15:33:02 UTC

拡張ライブラリ stringio の rdoc 用コメントの手直し。

[bc939d2937] Burdette Lamar 2022-10-19 15:34:51 UTC

doc/io_streams.rdoc のドキュメントの修正と File の rdoc 用コメントのマークアップ修正など。

[5ca23caa20] Alan Wu 2022-10-19 18:03:07 UTC

YJIT のための --features オプションの asm_comments というのは disasm 利用時には常にコメントも有効にすることにして削除しています。 https://github.com/ruby/ruby/pull/6591

[0aaa6133ed] Jemma Issroff 2022-10-19 13:30:41 UTC

インスタンス変数管理の Object Shapes で Object や Class/Moule 以外のクラスのインスタンスの freeze 時の処理に問題があったのを修正しているみたいです。

[9da0d4ca9d] Alan Wu 2022-10-19 18:43:36 UTC

YJIT の Rust 実装での警告抑制のため明示的なかっこを追加しています。

[0d360ee7ff] Takashi Kokubun 2022-10-19 19:36:24 UTC

YJIT 用のコマンドラインオプションの --yjit-dump-disasm の出力をみやすくするために不要な出力の抑制をしているみたいです。 https://github.com/ruby/ruby/pull/6592

[d9d9005a3a] Takashi Kokubun 2022-10-20 00:18:59 UTC

MJIT や YJIT の統計情報のカウンタのための実装で RB_VM_LOCK_ENTER()/RB_VM_LOCK_LEAVE() を利用して複数 Ractor 間の排他処理をしていたのを専用の rb_nativethread_lock_t 変数を static 変数として持ってこれで排他するようにしています。プロセス終了時に既に VM のリソース開放後に呼ばれて異常終了する可能性があったみたいです。

[7f175e5648] Samuel Williams 2022-10-20 00:38:52 UTC

Thread#join の実装が Fiber.blocking による一時的な blocking fiber 化を考慮していなくてデッドロックに陥いることがあった不具合を修正しています。 https://github.com/ruby/ruby/pull/6588

[2e3b764ad1] Takashi Kokubun 2022-10-20 00:45:25 UTC

ruby.c の不要になってたコメントを削除しています。

[b963fb25d2] Takashi Kokubun 2022-10-20 00:47:11 UTC

YJIT 用のコマンドラインオプション --yjit-dump-iseq-disasm でも表示をきれいにするための変更をしているようです。 0d360ee7ff962ef66667a75a912c3980c4f5b217 と同様の変更とのこと。 https://github.com/ruby/ruby/pull/6596

[0a43a040b4] Nobuyoshi Nakada 2022-10-20 02:49:55 UTC

include/ruby/internal/special_consts.h の定数 RUBY_SYMBOL_FLAG のビット列を説明するコメントで任意のビットのところに 0 が書かれてしまってたのを修正。

[4f1e0bfacd] Hiroshi SHIBATA 2022-10-20 05:36:06 UTC

86096a91d55f72620e0f8ca8634da5fa342dc35brubygems のテストと同様に bundler のテストでも git submodule のエラーが起きていたので git config で設定をしておくことで回避するようにしています。

[7563604fb8] Nobuyoshi Nakada 2022-10-20 05:07:35 UTC

Kernel#Integer() で to_int での変換ができなかった時に to_i を呼んでみる前に to_str で文字列オブジェクトに変換できたらその文字列からの変換を試すようにしています。String になりすましているオブジェクトを渡した時などに String と同じように扱かってもらえないので、文字列っぽいオブジェクト(to_str が定義されているオブジェクト)ならそっちを経由するべき、ということみたいですね。 [ruby-core:109848] [Bug #18998]

[e35c528d72] Koichi Sasada 2022-10-17 08:50:42 UTC

Kernel#require や Kernel#load のようにスクリプトを読み込むメソッドや RubyVM::InstructionSequence の compile_file によるスクリプトコンパイルやバイナリフォーマットからの読み込み時にダミーの control frame を VM スタックに積んでおくようにしています。チケットをみると ObjectSpace によるオブジェクト確保のプロファイリングの時に parser のための処理などが区別がつかないのでその対策のためとのこと。 [ruby-core:107389] [Feature #18559]