ruby-trunk-changes 2020-03-17

今日は Hash#each からブロックを起動する時のパラメーターの渡し方についての変更などがありました。

[47141797be] Yusuke Endoh 2020-03-16 14:03:22 UTC

Hash#each がブロックを起動する時の key と value のペアをブロックパラメーターに渡す時の扱いが lambda タイプの Proc オブジェクトをブロックとして渡した時に一貫性がなくなっていたので、常に第1引数に2要素の配列を渡すように呼び出すようにしています。これにより2引数の lambda やメソッドを Proc 化したものをブロックとして渡すと ArgumentError が発生するようになります。無意識に使ってるところけっこうありそうだなぁ。 [ruby-core:77069] [Bug #12706]

[304538e6ff] Kazuhiro NISHIYAMA 2020-03-16 14:21:08 UTC

debug_counter.h のコメントの typo 修正。

[d514ba8e17] Yusuke Endoh 2020-03-16 14:32:55 UTC

Hash#to_proc で作った Proc オブジェクトは lambda? には false を返すのに、実際に call する時には複数の引数を渡すと ArgumentError が発生していたので実態にあわせて lambda? が true を返すように修正しています。 [ruby-core:76846] [Bug #12671]

[290d608637] "S.H" 2020-03-17 10:37:07 UTC

Kernel#clone の実装を builtin function 呼び出しを利用した ruby 実装に移植しています。

[e609fd58a9] git 2020-03-17 10:37:27 UTC

version.h の日付更新

[165e457236] Nobuyoshi Nakada 2020-03-17 10:46:03 UTC

290d608637e37323bb6eeda1b1466519f16308a5 の Kernel#clone の ruby 化時に追加した freeze の値をチェックする関数 obj_freeze_opt() は freeze_opt() からも呼ばれてましたが、こっちではまだ C 実装なので明示的な引数の指定がなく Qundef が入っている場合があるのでそれに対応するようにしています。

[3325194ac0] Nobuyoshi Nakada 2020-03-17 10:47:45 UTC

mjit_worker.c で realloc(3) の引数に unit->cc_entries を直接渡しているところが VC で警告になったそうなのでキャストして一旦 void* 型の変数に格納してから渡すようにしています。