ruby-trunk-changes 2022-09-25

今日は主に ISeq の構造体などの first_lineno の型を VALUE (Integer)から int にする変更などがありました。

Method#call の実装 rb_method_call_pass_called_kw() でブロック引数を Proc オブジェクトに変換していたのをまったく同じ内容の rb_method_call_kw() に委譲するようにリファクタリングしています。

[09ea4f3a9f] Samuel Williams 2022-09-23 10:54:39 UTC

iseq.c の rb_iseq_new_top() と rb_iseq_new_eval() から共通の初期化部分を iseq_setup_coverage() という関数に切り出すリファクタリング

[81b919ce5c] Samuel Williams 2022-09-23 10:58:01 UTC

9434a7333c2a23c680a977331a60ca7c502c1ac0 の eval 系メソッドで実行するスクリプト内の coverage のサポートについて NEWS に追記しています。 [ruby-core:109937] [Feature #19008]

[8e2c425183] Maciek Rząsa 2022-07-28 12:30:10 UTC

拡張ライブラリ bigdecimalBigDecimal#sign メソッドの rdoc 用コメント? で値が 0 の時は 0 を返すと書かれていましたが実際には符号に応じて(BigDecimal には +0 と -0 がある) +1/-1 いずれかを返すので記述を修正しています。

[75cf29f60d] Samuel Williams 2022-09-25 07:45:28 UTC

rb_iseq_new_with_opt() や rb_iseq_new_with_callback() などの関数の引数 first_lineno の型を VALUE から int に変更しています。

[22af2e9084] Samuel Williams 2022-09-25 08:07:18 UTC

75cf29f60d87b298edfd75611bfe272a92289cee の続きで構造体 rb_iseq_location_t のメンバーの first_lineno も型を VALUE から int に変更しています。また rb_binding_t の first_lineno は unsigned short だったのを int に変更しています。これはなんか、short であることに理由があったような気がぼんやりするけど、大丈夫かな。

[85cc0ce5c8] Samuel Williams 2022-09-25 08:49:45 UTC

ISeq のバイナリフォーマットへの dump/load 時も first_lineno の情報を int のまま書き出すようにしています。これ互換性がなくなるのでバイナリフォーマットのバージョンを上げたりしないといけないのでは。