ruby-trunk-changes 2021-08-07

今日は caller_locations などでバックトレース情報を得る時の範囲指定の不具合修正や Float#round の引数に大きな桁数を指定した時の不具合修正、Hash#transform_keys のメモリリーク修正などがありました。

[d868c8f08f] Nobuyoshi Nakada 2021-08-06 11:58:13 UTC

defs/gmake.mk の make spec/ に続けてファイル名指定で特定のファイルの rubyspec だけ実行するターゲットでコマンドの先頭に "+" をつけて make -n などのオプションを伝播させるようにしています。

[1a05dc03f9] Jeremy Evans 2021-07-21 23:44:56 UTC

3b24b7914c16930bfadc89d6aff6326a51c54295 の backtrace_each() でバックトレースの指定された一部分だけ得るための実装の最適化の再修正。ごくシンプルなネストしたブロック内から呼ばれた関数から caller_location で得た Thread::Backtrace::Location が不正な状態になって inspect を呼ぶだけで SEGV してしまうことがあるみたいです。 backtrace_each() の実装方針をがらっと変更して、C 実装のメソッドのスタックフレームの行番号などを保留にしておいて、その呼び元の位置がわかった時点でその位置で埋めるようにしているそうです。元の実装の不具合の理由はよくわからなかった。 [ruby-core:104722] [Bug #18053]

[0d3520b063] git 2021-08-06 17:15:19 UTC

version.h の日付更新

[d16b68cb22] Jeremy Evans 2021-07-26 18:20:27 UTC

Float#round に引数に大きな桁数(15以上らしい)を指定した時に誤った結果になる場合がある不具合を修正しています。シンプルに桁数をチェックして 15以上なら Rational を利用した実装に fallback するようにしています。 [ruby-core:86323] [Bug #14635] [ruby-core:100090] [Bug #17183]

[e5dd40b1f3] Nobuyoshi Nakada 2021-08-07 03:08:20 UTC

Hash#transform_keys! で一時的に内部的に利用する Array を rb_gc_force_recycle() でメモリ解放しようとしていたのを消しています。なぜかわかりませんがこれがかえってメモリリークを引き起こしてたみたいです。なんでだろ。差分はシンプルですがそれゆえに理由がわからない。 [ruby-core:104817] [Bug #18065]

[9b3fcfbbb9] "S.H" 2021-08-07 03:50:55 UTC

rubyspec の C API 用の拡張ライブラリ で read(2) の戻り値のエラーチェックをしていないところがあったのを修正しています。

[ac7986f46a] S-H-GAMELINKS 2021-08-06 03:46:01 UTC

cont.c にもう利用していない rb_fiber_transfer_kw() の宣言が残ってたのを削除しています。

[6e60fc2945] Nobuyoshi Nakada 2021-08-07 09:32:24 UTC

template/Makefile.in と win32/Makefile.sub に ACTIONS_GROUP と ACTIONS_ENDGROUP という変数を導入して GitHub Actions での実行時に ##[group] と ##[endgroup] という出力をするコマンドにするようにしておいて、それを各種の test のターゲットのコマンド実行の前後に置くようにしています。 GitHub Actions の結果の表示の時に折り畳んで表示される機能があるみたいですね。