ruby-trunk-changes 2019-08-14

今日は拡張ライブラリ stringio の最近の IO の BOM への対応などに追随する機能追加や先日の Module/Class の名前付け実装の変更の再修正などがありました。

[94ca848ca1] Takashi Kokubun 2019-08-13 13:56:44 UTC

.github/workflows/check_branch.yml の master 以外からブランチを切った pull request を弾く理由についてのコメントを再度修正しています。

[dd1344b81e] Aaron Patterson 2019-08-12 21:00:34 UTC

Enumerator および Yielder の GC.compact 対応。enumerator_compact() と yielder_compact() を追加して struct enumerator や struct yielder の VALUE な要素について移動をサポートするようにしています。

[c393734c95] git 2019-08-13 14:00:56 UTC

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

[79f9c626b6] Takashi Kokubun 2019-08-13 14:36:31 UTC

.github/workflows/*.yml の各プラットフォームでのリポジトリの clone に GibHub Actions の公式のアクションを利用するように戻しています。 git clone だと対象のコミットをきっちり取得できないのと、fork されたリポジトリからの pull request のコミットを取得する必要があるのでとのこと。 https://github.com/ruby/ruby/pull/2357

[5b1bf8dd2d] Nobuyoshi Nakada 2019-08-13 14:23:43 UTC

IO の Encoding をファイル先頭の BOM を元に設定するために使う io_strip_bom() で UTF-16LE の時の分岐が冗長で、\xFF\xFF\x00 までは 32LE と同じだった場合に誤判定するようになっていたので修正しています。 [ruby-core:94326] [Bug #16099]

[8827697ec4] Nobuyoshi Nakada 2019-08-13 15:23:19 UTC

bootstraptest/test_thread.rb の Thread#backtrace のテストの assertion の書きかたをちょっと変更。

[930e637c0e] git 2019-08-13 15:23:38 UTC

version.h の日付更新

[216d230080] SHIBATA Hiroshi 2019-08-13 22:44:26 UTC

assert_raise_with_message、assert_warning、assert_warn などの assertion メソッドを tool/lib/test/unit/assertions.rb から tool/lib/test/unit/core_assertions.rb に移動しています。 default gems のテストで使うためとのこと。 https://github.com/ruby/ruby/pull/2354

[8a687b8a4f] Takashi Kokubun 2019-08-14 00:23:57 UTC

79f9c626b63c2ce6ed1f3e767838a02a668145ba で GitHub Actions の公式のアクションでリポジトリの取得するようにしてましたが、やっぱりやめて独自に git clone してから狙った commit まで git reset するようにしています。やっぱり公式のアクションでたまに失敗することがあるようです。

[765d603153] Takashi Kokubun 2019-08-14 01:52:15 UTC

8a687b8a4ff4096d7783bed58642112cfa3256a0 の GitHub Actions でのリポジトリ取得の独自コマンド化で .github/workflows/windows.yml では変数の参照を ${{...}} を使うようにしています。これは GitHub Actions 自体の記法かな。 https://github.com/ruby/ruby/pull/2361

[c8f9e9a2a0] Nobuyoshi Nakada 2016-06-10 05:18:14 UTC

拡張ライブラリ stringio の StringIO.new の第2引数の mode で Encoding の指定をサポートし、またキーワード引数にも対応するようにしているよう IO に追随しています。テストにはキーワード引数のほうはないけどたぶん同じような指定ができるように引数処理をそろえていると思う。

[e54d349a01] Nobuyoshi Nakada 2019-08-13 18:02:30 UTC

拡張ライブラリ stringio の c8f9e9a2a0788fff08824985a74748dbe7ff7b18 の変更で利用する関数 rb_io_extract_modeenc() が古い ruby だと存在しないので、default gems 化されているので古い ruby でビルドされた時のための代替関数を追加しています。

[8b44307894] Nobuyoshi Nakada 2019-08-14 01:42:14 UTC

さらに拡張ライブラリ stringio の StringIO.new の mode に Bignum の整数で渡された時にも対応できるように FIX2INT() ではなく NUM2INT() で変換するようにし、さらに to_int で整数化するオブジェクトにも対応するようにしています。

[22e942deb2] Nobuyoshi Nakada 2019-08-14 01:42:46 UTC

e54d349a01043082169a88a2782e6739bdd52c4f で拡張ライブラリ stringio に古い ruby 対応のために追加した rb_io_extract_modeenc() の代替実装で mode: キーをもつハッシュの引数(オプション引数とか言うやつ)による指定もサポートするようにしています。

[cad41bb6d3] Nobuyoshi Nakada 2019-08-14 01:43:46 UTC

拡張ライブラリ stringio に e717d6faa8463c70407e6aaf116c6b6181f30be6 で追加された IO#set_encoding_by_bom と同様に BOM を元に Encoding を決定させる StringIO#set_encoding_by_bom メソッドを追加しています。

[c744b62698] Nobuyoshi Nakada 2016-06-09 23:01:39 UTC

io.c の rb_io_extract_modeenc() から static をはずして include/ruby/io.h で export するようにしています。

[0623e2b7cc] Kazuhiro NISHIYAMA 2019-08-14 02:44:20 UTC

d0b2e6412e58fef052034962c047ce4dafbf88eb で切り出した関数 rb_ec_cleanup() で volatile 変数 errs が未初期化のまま使われると Coverity Scan で検出されたそうで Qundef 2つの配列で初期化するようにしています。 EC_EXEC_TAG が絡んでるので誤検出かなと思いますが、字面をみてるとむしろ素直に読んだほうが未初期化でアクセスはしないようにみえるけどなぁ。

[182a408c2c] Koichi Sasada 2019-08-14 07:25:15 UTC

Proc#to_s のファイル名と行番号の表示に "@" を前置していたのをやめて空白で区切るようにしています。 rubygems もこれに依存してたので一緒に修正しています。 https://github.com/ruby/ruby/pull/2362 [ruby-core:94341] [Feature #16101]

[0971460e31] git 2019-08-14 07:25:32 UTC

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

[1cffd5b4f0] Koichi Sasada 2019-08-14 07:30:30 UTC

182a408c2c4113eb316c2a87e35880144afb4498 で rubygems の追随がもう一箇所漏れてたので追加修正しています。

[c8f97596b7] Alan Wu 2019-08-10 21:32:49 UTC

b00f280d4b9569e7153365d7e1c522b3d6b3c6cf の Module/Class の name の取得方法の変更で無名の Module/Class の配下で定数定義すると無名のクラスの inspec したものが name として登録されてしまうという不具合があった(Module#name が nil を返すべきところ文字列を返してしまう)のを再修正しています。定数の名前付けってすごく複雑だなー。 [ruby-core:94277] [Bug #16097]