ruby-trunk-changes 2021-11-09

今日は 3.1.0-preview1 のリリースがあり、そのための準備として NEWS の整理や Class.descendants の不具合修正、rb_gc_force_recycle() を deprecated にしてなにもしない関数にする変更などがありました。

[bd2674ad33] Hiroshi SHIBATA 2021-11-08 11:46:08 UTC

bundler の依存関係可視化のために bundler-viz というプロジェクトを使うように警告メッセージを出してたのを bundler-graph に変更しています。

[efe7e6e949] Yusuke Endoh 2021-10-28 06:49:55 UTC

gems/bundled_gems の rbs のバージョンを 1.7.0.beta.5 に変更しています。また tool/test-bundled-gems.rb に拡張ライブラリビルドのため? tool/dummy-rake-compiler/rake/extensiontask.rb というファイルを追加して rbs のビルド時にこの tool/dummy-rake-compiler を RUBYLIB のライブラリパスに追加するようにしています。

[837493389f] git 2021-11-08 18:33:04 UTC

version.h の日付更新

[aa5bccfc65] Yusuke Endoh 2021-11-08 18:38:42 UTC

fork 時のフックを挿入するために分離された Process._fork メソッドについて NEWS に追記しています。 [ruby-core:103400] [Feature #17795]

[aeae6e2842] Peter Zhu 2021-11-05 13:51:53 UTC

オブジェクトを強制的にする解放する rb_gc_force_recycle() の呼び出しを削除しています。GC 関連の変更をする時にこれがあるために難しいことがあるのでということみたいです。一カ所 free() も消してるところがあるけどこれはいいのかな。 https://github.com/ruby/ruby/pull/4363 [ruby-core:105945] [Feature #18290]

[309406484b] Peter Zhu 2021-11-05 13:52:07 UTC

rb_gc_force_recycle() を deprecated として、内容もなにもしない関数に変更しています。またこれにより不要になった invalidate_mark_stack() と invalidate_mark_stack_chunk() という関数を削除しています。 https://github.com/ruby/ruby/pull/4363 [ruby-core:105945] [Feature #18290]

[39d3d24abb] Peter Zhu 2021-11-08 20:15:38 UTC

GC 関連のテストで rb_gc_force_recycle() に依存しているものを削除しています。 https://github.com/ruby/ruby/pull/4363 [ruby-core:105945] [Feature #18290]

[d7432fdee5] Nicholas Lee 2021-11-08 23:52:49 UTC

bundler の生成した gem の rake タスクから呼ばれる git コマンド実行のメソッドでコマンドを %W 記法で配列として作っていたのを、文字列を標準添付ライブラリ shellwords の String#shellsplit で作るように変更しています。

[1d609707b4] Kazuhiro NISHIYAMA 2021-11-09 02:30:03 UTC

NEWS にチケット参照リンク用の footnote を追記しています。

[1290bdf1ae] Yusuke Endoh 2021-11-09 05:39:39 UTC

大量の Thread と Fiber を作るテストの Solaris でのタイムアウトを伸ばしています。

[6cf7c0a48f] Yusuke Endoh 2021-11-09 05:48:10 UTC

拡張ライブラリ readline の SIGINT 関連のテストで 32bit 環境の Linux では Readline のほうに不具合があって SEGV が発生するそうなのでテストをスキップするようにしています。

[3ff0a0b40c] Nobuyoshi Nakada 2021-11-09 06:16:23 UTC

テスト用ツールで -n オプションに正規表現でクラス名なしのメソッド名のみ指定された場合にうまくマッチできるように修正しています。 5086c25f6015558877f85c3f1c014780b08fd3ce の対応があまり良くなかったので再修正のようです。

[428227472f] Yusuke Endoh 2021-11-02 10:23:36 UTC

717ab0bb2ee63dfe76076e0c9f91fbac3a0de4fd [ruby-core:85073] [Feature #14394] で追加した Class.descendants にクラスを探索してる途中でクラスが GC で回収されてしまって SEGV することがあるという不具合があったので、Class を配列に詰めていたのを GC を起動しないようにするためにやめて、一度探索して数をカウントしてから ALLOCA_N() で確保した C の配列を利用してそこに詰めるように変更しています。 [ruby-core:105897] [Bug #18282]

[037da50666] Yusuke Endoh 2021-11-02 18:59:17 UTC

428227472fc6563046d8138aab17f07bef6af753 で ALLOCA_N() を使ってたのを ALLOC_N() に変更して明示的に free() するようにしています。 [ruby-core:105897] [Bug #18282]

[64007fc57f] Yusuke Endoh 2021-11-05 00:36:44 UTC

428227472fc6563046d8138aab17f07bef6af753 で一度継承ツリーを探索してサブクラスを数えあげた後で増えた場合にそのぶんはあきらめてバッファオーバーフローを避けるようにしています。 [ruby-core:105897] [Bug #18282]

[3628616dd1] Yusuke Endoh 2021-11-05 12:31:31 UTC

64007fc57f360eab4b18b26389719a85f45b25c3 でサブクラス用に確保した配列の上限のチェックの条件が冗長だったので修正しています。 [ruby-core:105897] [Bug #18282]

[5680c38c75] Koichi Sasada 2021-11-08 18:37:17 UTC

finalizer から GC 中にできない処理を後で実行するために登録しておく postponed job という機構で rb_execution_context_t を得る時に Ractor 導入後に NULL になる可能性があったみたいで、その場合は rb_vm_main_ractor_ec() で main Ractor の ec を利用するように修正しています。

[5a3b2e6141] Nobuyoshi Nakada 2021-11-09 06:42:31 UTC

GitHub Actions の Ubuntu 環境用 workflow で 395738e8a5a14d432d17a9fe106f62f54a81c7aa で追加した一部のテストの skip のための指定でコマンドラインに渡す $ をエスケープするため $ を2重に書くようにしています。

[c1c13c58ee] Nikita Vasilevsky 2021-10-29 16:31:31 UTC

bootstraptest/test_insns.rb で VM 命令の swap のカバレッジのためのテストケースに !! を使ったスクリプトを追加しています。

[75aae66c4f] "S.H" 2021-11-09 08:09:29 UTC

真偽値を返すメソッドの実装で RBOOL() マクロを利用するようにしています。 https://github.com/ruby/ruby/pull/5023

[d5ae892519] Masataka Pocke Kuwabara 2021-09-13 16:06:22 UTC

TracePoint の rdoc 用コメントのイベントフックの種類に r43645 で追加されてた a_call と a_return について追記しています。

[cf50f9484a] Yusuke Endoh 2021-11-09 08:30:28 UTC

e83c02a768af61cd0890a75e90bcae1119d8bd93 で追加した Enumerable#to_a のキーワード引数委譲についてのテストで警告抑制のため each メソッドの再定義前に remove_method で削除するようにしています。

[54bda176c6] Yusuke Endoh 2021-11-09 08:31:17 UTC

同じくメソッド引数に無名の ** を持つメソッドの ISeq のバイナリフォーマットの dump/load のテストでも警告抑制のためメソッド名を重複しないように変更しています。