ruby-trunk-changes 2019-12-11

今日は標準添付ライブラリ logger, forwardable の更新や prelude を全て組み込みメソッドの ruby 実装の機構と同じしくみでロードするようにする変更、Enumerator::Lazy#with_index の挙動の変更などがありました。

[eb18cb3e47] George Claghorn 2019-09-06 22:28:05 UTC

標準添付ライブラリ logger でログ出力時に severity チェックのためインスタンス変数 @level を直接参照していたのをメソッドを経由して参照するようにしています。 level メソッドを再定義した時に効くようにするため。

[38722fa179] Jeremy Evans 2019-10-15 01:08:10 UTC

標準添付ライブラリ logger で log rotation のための期間を判定する Logger::Period で不正な引数には ArgumentError を発生させるようにしています。 [ruby-core:93491] [Bug #15977]

[7a1c56f978] Jeremy Evans 2019-11-18 01:34:56 UTC

標準添付ライブラリ logger の Logger.new の rdoc 用コメントに shift_age オプションに 0 を指定すると rotation を行なわないことを明記しています。 [ruby-core:95852] [Bug #16349]

[0b10d46a57] Jeremy Evans 2019-08-21 04:28:14 UTC

標準添付ライブラリ logger のテストで環境変数 TZ でのタイムゾーンの指定についてのテストを OpenBSD でスキップしていたのを実行するようにしています。

[95f570d0d3] Hiroshi SHIBATA 2019-12-10 11:56:09 UTC

標準添付ライブラリ logger のバージョンを 1.4.2 に更新しています。

[2a2a707829] Hiroshi SHIBATA 2019-12-10 12:21:19 UTC

38722fa179fcec549300b2f35206f4eb168f202e の再修正。テストで ArgumentError の rescue が必要になったところの対応追加。

[8e49ef5a69] Nobuyoshi Nakada 2019-12-10 14:13:40 UTC

f9c0fe77c0ef6c5da1d8454bf6be6841c984d606 の変更で拡張ライブラリ io/console に追加になったヘッダの依存関係を depend ファイルに追記しています。

[ec54ac9381] aycabta 2019-12-11 02:12:54 UTC

標準添付ライブラリ reline で Reline.completion_quote_character 機能をサポートするようにしました。

[0fafb83b38] git 2019-12-11 02:13:28 UTC

version.h の日付更新

[69aa927a40] Corey Farwell 2017-04-17 21:58:51 UTC

Enumerable#select などの rdoc 用コメントに find_all と select は同じメソッドの alias で性能に違いはないということを明記するようにしています。

[943f3e5fd4] Koichi Sasada 2019-12-09 07:20:35 UTC

builtin.h に二重に #include されないようにする #ifndef と #define でのお作法を追加しています。

[2c5c60754c] Koichi Sasada 2019-12-10 07:19:13 UTC

gem_prelude.rb というファイルの内容は起動時に実行されますが、これを組み込みメソッド ruby 実装の機構を利用して ISeq にコンパイルした状態でインタプリタに埋め込んで起動時に parse/compile をすっとばして直接実行するようにしています。この ISeq を埋め込んで起動時に実行する機構のことはなにか名前がついてるんですかね。

[9c2807b2df] Koichi Sasada 2019-12-10 08:13:42 UTC

2c5c60754cafe9895b7a7421cd0552eaa2ae8b09 の続きで prelude.rb を埋め込んだ C ソースファイル prelude.c を生成してビルドする必要がなくなったようなので削除というか生成するのをやめています。 template/prelude.c.tmpl は消してないんですね。

[40026a408d] Koichi Sasada 2019-12-10 08:39:04 UTC

ruby 実装の組み込みメソッドをコンパイルして埋め込む方法は ISeq のバイナリ表現がメモリ上のレイアウトをそのまま格納しているのでアーキテクチャによって異なるのでクロスコンパイル時にうまくロードできなくなる問題がありましたが、クロスコンパイル時はこの状態で埋め込むのはあきらめて miniruby でやっているのと同様に ruby スクリプトを文字列のまま埋め込んで parse/compile して実行する(__builtin_xxx メソッドは効く)という対応をしています。

[bbbf451bff] Koichi Sasada 2019-12-11 02:22:27 UTC

40026a408df5e3576380f6c1d8bf6c119fa2e32b で tool/mk_builtin_binary.rb というツールのクロスコンパイルかどうかの判定に入れた条件文が複雑だったのでシンプルにリファクタリングしています。

[86e2c013d7] git 2019-12-11 02:25:00 UTC

2c5c60754cafe9895b7a7421cd0552eaa2ae8b09 の行末の空白除去。

[7e9b1609da] Eli Sadoff 2019-12-11 02:25:54 UTC

Range#sum の rdoc 用コメントに要素が Integer のRange だった場合ブロックなしだと最適化されて each は呼ばずに計算されることを明記しています。んーこれって外から観測できるのかな。 each を再定義しても効かないとか? https://github.com/ruby/ruby/pull/1593

[6a7af800db] aycabta 2019-12-11 02:36:21 UTC

標準添付ライブラリ reline の completion の Proc で候補の文字列と入力バッファの Encoding の互換性がない時の例外メッセージを追加しています。

[8a80bfcfd4] Jean byroot Boussier 2019-12-10 10:49:39 UTC

Thread#to_s による文字列化でファイル名や行番号を表示する時の記法を "@" を前に置かないように Method や Proc にあわせて変更しています。

[85e43e1dfe] Jeremy Evans 2019-12-10 21:38:12 UTC

Enumerator::Lazy#with_index が暗黙のうちに map のような挙動をしていたのをやめています。んーこれ確かに微妙な挙動だったとは思うけどサクっと直して(というか変えて)大丈夫かな。 [ruby-core:96186] [Bug #16414]

[1ed0212bcf] Kazuhiro NISHIYAMA 2019-12-10 09:31:01 UTC

require や autoload のテストでビルドディレクトリに存在するファイルの影響を受けないように修正しています。この確認のため GitHub Actions の Ubuntu 環境でわざといくつか例外を発生させる .rb ファイルを生成してからテスト実行するようにしています。 [ruby-core:95055] [Bug #16177]

[4f5dc15b04] Kazuhiro NISHIYAMA 2019-12-10 12:44:34 UTC

1ed0212bcf76ec244ca5b75c65f09e5b04158377 で GitHub Actions でわざと作っておく .rb ファイルの名前の種類を大文字1文字や数字1文字などを増やしています。

[cf948a3d3f] Kazuhiro NISHIYAMA 2019-12-10 14:01:23 UTC

1ed0212bcf76ec244ca5b75c65f09e5b04158377 の追加修正? で rubygems のテストでも存在しないファイルを require するつもりで require "q" としていたのをもっと独自のファイル名に修正しています。

[35adc47e7e] Kazuhiro NISHIYAMA 2019-12-11 04:08:21 UTC

1ed0212bcf76ec244ca5b75c65f09e5b04158377 の GitHub Actions でわざと .rb ファイルを作る step を make check 時のみ実行するように if: を追加しています。

[fe8caf0ab9] Koichi Sasada 2019-12-11 04:37:00 UTC

common.mk の miniinit.o の依存関係を更新しています。

[6025783a3b] Koichi Sasada 2019-12-11 05:00:32 UTC

8a80bfcfd4d510a20a62e21d8d2f4119cb823d4f の Thread#to_s の変更で rubyspec のテストを修正した時の ruby_version_is の使いかたがまちがってたのを修正しています。

[7fa821a80d] Kazuhiro NISHIYAMA 2019-12-11 05:01:23 UTC

ちょっとよくわかってませんが GitHub Actions の設定でリビジョンの情報などを環境変数に ::set-env というコマンド? を使って設定していたのを ::set-output をいうのを使うように書き換えています。

[0afee4d803] Nobuyoshi Nakada 2019-12-11 05:27:21 UTC

bootstraptest/test_thread.rb の Thread#join のテスト? で失敗時に例外メッセージをエラーメッセージとして表示させるようにしています。

[7f5014e6e8] Koichi Sasada 2019-12-11 06:45:23 UTC

compile 済み ISeq を埋め込んで起動時に実行する機構でバイナリ状態の ISeq を名前で検索する builtin_lookup() で配列を線形探索してたのを、static 変数で index を関数内に持って、呼ばれるたびに次の位置のものを返すようにしています。一応名前のチェックもしていますが、この順番はビルド時に決まっているはずなので毎回検索する必要はないはずとのこと。

[1269157a6e] Koichi Sasada 2019-12-11 07:10:26 UTC

8a80bfcfd4d510a20a62e21d8d2f4119cb823d4f の Thread#to_s の rubyspec のテストで 2.4 以前は Thread#to_s は inspect の alias になってなかったので挙動が違うので skip するようにしています。

[eb9c007053] Koichi Sasada 2019-12-11 07:48:19 UTC

標準添付ライブラリ readline のテストで mingw でしばらく通ってないテストがあったので skip するようにしています。

[d2d42081ce] Nobuyoshi Nakada 2019-12-11 07:19:49 UTC

1269157a6e46895c0eda2ea202d44790bbe815c8 の rubyspec の skip の再修正。 Thread#to_s のテストのスキップはもうちょっと根本に近いほうで行なうようにしています。また 6025783a3b0b37517728c635250669449bb21a53 も revert しているけど、この ruby_version_is の使いかたもありなのかな。

[3098798044] Nobuyoshi Nakada 2019-12-11 07:41:37 UTC

rubyspec の Thread のテストで inspect と同様のテストを to_s でも行なうように(ただし 2.5 以降で)しています。

[c2f6aa4e48] aycabta 2019-12-11 10:39:37 UTC

標準添付ライブラリ readline の completion のテストで Readline.completion_proc の Proc が判定する候補文字列の Encoding を Encoding.default_external に揃えておくように修正しています。mingw での失敗というのはこれが原因かなぁ。

[0dcd3340fb] Jeremy Evans 2019-12-02 03:57:06 UTC

標準添付ライブラリ forwardable の def_instance_delegator, def_single_delegator などのメソッドの戻り値が ruby2_keywords を呼ぶようにした影響で変わってしまっていたので、元の戻り値を返すように修正しています。 https://github.com/ruby/forwardable/issues/10

[49ffae7ca6] Jeremy Evans 2019-12-02 03:59:07 UTC

標準添付ライブラリ forwardable のバージョンを 1.3.1 に更新しています。

[47a365dd58] Yusuke Endoh 2019-12-11 11:44:39 UTC

544431e028e9d678f2989c35876a05c53f07e0ec で .travis.yml に追加した s390x という環境のテストは失敗しても無視するようにしています。 [ruby-core:95910] [Misc #16360]