ruby-trunk-changes 2022-10-15

今日は non -blocking Fiber 用の Scheduler のインターフェースに io_select メソッドを追加する変更や標準添付ライブラリ pp の Data クラス対応などの変更がありました。

[7b7e5153e8] manga_osyo 2022-10-10 03:30:35 UTC

標準添付ライブラリ pp で ruby 3.2 以降では Data クラスに対応して Data#pretty_print メソッドを追加するようにしています。チケットでも指摘がありますが RUBY_VERSION >= "3.2" によるチェックなので 3.10 以降になると誤判定しますが、minor が 10になるのは 8年後……その前に 3.2 が EOL を迎えますね(または 4.x の時代が来る?)。 [ruby-core:110241] [Feature #19045]

[d416205341] Samuel Williams 2022-10-14 12:45:51 UTC

IO#dup 時に IO#timeout= で設定したタイムアウト値もコピーするようにしています。 https://github.com/ruby/ruby/pull/6546

[6061003100] Jonathan Hefner 2022-10-11 17:02:15 UTC

標準添付ライブラリ delegate でメソッド再定義の警告を抑制するため Module#alias_method で可視性変更前に同名メソッドへの alias を作るようにしています。継承しているメソッドへの alias を作るということかなぁ。なんだか hacky ですね。 https://github.com/ruby/delegate/pull/13 [ruby-core:110250] [Bug #19047]

[ee6cc25026] Nobuyoshi Nakada 2022-10-14 16:03:47 UTC

configure の macOS でのリンカオプションを確認するための処理で余計な $ がついていたところを修正しています。

[7e24ebc649] Takashi Kokubun 2022-10-14 16:16:21 UTC

GitHub Actions の MinGW 環境向け workflow から MINGW64 でのビルドを削っています。 https://github.com/ruby/ruby/pull/6545

[7e81dd9407] "Eileen M. Uchitelle" 2022-10-14 16:43:18 UTC

doc/yjit/yjit.md の YJIT についてのドキュメントを更新しています。 https://github.com/ruby/ruby/pull/6548

[fb99227ca1] Jimmy Miller 2022-10-14 17:04:53 UTC

YIJT の Rust 実装の部分で linter の slippy による指摘の対応。 https://github.com/ruby/ruby/pull/6547

[9a5684bf7f] Jemma Issroff 2022-10-04 19:27:13 UTC

bootstraptest に複数 Ractor 利用時のインスタンス変数の race condition についてのテストを追加しています。おそらく 913979bede2a1b79109fa2072352882560d55fe0 の Object Shapes の修正に対応するテストじゃないかと思います。

[cbd3d65574] Aaron Patterson 2022-10-14 18:59:31 UTC

Object Shapes に対応してインスタンス変数の定義順に関するテストを追加しています。

[53e0e5e8df] Takashi Kokubun 2022-10-14 19:45:00 UTC

YJIT の Rust 実装の修正。詳細わかりませんが JIT コンパイルできなかった時の ISeq に関連して余計なリソースを作ってたのを抑制しているみたいです。 https://github.com/ruby/ruby/pull/6549

[1acc1a5c6d] Aaron Patterson 2022-10-14 23:11:37 UTC

rb_obj_ensure_iv_index_mapping() という関数が internal/variable.h で宣言されていて YJIT 向けの binding も用意されていたけど不要だったようなので削除して static 関数に変更しています。

[8a420670a2] Samuel Williams 2022-10-15 06:59:04 UTC

non-blocking Fiber のための Scheduler のインターフェースとして io_select というメソッドを追加して IO.select の実行時に Thread に Scheduler 設定されていたら io_select メソッドに委譲するようにしています。 https://github.com/ruby/ruby/pull/6559 [ruby-core:110305] [Feature #19060]

[52fcb3a724] Samuel Williams 2022-10-15 07:04:58 UTC

IO#timeout= のテストで close 漏れしていたのを修正しています。 https://github.com/ruby/ruby/pull/6560

[7fcad1fa03] Samuel Williams 2022-10-15 08:43:45 UTC

non-blocking Fiber のための Scheduler のインターフェースについて rdoc 用コメントを書くためのダミーのクラス(Fiber::Scheduler)定義を include/ruby/fiber/scheduler.h に書いてたのを削除して scheduler.c の対応する関数に rdoc の Document-method: タグを利用して明示的にクラス名メソッド名を指定してドキュメントを書くように変更しています。なんかついでに cont.c の rb_fiber_s_schedule_kw() もちょっと変更されているけど scheduler.c に新規追加した関数に委譲するようになっていて内容はほぼ同じなのでついでのリファクタリングみたいですね。