ruby-trunk-changes 2019-05-23

今日も reline や irb の修正があったほか、Enumerable#filter_map メソッドの新規追加、git リポジトリの master ブランチを trunk の別名として追加したので tool/snapshot や CI の設定の対応などがありました。

[658f17b8ec] Nobuyoshi Nakada 2019-05-22 22:28:02 +0900

tool/vcs.rb の VCS::GITSVN.revision_name を SVN.revision_name に委譲するように修正。元は未定義のメソッドを呼んでしまっていたみたいです。まあもう git-svn を使う人もいないでしょうが。

[24684a81d2] Nobuyoshi Nakada 2019-05-22 22:28:07 +0900

tool/make-snapshot で RUBY_REVISION の定義にリポジトリ全体の最新のコミットハッシュ全体を使うようにしています。

[8fb77acac7] Nobuyoshi Nakada 2019-05-22 23:51:33 +0900

tool/make-snapshot の revision.h の RUBY_REVISION の定義で文字列をそのまま埋め込んでたので、String#dump を呼んでクオートつきにしておくようにしています。

[d819d97cf0] Nobuyoshi Nakada 2019-05-22 23:52:51 +0900

tool/make-snapshot で revision 取得のためのブランチを現在のブランチを元にするようにしています。

[a205e24747] Nobuyoshi Nakada 2019-05-22 23:53:21 +0900

C の定数マクロ RUBY_REVISION はやっぱり先頭 10文字までの commit hash にして RUBY_FULL_REVISION という定数を追加してこっちにフルサイズの commit hash を定義するようにしています。また ruby レベルの RUBY_REVISION という定数はフルのほうを返すようにしています。

[4d62296948] git 2019-05-23 00:15:54 +0900

version.h の日付更新。

[d3f1c615c5] Yusuke Endoh 2019-05-23 00:19:56 +0900

