ruby-trunk-changes 2022-01-20

今日は Fiber 内で Process.daemon を呼び出した時の不具合修正、bundler の更新などがありました。

[5c7af72304] Nobuyoshi Nakada 2022-01-19 05:14:02 UTC

Fiber のテストでプロセスの正常終了時のステータスを 0 という前提で Kernel#exit! に 0 を渡してたところがあったので true を渡して、親プロセスでも Process::Status#success? でチェックするようにしています。

[d650b17686] Nobuyoshi Nakada 2022-01-19 07:01:45 UTC

Fiber 内で Process.daemon を呼ぶと SEGV することがある不具合を修正。 rb_fiber_terminate() 内で fiber_switch() から処理が帰ってきてしまった時に ruby_stop() を呼び出して処理を返さないようにしています。 Process.daemon は fork を含むので、複数の Thread や Fiber があった時に呼び出した Thread/Fiber のみが main Thread/Fiber として残りあとは消えるため、本来は処理が帰ってこないはずの fiber_switch() が空振りして処理が帰ってきてしまうことがあり、考慮されていない状態が発生していたようです。 [ruby-dev:51146] [Bug #18497]

[308fe1eb85] Koichi Sasada 2022-01-19 08:43:07 UTC

シグナルを使ったテストで core dump ファイルを作成しないようにするため Process.setrlimit(Process::RLIMIT_CORE, 0) で core ファイル抑制する設定をしておくようにしています。

[374904b25f] Koichi Sasada 2022-01-19 08:44:53 UTC

tool/lib/envutil.rb の EnvUtil.invoke_ruby で子プロセスに伝播させる環境変数に ASAN_OPTIONS に加えて RUBY_ON_BUG も伝播させるようにしています。

[5c4734d1ef] Peter Zhu 2022-01-19 14:00:33 UTC

dln.c の dln_load() から dln_open() と dln_sym() という関数を切り出すリファクタリング

[4e955b2e37] Yusuke Nakamura 2022-01-10 12:51:51 UTC

bundler の bundle gem で minitest によるテストを生成するテンプレートで gem 名がハイフンを含む時の名前の置換が不十分だったのを修正しています。

[4451313252] Yusuke Nakamura 2022-01-12 17:10:34 UTC

4e955b2e379a550cebd27e5d66fd5bcd98c70cf7 の続きで bundler の bundle gem で minitest によるテストを生成する時に gem 名を元にファイルパスを決めるルールを再修正しています。

[26e0450ba9] Yusuke Nakamura 2022-01-14 17:55:41 UTC

4e955b2e379a550cebd27e5d66fd5bcd98c70cf7 の続きで bundler のテストで bundle gem で生成する minitest によるテストファイルの内容チェックを強化しています。

[7353f950c3] Yusuke Nakamura 2022-01-19 08:52:27 UTC

4e955b2e379a550cebd27e5d66fd5bcd98c70cf7 のさらに続きで bundler の bundle gem で生成する minitest によるテストでテストクラス名の命名規則も修正しています。

[45e065ca8f] git 2022-01-19 16:05:10 UTC

version.h の日付更新

[71bc999009] Nobuyoshi Nakada 2022-01-19 16:18:49 UTC

configure で MinGW 環境向けに shutdown() 関数の存在チェックをバイパスして HAVE_SHUTDOWN が真になるように指定しています。

[ec5bde1a80] David Rodríguez 2022-01-11 18:53:41 UTC

rubygems の Gem.open_with_flock で IO#flock を呼び出す条件に Solaris 環境でないというのがありましたが、これを Windows 環境に限って flock を呼ぶというふうに変更しています。

[2b7025e680] David Rodríguez 2022-01-11 19:11:20 UTC

ec5bde1a8034608939ee649ca8ad4c39f9f52956 の続きで Gem.open_with_flock を Gem.open_file と改名しています。

[eba90bc034] Kazuhiro NISHIYAMA 2022-01-20 01:03:59 UTC

5c4734d1eff9322f9f21d9c21577978ab6e0d044 の dln_load() のリファクタリングWindows 向けとそれ以外とで preprocessor 分岐で実装をわけているところで dln_open() が利用可能な環境でしか使われない関数やマクロができて警告が出ていたのでこれも分岐内に入れるようにしています。

[ef2cf9245c] Michael Nikitochkin 2022-01-19 17:12:26 UTC

拡張ライブラリ psych の Psych.load を unsafe_load の alias としていたのを削除しています。load は別に定義されているため。

[82b0a9004c] Nobuyoshi Nakada 2022-01-20 04:18:33 UTC

GitHub Actions の WASM 環境向け workflow で pull request のラベルが Documentation のものはスキップするようにしています。

[59a91f229b] Nobuyoshi Nakada 2022-01-13 02:48:12 UTC

rb_clear_constant_cache() という関数の宣言を include/ruby/internal/intern/vm.h から internal/vm.h と include/ruby/backward.h に移動して、公開ヘッダ側では RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY() マクロを使って警告が出るようにしています。