ruby-trunk-changes 2021-04-22

今日は多重代入の左辺に代入記号つきのメソッドを置いた時の評価順序の変更やブロックに rescue 節と ensure 節があった時の ensure 節での例外発生の挙動の修正、各種標準添付ライブラリの gemspec の変更などがありました。

[7c0c1c3e46] Hiroshi SHIBATA 2021-04-21 08:38:33 UTC

37b96d6773a2151fb3193cab6b9e3f7328915844 の tool/sync_default_gems.rb で無視するファイルのパターンを使うかわりに gem 名を元にしたサブディレクトリ配下のみ同期対象にするという変更を revert しています。この戦略にマッチしないディレクトリ構成のライブラリがあったからみたいです。

[347c3b3083] Hiroshi SHIBATA 2021-04-21 11:34:46 UTC

7c0c1c3e4683cf4569b29e6a2d9eb44358268d14 で復活させた tool/sync_default_gems.rb の定数 IGNORE_FILE_PATTERN に rakelib/ を追加した時に追加位置が間違ってたのを修正しています。

[4ac72d37d7] Olle Jonsson 2021-04-06 10:42:40 UTC

拡張ライブラリ io/wait の gemspec ファイルの spec.executables にも明示的に空配列をセットするようにしています。

[855997a4d4] Olle Jonsson 2021-03-31 14:18:29 UTC

標準添付ライブラリ abbrev でも gemspec ファイルの spec.executables に明示的に空配列をセットするようにしています。

[fa00bf92ba] Olle Jonsson 2021-03-31 14:08:35 UTC

標準添付ライブラリ base64 でも gemspec ファイルの spec.executables に明示的に空配列をセットするようにしています。

[b68a4c199c] Olle Jonsson 2021-03-31 14:10:45 UTC

標準添付ライブラリ base64 の gemspec ファイルで spec.files を git ls-files を使って動的に作成していたのを直接配列を書くようにしています。

[c27e8f1caf] Olle Jonsson 2021-03-31 14:04:08 UTC

標準添付ライブラリ forwardable でも gemspec ファイルの spec.executables に明示的に空配列をセットするようにしています。

[2229fc8b57] Olle Jonsson 2021-04-06 09:48:30 UTC

標準添付ライブラリ resolv でも gemspec ファイルの spec.executables に明示的に空配列をセットするようにしています。

[17441a6b1b] Hiroshi SHIBATA 2020-12-28 04:37:11 UTC

標準添付ライブラリ pp の PP::PPMethods#seplist でブロック起動のための yield に明示的に **{} とキーワード引数がないことを指定して呼び出してたのが 2.x 系だと動かないということで RUBY_VERSION で分岐するようにしています。記法が動かないってことはないと思うけど、キーワード引数分離の影響かな。

[3c8a67e8a5] Hiroshi SHIBATA 2020-12-23 03:33:51 UTC

標準添付ライブラリ pp の gemspec ファイルでバージョンを 0.2.0 に更新しています。

[50c54d40a8] Jeremy Evans 2021-04-21 17:49:19 UTC