2.0.0 の時に Hash[] メソッドに渡す配列の要素に nil を許容しつつ警告を出すようにしてあったので、ようやくこれをエラーになるように変更しています。 [ruby-dev:46440] [Bug #7300]

[277e68825a] Takashi Kokubun 2019-05-22 08:33:44 -0700

.travis.yml でテスト対象のブランチ名の trunk -> master に変更しています。

[d9b338a53f] Takashi Kokubun 2019-05-22 08:40:09 -0700

appveyor.yml でテスト対象のブランチから trunk を消しています。たぶん master と trunk が同じものを指すようになったのでどっちかだけテストすればいいからだと思います。

[9d39eb6b40] Yusuke Endoh 2019-05-23 00:48:32 +0900

Range#inspect で beginless range の時に開始の値を nil と明記せず省略した表記をするようにしています。

[b80adde359] Takashi Kokubun 2019-05-22 09:07:22 -0700

wercker.yml でもテスト対象のブランチを trunk -> master に変更しています。

[bec877b46f] Takashi Kokubun 2019-05-22 09:13:13 -0700

azure-pipelines.yml でも trunk をテスト対象からはずすようにしています。

[709756d897] Takashi Kokubun 2019-05-22 09:17:26 -0700

bec877b46fd4d0f621a75591b519a7e266eaa89b の再修正。 azure-pipelines.yml のテスト対象ブランチの指定を変更していますが、これは逆に trunk だけで実行っていうことにならないのかな?

[f69d28fbca] Takashi Kokubun 2019-05-22 09:18:30 -0700

と思ったらやっぱり間違いだったみたいで 709756d89747bd36664593eda4156a7bf5ad7631 の再修正で master をテスト対象にしています。

[a093c98ddc] Nobuyoshi Nakada 2019-05-23 01:39:43 +0900

version.c で a205e24747497391390ef7c004293a8a7934dd96 で追加した RUBY_FULL_REVISION が未定義の時に RUBY_REVISION を利用するようにしています。

[00f7e42451] Yusuke Endoh 2019-05-23 01:46:21 +0900

9d39eb6b40966deeeaa23c28f0be640c56545644 で変更した Hash[] の挙動について rubyspec にバージョン毎の分岐を追加しています。

[1ebe9a2f82] Takashi Kokubun 2019-05-22 10:01:36 -0700

appveyor.yml と azure-pipelines.yml のビルド対象のブランチ指定の変更を revert しています。これらの CI ツールでブランチ名のエイリアスがうまく扱えてない?

[c210c68d39] Takashi Kokubun 2019-05-22 11:14:54 -0700

1ebe9a2f82fef5190454e68d430004282f5da172 を revert しています。 AppVeyor と Azure Pipelines の問題は解消されなかった模様。

[da3fabc976] aycabta 2019-05-23 08:25:06 +0900

標準添付ライブラリ reline の multiline editing で最終行で改行した時にモードによって入力終了のチェックをするか否かを制御してたのを、常にチェックするようにしています。

[bb29ed6e33] aycabta 2019-05-23 08:33:20 +0900

標準添付ライブラリ reline で Ctrl-v で生のコントロールシーケンスを入力できるようにしてから Ctrl-j および Ctrl-m を押した時に改行入力するようにしています。

[0eff21af8d] Koichi Sasada 2019-05-23 11:26:33 +0900

メソッド呼び出しの引数の準備で ARRAY_ASET() を使ってたのを rb_ary_push() を使って詰めるようにしています。サイズの調整が……と思ったら元から length=0 のまま要素を詰めてしまってたみたいですね。 rb_ary_tmp_new() の引数は capa の初期値なので len は 0 のまま。 正しく参照が辿れないため GC.compact でエラーになって発覚したみたいです。

[136ae55892] Koichi Sasada 2019-05-23 11:26:33 +0900

rb_gc() の最後に gc_finalize_deferred() を呼び出すのを消しています。 finalizer の呼び出しは Ruby のプログラムが動く可能性があるためオブジェクト生成が行われる可能性があり GC.compact のテストで問題が起きてたようです。 GC.compact のテストを全体的にスキップしていたのを元に戻しています。 [ruby-core:92465] [Bug #15809]

[02973d3ba8] Koichi Sasada 2019-05-23 11:42:15 +0900

gc_mark_maybe_() という関数の名前を gc_mark_maybe() に変更しています。 また GC.compact の追加後の追加修正で追加された gc_mark_and_pin_maybe() という関数を削除して gc_mark_maybe() を呼び出すように戻しています。

[4814f17361] Koichi Sasada 2019-05-23 13:21:40 +0900

gc_ref_update() の中で T_ZOMBIE 型のオブジェクトも無視するようにしています。 rb_gc() で finalizer を起動しなくなったためにこのタイミングで T_ZOMBIE が残ってる可能性が出てきたようです。

[f91b1ab33d] Jeremy Evans 2019-05-22 21:32:31 -0700

readline のテストで Readline 4.3 で不具合のために動かないテストの assertion を実行しないように条件分岐を追加しています。 [ruby-core:92676] [Bug #15853]

[c05eaa9325] Jeremy Evans 2019-05-22 21:52:20 -0700

ヒアドキュメント内で複数の異なるエンコーディングの文字が含まれていた時に、行が異なっていても検出できるように修正しています。 [ruby-core:92608] [Bug #15839]

[1ccc2eeba0] Nobuyoshi Nakada 2019-05-23 14:18:26 +0900

.travis.yml と appveyor.yml でチェックアウト後の make up で Unicode 系のデータファイルの更新を抑制するための変数定義を追加しています。

[0acbdd1ed0] Alfonso Jiménez 2019-05-23 14:39:16 +0900

Enumerable#filter_map という filter/select + map のようなメソッドを新規追加しています。各要素毎のブロックの評価値が nil か false だとその要素は消されて、そうでなかったらブロックの評価値に変更したものを含む配列を返します。なるほど、たしかに map + compact することはあるので便利かも。 https://github.com/ruby/ruby/pull/2017 [ruby-core:89907] [Feature #15323]

[c5cbabf8a8] NAKAMURA Usaku 2019-05-23 15:33:40 +0900

irb で出力を色付けする条件として環境変数 TERM をみてましたが、Windows 環境では TERM の設定によらず端末への出力なら色付け可能としています。

[65637dae30] Takashi Kokubun 2019-05-23 00:07:16 -0700

Wercker で GC.compact 関係のテストファイルを実行除外していたのをやめています。

[6be0ab73c3] Koichi Sasada 2019-05-23 16:58:21 +0900

gc_pin() と gc_mark_and_pin() の両方で is_markable_object() のチェックをしていたのを、gc_pin() のほうでは省略して、gc_mark_and_pin() から pin する処理は gc_pin() を呼び出すようにリファクタリングしています。

[8fce83339b] Urabe, Shyouhei 2019-05-23 17:24:53 +0900

.travis.yml の ASAN/MSAN/UBSAN でのビルドの時にコンパイラオプションに -U_FORTIFY_SOURCE を追加してこのマクロを未定義にするようにしています。 https://github.com/google/sanitizers/issues/247

[763989c6c5] Urabe, Shyouhei 2019-05-23 17:24:53 +0900

poison_object(), unpoison_object() など ASAN 用のメモリ領域のチェック有無を制御する関数に asan_ という prefix を追加しています。

[878a06efec] Urabe, Shyouhei 2019-05-23 17:24:53 +0900

763989c6c5a553fa072208e53707813fbde916d0 で asan_ の prefix を追加した関数にドキュメント用のコメントを追加しています。

[dc95b57a68] Koichi Sasada 2019-05-23 17:31:14 +0900

gc_compact_after_gc() で引数 use_verifier が真の時に compact 後だけでなく前にも gc_verify_internal_consistency() を呼び出すようにしています。

[fe3ff5afb0] Nobuyoshi Nakada 2019-05-23 17:36:26 +0900

未使用の引数の警告除去のためのキャストを追加しています。チケットは socket がビルドできないというものですが mkmf.rb でライブラリなどのチェックのために使うなにもしない main 関数のソースで未使用引数の警告抑制するようにしているのが該当する部分だと思います。 [ruby-core:91824] [Feature #15665]