ruby-trunk-changes 2020-01-17

今日は ruby2_keywords で修飾されたメソッドで自動的にキーワード引数から変換された Hash オブジェクトに内部的に付与されるフラグを ruby レベルから参照したりセットしたりするメソッドの追加などがありました。

[ec0b366a5c] aycabta 2020-01-16 11:26:50 UTC

標準添付ライブラリ reline の vi mode のテストに "i" や "a" で編集モードになる時のテストを追加しています。

[800c2a8e4c] aycabta 2020-01-16 16:35:13 UTC

標準添付ライブラリ reline の vi モードに "I" や "A" で行頭や行末で編集モードになる機能の対応を追加しています。

[95301378fc] git 2020-01-16 16:37:30 UTC

version.h の日付更新

[8ab11096ef] Marc-Andre Lafortune 2020-01-16 19:28:37 UTC

Module#included_modules と Module#included? の rdoc 用コメントに親を再帰的に辿って列挙/判定することを明記しています。 [ruby-core:56898] [Bug #8841]

[019a0ed0c7] Kenta Murata 2020-01-17 00:05:17 UTC

internal/rational.h の RRATIONAL_SET_{NUM,DEN} を改名してマクロから inline 関数 RATIONAL_SET_{NUM,DEN}() に変更しています。

[fbc00c2d86] Kenta Murata 2020-01-17 00:45:10 UTC

rational.c の nurat_s_new() という関数を削除して、Rational.convert の実装から呼ぶのは nurat_s_canonicalize_internal() を使うようにしています。

[07ce51c5aa] Kenta Murata 2020-01-17 00:55:50 UTC

019a0ed0c78ccd0eb694d09c6a226761261ec15d で inline 関数に変更して改名した RATIONAL_SET_{NUM,DEN}() に引数の type をチェックする assert(3) を追加。また rational.c の INT_POSITIVE_P() もマクロから inline 関数にして internal/numeric.h に移動しています。

[47465ab1cc] Kenta Murata 2020-01-17 01:41:03 UTC

Rational を作る時に負数が渡された場合内部的に常に numerator のほうで符号を表現して denominator は正数にするようにしています。

[5275d8bf4c] Kenta Murata 2020-01-17 01:47:20 UTC

String#to_r などで文字列から Rational を作る時に使われる rb_rational_raw() で numerator/denominator を to_int を呼んで整数に変換するようにしています。

[4e6bcac23e] Kazuhiro NISHIYAMA 2020-01-17 02:19:01 UTC

再度 make の依存関係を再生成しています。

[f9788ca7fe] Nobuyoshi Nakada 2020-01-17 07:41:46 UTC

さらにもう一度依存関係の再生成。 macOS 上で Xcode の clang だと time.o に internal/warnings.h になるようです。そうかー環境によっても依存関係変わることがあるから自動生成しても違う可能性があるんですね。

[c98c492578] Nobuyoshi Nakada 2020-01-17 07:56:53 UTC

f38b3e8c707ebdcad05aa9485cf1760640b74fbb の numbered parameter に対応する NODE の位置情報修正についてのテストを追加しています。

[b23fd59cbb] Yusuke Endoh 2020-01-11 06:04:44 UTC

2.7 の Kernel#ruby2_keywords などで修飾したメソッドの keyword rest 引数を最後の Hash 引数として自動的に変換して受け取った場合、それをさらに委譲した時に伝播されるように Hash オブジェクトに隠しフラグのように RHASH_PASS_AS_KEYWORDS を立ててましたが、このフラグを Marshal.dump/load 時に保持するようにしています。dRuby 経由のメソッド呼び出しでも伝播するようにと。なるほど。 [ruby-core:96777] [Feature #16501]

[7cfe93c028] Yusuke Endoh 2020-01-06 09:22:43 UTC

同じく Kernel#ruby2_keywords などで修飾したメソッドの keyword rest 引数を最後の Hash 引数として受け取った時のフラグを、Hash.ruby2_keywords_hash? というクラスメソッドで ruby レベルで判定できるようにしています。さらにフラグを立てた Hash オブジェクト(コピーしたもの)を返す Hash.ruby2_keywords_hash というクラスメソッドも追加しています。 これは実用上使うことあるのかな。 rdoc 用コメントにも "This method is not for casual use; debugging, researching, and some truly necessary cases" とあるからまあ通常使うものではないですね。
[ruby-core:96687] [Bug #16486]

[3344f81107] Yusuke Endoh 2020-01-17 08:25:05 UTC

GitHub Actions の cygwin 版を削除しています。 安定していないしメンテナンスする人がいないので。 [ruby-dev:50880] [Misc #16407]

[09271acdaf] Adam Isom 2020-01-16 21:42:36 UTC

doc/syntax/methods.rdoc の rest 引数についての記述を m(a, *b, c) みたいに rest 引数が通常引数の中間に存在する記法がサポートされるようになっているのに追随するようにしています。