いわゆる多重代入のような構文(右辺左辺に複数の項目を書くと、右辺は配列として解釈され左辺が複数あると右辺を to_splat で配列として解釈してその要素を順に代入する、という機能の組合せによるもの)では通常は左辺から評価されるのですが、左辺にあるのが obj.attr= みたいな代入記号つきのメソッドであったり obj[]= のような添字つきの代入のメソッドだった場合に、その代入メソッド自体は後で評価されるのが適当ですが receiver である obj の部分も右辺の評価後に評価される、という挙動をしているのが不具合ではないか、という 10年前のチケットに対応した修正です。チケットおよび NEWS の追記をみると新しい挙動についてはわかると思います。代入のための VM 命令列を作るところに大きく手を入れて生成される命令の並びを変更しています。 [ruby-dev:43272] [Bug #4443]

[9dbd0969e7] git 2021-04-21 17:49:41 UTC

version.h の日付更新

[5512353d97] Jeremy Evans 2021-04-21 19:35:32 UTC

50c54d40a81bb2a4794a6be5f1861152900b4fedVM 命令列生成の変更の結果 reverse という VM スタックの内容の順序を反転する命令が不要になったということで削除しています。

[609de71f04] Koichi Sasada 2021-04-22 01:44:52 UTC

ブロックに rescue 節と ensure 節を追加した時に ensure 節内で例外が発生した時に誤って rescue 節がその例外を捕捉して実行されてしまっている不具合を修正しています。これもかなり昔からの挙動の修正のようです。 [ruby-core:82936] [Bug #13930] [ruby-core:97104] [Bug #16618]

[53d153e42c] Kir Shatrov 2021-01-22 05:42:30 UTC

標準添付ライブラリ time にマジックコメント # shareable_constant_value: literal を追加して Ractor で利用できるようにしています。

[2756938369] pavel 2020-03-13 17:55:55 UTC

標準添付ライブラリ cgiCGI.escapeHTML で ASCII incompatible なエンコーディングの文字列の場合に force_encoding で ASCII-8BIT に変換してからタグなどの置換を実施して元のエンコーディングに戻すという実装を追加しています。

[f818b1ed2b] Jeremy Evans 2021-02-25 17:24:15 UTC

27569383693a04907b50ec9170f9ebf164d01d0f の標準添付ライブラリ cgiCGI.escapeHTML の修正についてのテストを追加しています。

[2440d60acb] Olle Jonsson 2021-03-31 14:14:25 UTC

標準添付ライブラリ cgi でも gemspec ファイルの spec.executables に明示的に空配列をセットするようにしています。

[4f39a35b60] Keith Bennett 2021-03-03 20:13:30 UTC

標準添付ライブラリ benchmark の Benchmark.benchmark の rdoc 用コメントに引数の caption に改行を含める必要があることを追記しています。

[b18aab24b6] Olle Jonsson 2021-04-01 14:02:48 UTC

標準添付ライブラリ benchmark でも gemspec ファイルの spec.executables に明示的に空配列をセットするようにしています。

[537fc3ad5c] Hiroshi SHIBATA 2021-04-22 02:49:15 UTC

tool/sync_default_gems.rb で拡張ライブラリ io/console を upstream からマージする時に ext/io/console/lib/console/ffi を削除するようにしています。コミットログによると JRuby で使われるファイル群みたいですね。

[042860bd65] Duncan MacGregor 2021-02-05 12:03:39 UTC

拡張ライブラリ io/console の extconf.rb で RUBY_ENGINE が "truffleruby" の時もビルドするようにしています。

[270b16e70c] Charles Oliver Nutter 2021-02-03 19:53:28 UTC

拡張ライブラリ io/console の gemspec ファイル spec.files に登録しているの jruby 用のファイル群を jruby/io/console/ から lib/io/console/ffi/ に移動しています。537fc3ad5c5ed48a28d6cdd898ff6f41e9376b0e の変更により rubyリポジトリには反映されてませんが upstream ではファイルが移動されてたのでしょう。

[01f131457f] Hiroshi SHIBATA 2021-04-22 04:35:30 UTC

53d153e42c90f48ac35316b9fd69b8819aa4e7d3 で追加した標準添付ライブラリ time の Ractor 対応のテストで、Ractor.new するとグローバルな影響があるので assert_ractor を利用して子プロセスで実行するようにしています。

[674760316c] Hiroshi SHIBATA 2021-04-22 05:35:52 UTC

標準添付ライブラリ net/imap に upstream からバージョン 0.2.0 をマージしています。

[d785c5b8b2] Shugo Maeda 2021-03-16 05:54:32 UTC

標準添付ライブラリ net/imap で Net::IMAP.new の options 引数の項目として :idle_response_timeout を受け付けるようにしてレスポンスの受信にタイムアウトを指定できるようにしています。

[a9fe00c3ba] Shugo Maeda 2021-03-17 00:17:53 UTC

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

[6e06c980da] Charles Oliver Nutter 2021-03-04 22:44:35 UTC

標準添付ライブラリ uriURI::Generic#find_proxy で Java 用の環境変数? の ENV_JAVA という定数を参照して http.proxy{Host,User,Port} などの環境変数を読み取るようにしています。ENV_JAVA という定数は他にはないから、JRuby の場合に組み込みで存在する定数かな、たぶん。 [ruby-core:69398] [Bug #11194]

[c46a4b8c7f] Lukas Zapletal 2020-10-07 11:23:00 UTC

標準添付ライブラリ uriURI::Generic#hostname と #hostname= の実装でブラケット([])でかこまれてた時にそれを取り除いた中身だけ取り出すという処理を正規表現を使ってたのを String#start_with?, #end_with? を使うようにリファクタリングしています。

[3e27ca6047] Jeremy Evans 2021-03-04 23:18:36 UTC

標準添付ライブラリ uri のテストに URI::RFC3986_Parser#inspect と URI::Parser#inspect で本来のクラス名が表示されることを確認するテストを追加しています。

[10ad81eb2d] Jeremy Evans 2021-03-04 23:19:25 UTC

標準添付ライブラリ uri で to_s メソッドを再定義されてても Kernel#to_s を呼ぶために UnboundMethod を bind して使うのに UnboundMethod#bind_call を利用してましたが、2.7 よりも古い ruby で存在しないので respond_to? でチェックして、なかったら従来の bind して call するのを使うようにしています。

[d4a490f26a] Jeremy Evans 2021-03-04 23:20:28 UTC

標準添付ライブラリ uri の gemspec ファイルで required_ruby_version を 2.4 以降に設定しています。

[291cfa7125] Felix Wong 2021-04-21 18:32:04 UTC

標準添付ライブラリ uri の rdoc 用コメントのクラスリストから削除されて存在しなくなっている URI::Escape の記述を削除しています。

[bbee6968f8] Steven Harman 2020-08-18 17:49:08 UTC

標準添付ライブラリ uriURI.decode_www_form_component で不正な %-encoding を検出するのに正規表現Regexp#=~ を使っていたのを Regexp#match? メソッドを使うようにしています。 Regexp#match? も割と最近じゃなかったっけ、と思って調べてみたら 2.4 からなので現在サポートされてるバージョンでは全て使えました。

[e628058c1a] Kazuhiro NISHIYAMA 2021-04-22 11:55:52 UTC

gems/bundled_gems の rbs のバージョンを 1.2.0 に更新しています。

ruby-trunk-changes 2021-04-21

今日はArray#zip が引数に Enumerator を渡した時にひとつ余分に要素をみてしまうことがある不具合の修正などがありました。

[3fdc58c08b] Hiroshi SHIBATA 2020-12-23 09:18:05 UTC

拡張ライブラリ date の gemspec ファイルのバージョン番号を 3.1.1 に更新しています。

[b56c8f814e] Gannon McGibbon 2021-01-19 22:13:53 UTC

標準添付ライブラリ logger の rdoc 用コメントで iff を if and only if とわかりやすく書くようにしています。

[cc8d0e7cbf] Olle Jonsson 2021-04-01 13:58:27 UTC

拡張ライブラリ dbm の gemspec ファイルの spec.files に README.md と LICENSE.txt を追加しています。

[749aad280f] Olle Jonsson 2021-03-31 13:53:46 UTC

拡張ライブラリ gdbm の gemspec ファイルの spec.executable を明示的に空をセットするようにしています。

[59411b0b36] Olle Jonsson 2021-03-31 13:40:39 UTC

拡張ライブラリ zlib の gemspec ファイルでも spec.executable を明示的に空にするのと spec.files から .gitignore や .travis.yml などを削除しています。

[32643cfb1d] Aaron Patterson 2021-04-20 15:17:56 UTC

GC.compact で T_IMEMO タイプのオブジェクトを移動した時の参照の追随のための gc_ref_update_imemo() で imemo_env タイプの T_IMEMO の時の処理で rb_env_t::ep が NULL の場合というのがありえて、その時に SEGV していたので NULL チェックを追加しています。コミットログによると allocation tracing 機能を有効にしている時に NULL になる可能性があったみたいです。

[d92f09a5ee] git 2021-04-20 16:54:32 UTC

version.h の日付更新

[eb4e320681] Alan Wu 2021-04-20 22:32:13 UTC

man/ruby.1 の環境変数 RUBY_THREAD_VM_STACK_SIZE の説明のところでデフォルトのスタックサイズについての記述を修正しています。こんなところに記述があったか。

[d427e3cd6f] Peter Zhu 2021-04-20 23:37:34 UTC

6b978d542704a5614af5e9375c4b31b8d2618652 で .travis.yml が削除されているので README.md のバッジも削除しています。

[fb04c69418] Yusuke Endoh 2021-04-21 04:02:29 UTC

Array#zip は receiver の要素数までしかブロックを yield しないので、引数に渡された要素も receiver の要素数と同じ数までしか参照しないはずですが、引数に Enumerator を渡すと(つまり参照するとカーソル的なものが進む副作用があるものを渡すと)ひとつ余分に読んでしまっていたという不具合を修正しています。 Enumerable#zip は大丈夫で Array#zip の独自の実装だけこういう挙動をしていたようです。 https://github.com/ruby/ruby/pull/4389 [ruby-core:103513] [Bug #17814]

ruby-trunk-changes 2021-04-20

今日は bundler のテストの修正や bundled gems の test-unit の更新などがありました。

[50f17241a3] Kazuhiro NISHIYAMA 2021-04-19 12:37:21 UTC

d953ac11394729ef66a4fb44f2eb1383b0ef2e00 で bundler のテストでホームディレクトリの書き込み権限がないためにテストが失敗するのを回避するため環境変数 XDG_CONFIG_HOME をセットしておく事前準備を spec/bundler/commands/console_spec.rb から spec/bundler/spec_helper.rb に移動して bundler の全てのテストでやっておくようにしています。他にも同じ原因のエラーになるテストがあったみたいです。

[4c68c825d2] Kazuhiro NISHIYAMA 2021-04-20 10:22:15 UTC

gems/bundled_gems の test-unit のバージョンを 3.4.1 に更新しています。

[a31a9c7471] git 2021-04-20 10:22:49 UTC

version.h の日付更新

ruby-trunk-changes 2021-04-19

今日は tool/rbinstall.rb が標準添付ライブラリをインストールする時に生成する gemspec ファイルの spec.files の設定の間違いの修正などがありました。

[5d710d7e41] Hiroshi SHIBATA 2021-04-19 04:44:38 UTC

tool/rbinstall.rb の標準添付ライブラリのインストール時に net-xxx.gemspec のファイル群を生成する時に誤った spec.files を設定してしまっていたので net/xxx 向けに "-" を含む gem 名の時にスキャンするディレクトリを調整する処理を追加しています。 [ruby-core:101724] [Bug #17476]

[39c01aef66] git 2021-04-19 04:45:41 UTC

version.h の日付更新

[93420d34aa] Hiroshi SHIBATA 2021-04-19 09:19:09 UTC

5d710d7e41ef3a9877426c87de121be3bf770e34 の続きで tool/rbinstall.rb でライブラリのディレクトリを特定してからファイル名リストを得た後に lib/xxx/ のようなネストしたディレクトリだけでなく lib/xxx.rb も存在するケース(net/http と optparse)について特別扱いしてファイルを追加する処理を決め打ちで追加しています。

ruby-trunk-changes 2021-04-18

今日は common.mk の revision.h のためのルールの書きかたのリファクタリングがありました。

[6943ffc3d5] Nobuyoshi Nakada 2021-04-18 04:47:43 UTC

common.mk の revision.h の更新のルールで defs/gmake.mk 経由の時にコマンド部分に変数展開を駆使してコメントアウトを入れて実際にはなにもしないようにしていたのを、依存ファイル名の部分に余計な suffix を付けることで実質依存関係自体がなくなる(ターゲットのファイル名が実際には存在しないものになる)ように変更しています。 defs/gmake.mk には revision.h 更新のためのルールがあるので、こっちはオフにしたいみたいですね。

[aae812d65d] git 2021-04-18 04:49:12 UTC

version.h の日付更新

ruby-trunk-changes 2021-04-17

今日はビルドプロセスの修正と bundler のテストがホームディレクトリに書き込み権限がない時に失敗する問題の対応がありました。

[d953ac1139] Kazuhiro NISHIYAMA 2021-04-17 02:54:10 UTC

bundler のテストで環境変数 XDG_CONFIG_HOME の影響で失敗するものがあったのでテスト用のディレクトリを掘って XDG_CONFIG_HOME をそこに設定しておくようにしています。

[ed9ac03917] git 2021-04-17 02:54:39 UTC

version.h の日付更新

[17c3014bb7] Nobuyoshi Nakada 2021-04-17 10:08:53 UTC

configure で Android 向けのビルドかどうか判定するのに AC_COMPILE_IFELSE() を使ってるところで条件を反転させて Android の時に else 側で処理していたのを前に移動しています。

[1f56238032] Nobuyoshi Nakada 2021-04-17 10:14:21 UTC

tool/m4/ の配下の .m4 ファイルのヘッダのコメントを # から dnl に変更しています。また configure.ac で m4_include() してるところで行末に dnl を追加しています。前もきいたことがあったような気がするけど、これなんでだっけ。[追記] m4_include() したところが生成物の configure で余計な改行が入ってたくさん空行ができてしまうのと、# はそのまま configure にも残ってしまうので、それを抑制するための方法でした。[/追記]

ruby-trunk-changes 2021-04-16

今日は Array#intersect? メソッドの新規追加などがありました。

[f1f08f5b69] Peter Zhu 2021-04-15 02:00:34 UTC

gc.c の init_mark_stack() で mark_stack_t::cache_size を 0 にクリアしていましたが直前に MEMZERO() でクリア済みで冗長だったので削除しています。

[6268fdc662] Yusuke Endoh 2021-04-16 02:04:23 UTC

rubyspec の Hash#transform_keys のテストで 31e0382723bfb35cffe3ca485dd0577668cafa07 で修正したブロックで break した場合にキーが消えるという挙動について既存の挙動のテストがあったのですが、3.0 ブランチにはバックポートしたため 3.0.2 以降は新しい挙動になるようにバージョンによる分岐条件を変更しています。 ruby/spec リポジトリに変更を pull req したのでそれをバックポートしていただいた感じです。

[dd3eca6477] git 2021-04-16 02:05:36 UTC

version.h の日付更新

[97cee1cba6] 卜部昌平 2021-04-16 05:41:35 UTC

include/ruby/internal/intern/hash.h の rb_hash_free() の prototype 宣言を削除しています。実際にはそんな関数は過去にも存在しなかったみたいです。

[55d91a096a] Travis Hunter 2018-10-03 19:19:36 UTC

Array#intersect? メソッドを新規追加しています。配列を集合とみなして、receiver と引数に論理積があれば true を、なければ false を返すというメソッドのようです。 [ruby-core:89269] [Feature #15198]

[b6bb4623eb] Nobuyoshi Nakada 2021-04-16 07:12:10 UTC

55d91a096a840aaff1e08a4286c216da56b6e968 で追加された Array#intersect? メソッドについて NEWS に追記しています。チケット参照もこちらにありました。 [ruby-core:89269] [Feature #15198]