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 に更新しています。