ruby-trunk-changes 2023-01-05

今日は bundler の bundle open サブコマンドのオプション追加、拡張ライブラリ objspace の ObjectSpace.trace_object_allocations_start の不具合修正、TracePoint の不具合修正などがありました。

[87c17a141d] yoka 2022-12-22 06:39:00 UTC

bundler の bundle open サブコマンドに --path というオプションを追加して gem の対応ディレクトリを開く時にベースとなる bundle install のインストール先のディレクトリを指定できるようにしています。

[799d805e21] yoka 2022-12-31 08:58:34 UTC

87c17a141dc4491abf5282d164f2cba13ade18c4 の続きで bundler の bundle open のオプション --path に値が指定されなかった時に例外を発生させるようにしています。

[3bcf92d8af] Peter Zhu 2023-01-03 15:50:40 UTC

gc.c の COULD_MALLOC_REGION_START() と COULD_MALLOC_REGION_END() というマクロで during_gc 変数を一時的に false にするのをやめています。かわりに malloc_during_gc_p() で objspace->flags.dont_gc の値をチェックに追加しています。GC.disable している時は GC 中でも malloc() を呼んで良いとしているみたいです。これってなんでこういうことしてるんだっけ、と思いましたが COULD_MALLOC_REGION_START() は gc_move() で使われているので compaction 対応の時に必要だったからですね。

[b8a3f1bd45] Peter Zhu 2023-01-03 15:59:47 UTC

拡張ライブラリ objspace のオブジェクトの確保と解放をトレースする ObjectSpace.trace_object_allocations_start で TracePoint に登録するコールバックで一時的に GC.disable 相当の関数(rb_gc_disable_no_rest())を呼んで GC を無効化するようにしています。 st_table の操作時に再帰的に GC が発生すると異常終了してしまう可能性があったため。

[f7243d1afb] Burdette Lamar 2023-01-04 19:58:59 UTC

標準添付ライブラリ uri の rdoc 用コメントの手直し。

[837ef8911c] Peter Zhu 2023-01-04 18:15:59 UTC

TracePoint の c_call イベントへのフック内で alias 経由のメソッド呼び出しによるフックで TracePoint#parameters を呼んだ時に異常終了する可能性があった不具合の修正。alias 先のメソッドが remove_method で削除されていた時に起きるとのこと。 [ruby-core:111610] [Bug #19305]

[1f2fef1f9a] Hiroshi SHIBATA 2023-01-04 12:02:10 UTC

tool/lib/core_assertions.rb の Test::Unit::CoreAssertions#separated_runner で Test::Unit::AutoRunner.need_auto_run= に false をセットするようにしています。拡張ライブラリ openssl の upstream での変更の取り込みみたいです。

[b496578758] Hiroshi SHIBATA 2023-01-04 23:16:24 UTC

1f2fef1f9ac03fb01a3150f953e2194e58e437ea の続きで Test::Unit::CoreAssertions#separate_runner の auto run を抑制するのに Test::Unit::Runner 利用時の対応を追加しています。 ruby 本体でのテスト時の対応と思われます。

[ee6e4d63df] Nobuyoshi Nakada 2023-01-05 06:13:10 UTC

defs/gmake.mk で revision.h から RUBY_FULL_REVISION マクロ定義の値を切り出すための sed コマンドのスクリプトを変更しています。 revision.h がビルドディレクトリにもソースディレクトリにも存在していた時に内容が重複して取れるのを防ぐようにするためみたいです。

[4959e01932] Yusuke Endoh 2023-01-04 20:11:50 UTC

common.mk の prepare-gems の依存関係から outdate-bundled-gems を削除して、古い bundled gems の展開したディレクトリ群の削除を抑制するようにしています。 rbs.gem と debug.gem の拡張ライブラリを意図せず消してしまって make install 時に必要な拡張ライブラリが入らなくなってしまうという現象が起きていたようです。 [ruby-core:111456] [Bug #19271]