ruby-trunk-changes 2022-09-20

今日は昨日の Process.daemon の変更の再修正と組み込みメソッドの ruby 実装での引数の末尾カンマを許容する変更などがありました。

[a44f48cadc] Peter Zhu 2022-09-19 14:15:04 UTC

拡張ライブラリ bigdecimal の missing.h に rb_array_const_ptr() などの定義を古い ruby 向けにビルドする時のために独自実装を持ってたのを削除しています。2.3 で追加された API とのことなのでそれ以前の ruby はもうサポート外ということですね。

[12889fad41] Peter Zhu 2022-09-19 14:23:29 UTC

同じく拡張ライブラリ bigdecimal で古い ruby で rb_sym2str() がない時のために自前で実装を持っていたのを削除しています。これは 2.2 から追加された API とのこと。

[26135312f6] Aaron Patterson 2022-09-16 00:48:52 UTC

拡張ライブラリ psych の Psych::Parser#parse の引数解析部分を ruby 実装にして処理の本体は Psych::Parser#_parse メソッドに C による実装を定義してこれを呼び出すように変更しています。

[f8dad616c2] Takashi Kokubun 2022-09-19 21:07:28 UTC

GitHub Actions の YJIT 用の workflow に --yjit-stats オプションをつけてベンチマークを実行するステップを追加しています。 https://github.com/ruby/ruby/pull/6403

[76a0e81f40] Takashi Kokubun 2022-09-19 22:38:18 UTC

tool/mk_builtin_loader.rb で組み込みメソッドの ruby 実装を解析して C の呼び出しに変換する時に引数の最後のカンマを許容するようにしています。そのような ruby スクリプトを組み込み用のスクリプトで書くと不正な引数を渡してしまって SEGV する可能性があったようです。

[b4546d26f2] Takashi Kokubun 2022-09-20 00:43:49 UTC

76a0e81f409baf810411677e115bce4f4b05ba5e のコメントで引数の最後のカンマがない時の args の値の例が正しくなかったとのことでコメントを修正しています。

[55e540f7ab] Nobuyoshi Nakada 2022-09-20 02:12:11 UTC

昨日の ae07336529ee0955bb08b12eb69a90aa9ab4b9f9 で Process.daemon で double fork をやめた変更の追加修正で、setsid(2) の呼び出しがエラーになった時にそれを無視するようにしています。なるほど setsid(2) が失敗したら既に process group の leader なのでそのまま fork() していいということか。setsid() が他の理由で失敗することは man をみる限りだとみあたらないので、これでいいのかなぁ。しかしそれだったら他のプログラムもこの方法を使えば double fork しなくても良さそうだし、なにか他にも理由がありそうな気もするけど……。まあなにか現実的に問題があれば報告が来るでしょう。

[9de11fe796] Nobuyoshi Nakada 2022-09-20 03:54:08 UTC

ビルド時に symbolic link を貼るためのスクリプト tool/ln_sr.rb に -q オプションを追加して既に同じ symlink が貼られていた時にエラーを無視するようにしています。また gems/xxx/lib の生成ルールでこのスクリプトを呼ぶ時にこのオプションを追加しています。

[e40fa6c480] Sutou Kouhei 2022-09-20 07:09:42 UTC

拡張ライブラリ socket の Addrinfo#ipv6_linklocal? および Addrinfo#ipv6_sitelocal? の rdoc 用コメントのサンプルとして挙げられていたアドレスが間違っていたのを修正しています。 https://github.com/ruby/ruby/pull/6372