ruby-trunk-changes 2023-06-01

今日は主に昨日の構造体 rb_io_t を拡張ライブラリから隠す変更のとりやめがありました。

[1ac17693de] Peter Zhu 2023-05-31 13:22:52 UTC

Hash の Variable Width Allocation 対応に関連した GC のテストでデバッグのためにエラー時のメッセージに GC.stat の :read_barrier_faults の変化を含めるようにしています。

[55c9c658bd] Benoit Daloze 2023-05-31 16:11:18 UTC

GitHub Actions の古い ruby で rubyspec を実行する workflow で 2.7 を対象から外して、かわりに 3.0 を追加(というか 3.0 は追加忘れてた?)しています。

[e8212c55f9] Peter Zhu 2023-05-31 18:01:11 UTC

拡張ライブラリ objspace の fstring が WB-protected になってることを確認するためのテストで確実性のため full GC を4回回しておくようにしています。なんで 4回? と思ったら e87f6c899e55f4d9452ce4d75cf2a725ae736aff の変更で RGenGC の old に昇格するのに 3回 mark されないといけなくなったのでその変更への対応のためですね。

[e4163112f6] Peter Zhu 2023-05-31 20:16:32 UTC

1ac17693de4e80f7b1e11622dd77376e409cd4eaGC のテストのエラー時のメッセージにさらにデバッグ用に GC.stat_heap の変化も含めるようにしています。

[85dcc4866d] "NARUSE, Yui" 2023-05-31 23:43:22 UTC

18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2 で構造体 rb_io_t を拡張ライブラリから隠すようにしたのを revert しています。拡張ライブラリ版の readline のビルドが失敗するようになったようです。 readline の拡張ライブラリ版は同梱から外されたので upstream で対応しないといけなかったためですね。 [ruby-core:113720] [Bug #19704]

[35da41b29b] Hiroshi SHIBATA 2023-06-01 00:35:49 UTC

拡張ライブラリ io/console で 1889133c04f337fec3969cb5040a544088249046 などで構造体 rb_io_t を直接アクセスせず C API rb_io_descriptor() を利用するようにしたのを revert しています。こっちは拡張ライブラリ側の対応なので残しておいても良さそうな気がしますがついでに若干リファクタリングされているのでそこで不具合があったのかな。 [ruby-core:113720] [Bug #19704]

[a218ed5692] Samuel Williams 2023-06-01 05:23:30 UTC

18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2 のやりなおしで構造体 rb_io_t を今隠すのまではやらず、利用箇所で直接構造体を触らずに C API を利用するようにする部分だけ再適用しているようです。 https://github.com/ruby/ruby/pull/7880

[d8f333491e] Hiroshi SHIBATA 2023-06-01 04:49:26 UTC

標準添付ライブラリ syntax_suggest の gemspec ファイルの spec.executables で spec.files の exe ディレクトリ配下のファイルを使うようにしていましたが結果空っぽになってしまってたようなので決め打ちで書くように変更しています。

[edee9b6a12] KJ Tsanaktsidis 2023-06-01 08:37:18 UTC

IO の close を呼んだ時にその IO を読み込み中の Thread があったらそれが読み終わるまで待つための機構で直接 rb_nativethread_lock_t や rb_nativethread_cond_t を使った排他処理をせず Thread::Mutex や Thread::ConditionalVariable のオブジェクトを VALUE 型の変数で参照して利用するようにしています。元の実装にはシグナルの喪失によってデッドロックに陥る可能性があったみたいです。 https://github.com/ruby/ruby/pull/7884

[64ec1813ac] Samuel Williams 2023-06-01 08:43:45 UTC

35da41b29bf0a1a8fd2cd7e1d7fcb036ca8c2c7c で revert された拡張ライブラリ io/console の構造体 rb_io_t のメンバーを直接参照しないようにする変更のリトライ。やっぱり非互換が含まれていたようなのでそれを削って rb_io_t の内容を使うのに C API を利用するようにする変更に絞っているようです。 https://github.com/ruby/ruby/pull/7882

[957b6a491f] Benoit Daloze 2023-06-01 09:41:41 UTC

rubyspec の C API テスト用の拡張ライブラリで C API の rb_io_descriptor() を利用するところで利用バージョンを絞る preprocessor 分岐のバージョン番号が間違ってたのを修正。

[d5a5333168] Samuel Williams 2023-06-01 11:41:06 UTC

拡張ライブラリ stringio で構造体 rb_io_enc_t の型を参照するのに struct rb_io_enc_t という本名(っていうのかな)のほうを使っていたところを修正しています。 https://github.com/ruby/stringio/pull/54