ruby-trunk-changes 2019-09-12

今日は NODE の mark 処理変更の残ってた不具合修正や Enumerator.produce という新規メソッドの追加などがありました。

[fc3bfd521d] Nobuyoshi Nakada 2019-09-11 12:36:00 UTC

argf_getpartial() で rb_ensure() に渡すコールバック関数に 0 を渡してなにもさせないようにしてるところで RUBY_METHOD_FUNC() というマクロを使って渡してましたが、関数ポインタの型が違うので独自に関数ポインタの変数を定義してそれを 0 で初期化して渡すようにしています。

[fba5bbc695] Kazuhiro NISHIYAMA 2019-09-11 14:38:05 UTC

GitHub Actions で doxygen 実行する.github/workflows/doxygen.yml を削除しています。 ruby/actions という専用のリポジトリに移動するとのこと。

[ed96c9f270] Jeremy Evans 2019-09-11 18:17:35 UTC

define_method で定義されたメソッドのキーワード引数変換の警告出力がされていなかったのを、メソッド名を省略した警告としてソースコード上の位置だけでも出すように対応しています。

[1febb6f4a1] git 2019-09-11 18:21:40 UTC

version.h の日付更新

[14e3731059] Aaron Patterson 2019-09-11 18:57:57 UTC

parse.y の for 文のアクション部で rb_imemo_tmpbuf_auto_free_pointer() で生成したバッファへの AST からの参照の Write Barrier を挿入する位置を参照(実際にはバッファへの参照を含む tbl)を実際に ast に繋げる直前に移動しています。

[21994b7fd6] John Hawthorn 2019-09-11 16:02:22 UTC

Hash#transform_values メソッドの実装で素朴に rb_hash_foreach() でイテレートして変換した要素を新しい Hash に rb_hash_aset() で追加していってたのを rb_hash_stlike_foreach_with_replace() という関数を使って、コピーした Hash に大して破壊的に各要素を上書きしていくようにしています。 rehash がいらなくなるのでこちらのほうが高速だとのこと。

[515b1989b1] Aaron Patterson 2019-09-11 21:02:05 UTC

parse.y の new_array_pattern() および new_array_pattern_tail() で NODE_ARYPTN タイプの NODE の各要素へのアクセスを struct rb_ary_pattern_info という構造体経由の T_IMEMO を利用したバッファ経由で取得するように修正しています。 8f096226e1b76f95f4d853d3dea2bc75eeeb5244 の変更で作成するところと mark 処理を変更してたのに利用するところを追随漏れしてたようです。よく動いてたなこれ。

[9f86e5ecb6] Kazuhiro NISHIYAMA 2019-09-12 09:28:46 UTC

GitHub Actions のテストカバレッジを計測する .github/workflows/coverage.yml も削除しています。 これも ruby/actions というリポジトリに移動しているようです。

[775037613b] Akinori MUSHA 2019-08-29 11:05:10 UTC

Enumerator.produce というメソッドを新規追加しています。引数に初期値を受け取りブロックを繰り返し評価した結果が各要素になる Enumerator を生成して返すというものです。基本的には無限リストみたいな終端のない Enumerator になるみたいですがブロック内で StopIteration 例外を発生させると終了もできるようです。つまりひとつ前の値に依存して次の値が決まる(依存しなくてもいいけど)ようなのを簡単に作れるようにしてるわけですね。マルコフ連鎖がシンプルに書けそう。 [ruby-core:87222] [Feature #14781]

[ac3e8834e0] Akinori MUSHA 2019-09-12 11:15:03 UTC

775037613bffe6f90e7af510b7f46a2ac10610be で追加した Enumerator.produce の rdoc 用コメントとテストを追加しています。 [ruby-core:87222] [Feature #14781]