ruby-trunk-changes 2019-05-15

今日は主に GC.compact 関連の修正と拡張ライブラリ optparse の --enable-xxx/--disable-xxx タイプのオプションの引数対応などがありました。

[2ca537ba4b] Aaron Patterson 2019-05-14 08:18:43 -0700

gc.c の関数 rb_gc_mark_stack_values() を rb_gc_mark_vm_stack_values() と改名しています。VM スタックをマークすることを明示するため。

[46a479889c] git 2019-05-15 00:19:31 +0900

version.h の日付更新。

[c70ceb5992] Aaron Patterson 2019-05-14 20:21:03 -0700

GC.compact で移動可能なオブジェクトをどの page に移動するかのロジックを、従来の pin されてて動かせないオブジェクトが多い page を優先する方法の他に、free_slots (空き)が多い page を優先する方法も gc_compact_heap() に渡す比較用の関数ポインタで変更できるようにして、GC.verify_compaction_references メソッドのキーワード引数 toward の指定によってはそれを選択できるようにしています。 GC.compact では対応しないんですね。コミットログがよく解読できないんですがこれはテスト用ということかな。

[e8b929b9df] git 2019-05-15 12:21:53 +0900

c70ceb59928aa2c37befd6b03d73657ba5ece61c のインデントのタブを空白に展開。

[672ee5f6ed] Aaron Patterson 2019-05-14 20:30:16 -0700

enumerator.c で Symbol を VALUE 型の static 変数に格納してましたが、Symbol は GC.compact で移動してしまう可能性があるので ID を格納しておいて使うところで ID2SYM() で変換するようにしています。

[0cc893d01d] Aaron Patterson 2019-05-14 20:41:31 -0700

と思ったら 672ee5f6ed5a6840a3be9150b6721a5ee8f8766b を revert しています。これらの Symbol は通常のオブジェクトじゃないので pin する必要がない、とのことでしたが、組み込みの ID のはともかく rb_intern() して作ってるやつだからこれは普通のオブジェクトなんじゃないかな?

[f54aa6c5b2] aycabta 2019-05-15 15:52:18 +0900

標準添付ライブラリ reline で端末の入出力をまとめるモジュール Reline::IO を Reline::IOGate と改名しています。トップレベルの IO とまぎらわしいからかな。

[c9b28fd7ae] Nobuyoshi Nakada 2019-05-15 17:31:11 +0900

標準添付ライブラリ optparse で --enable-xxx や --disable-xxx みたいなオプションを特別に処理するやつ(こんなんあったんだ)でオプションにさらに引数を受け取れるように拡張しています。 [ruby-core:92651] [Bug #15850]

[3cf767ee35] Aaron Patterson 2019-05-15 10:56:15 +0200

dc405eb737c178016167c8e64bdf32d27c5455f0 で finalizer_table のキーも GC.compact 対応のため pin するようにしたのを revert して gc_update_references() で finalizer_table 内の参照も移動に対応するようにしています。

[214e2f93aa] Nobuyoshi Nakada 2019-05-15 18:19:23 +0900

456586bb234915107da255d2944f620a7dd7048b の拡張ライブラリ io/console での IO#getch の Windows 実装で vmin の指定に対する警告を出すときの条件が間違ってたのを修正。