ruby-trunk-changes 2023-12-07

今日は主に GC::Profiler.raw_data の不具合修正、rubygems と bundler の更新、拡張ライブラリ socket の名前解決の glibc の不具合回避のための修正などがありました。

[dab5a4b61a] BurdetteLamar 2023-11-16 21:46:01 UTC

拡張ライブラリ bigdecimalBigDecimal のメソッドリストに json で拡張されるメソッドについても追記しています。

[4a7151a8e4] Peter Zhu 2023-12-06 15:16:58 UTC

Object Shapes のための赤黒木の実装の RUBY_ASSERT() による assertion を if 分の分岐の外に出して共通化しています。

[64ab04da6a] Peter Zhu 2023-12-06 16:02:17 UTC

拡張ライブラリ bigdecimal の rdoc 用コメントの dab5a4b61aa43bd67221e89df9de67de0e3a97f6 で追記したところに拡張ライブラリ json で追加される旨を追記しています。

[12e3b07455] Peter Zhu 2023-12-06 12:37:57 UTC

Object Shapes の実装でインスタンス変数を Object#remove_instance_variable で削除した時に再度 slot へのインスタンス変数の埋め込みが可能になったら埋め込むようにしているようです。

[b1b78c4f9f] Eric Mueller 2023-11-29 02:13:03 UTC

rubygems の実装に Gem::CIDetector という Module を追加しています。このコミットでは利用いている箇所はまだないですが各種 CI 用のサービス(GitHub Actions や Travis-CI など)での実行を検出する環境変数での判定をまとめたものみたいですね。

[a6c912a80d] Eric Mueller 2023-11-29 02:41:22 UTC

rubygemsb1b78c4f9ff0ff3a2570980b0012893eb03fc597 で導入した Gem::CIDetector を利用して CI サービスの判定をするようにリファクタリングしています。

[6fd3b358ff] Eric Mueller 2023-12-02 04:20:27 UTC

bundler にも b1b78c4f9ff0ff3a2570980b0012893eb03fc597 と同様に Bundler::CIDetector というモジュールを追加しています。

[9336bbb0b2] Eric Mueller 2023-12-02 04:23:18 UTC

そして bundler でも CI の判定を 6fd3b358ff1e1745036286be7007cd0d6ebdcdd7 で導入した Bundler::CIDetector を利用するようにリファクタリングしています。

[9d9865d9bc] Alan Wu 2023-12-06 20:20:05 UTC

YJIT の Rust 実装でメソッド assertion を追加しています。 compaction 対応漏れの不具合を早期に発見するためみたいです。

[5078aa825c] hogelog 2023-12-06 14:19:38 UTC

NEWS に Range#overlap? メソッドの追加について追記しています。

[4f213ea1ba] Soutaro Matsumoto 2023-12-07 01:37:00 UTC

GC::Profiler.raw_data の実装で gc_info_decode() に objspace に NULL を渡していて SEGV していたのを修正しています。これメソッド呼ぶと確定で SEGV なのでよくすり抜けてたな。と思いましたが raw_data の実装自体は 2014年から変わりないですが呼ばれている gc_info_decode() のほうが今年 2091bf94931bddcf23b196fc8fe108ebd7ec1648 で objspace に常に依存するようになったのでそこで degrade したようです。なるほどそれでは SEGV は一応 3.3 からですね(3.2 以前でも潜在的な問題ではありますが)。 https://github.com/ruby/ruby/pull/9122

[214f6d6598] Hiroshi SHIBATA 2023-12-07 01:56:34 UTC

bundler の lib/bundler/rubygems_integration.rb から Kernel#require を再定義する際のメソッドの差し替えの処理を lib/bundled_gems.rb に移動しています。差し替え自体 ::Gem::BUNDLED_GEMS が定義されている(つまり lib/bundled_gems.rb が読み込めてる)時の実行なので安全に移動できるようです。

[1ace218690] Yusuke Endoh 2023-12-07 03:11:19 UTC

NEWS に 1fd976db21191307fc1262631f5da20c8ce970fd で bundle exec ruby で起動している時に default gems の require の警告が効かないと注意書きを追記したのが d411d8f5fe80b9c8f741ee03f91a670d5620917c で修正されたので削っています。

[d89280e8bf] Dustin Brown 2023-12-07 03:25:29 UTC

Regexp オブジェクトの複製処理時に struct RBasic::flags の KCODE_FIXED と REG_ENCODING_NONE という文字コードに関するフラグ? をコピーするようにしています。マルチバイト文字を含む正規表現オブジェクトを元に Regexp.new で複製を作った時に正常にマッチしなくなる不具合があったようです。 [ruby-core:115588] [Bug #20039]

[aabf2ce181] Vít Ondruch 2023-11-28 14:38:51 UTC

rubygems で標準入出力、標準エラー出力を定数 STDIN/STDOUT/STDERR を参照していたのを特殊なグローバル変数 $stdout/$stdout/$stderr を利用するように変更しています。

[0f3f907e17] David Rodríguez 2023-12-01 11:52:47 UTC

rubygems の gem prinstine のテストに assertion を追加しています。

[33bd956257] David Rodríguez 2023-12-01 11:53:43 UTC

rubygems環境変数 GEM_HOME がない時の fallback の挙動の実装をリファクタリング? しています。

[7d32830b8c] Ellen Marie Dash 2023-12-01 01:20:38 UTC

rubygems の gem install の --build-root オプションを --user-install と併用できない(自動的に user install をオフにする)ように変更しています。

[d97479f9c9] Andrew Kane 2023-01-14 04:27:05 UTC

標準添付ライブラリ open-uriURI.open のオプションに :max_redirects を追加して redirect を辿る回数の上限を指定できるようにしています。

[41c00bc97e] Andrew Kane 2023-11-09 23:24:39 UTC

d97479f9c966bd2c9d52c8be28aca9431760c610 に続いて標準添付ライブラリ open-uriURI.open のオプション :max_redirects のデフォルト値を 64 にしています。また上限に達した時の発生させる例外を OpenURI::TooManyRedirects という専用の例外クラスにしています。

[ae76c8a11e] Takashi Kokubun 2023-12-07 07:14:59 UTC

ブロック内でブロックパラメーターを暗黙に参照する it という特殊変数? を追加するための準備としてブロック内で it というメソッドを無引数でかっこなしで呼び出してる場合に警告を出力するようにしています。 https://github.com/ruby/ruby/pull/9152 [ruby-core:109707] [Feature #18980]

[a41d6c825c] Hiroshi SHIBATA 2023-12-07 07:21:55 UTC

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

[3bf1c48759] git 2023-12-07 07:23:08 UTC

NEWS の default gems のバージョンリストの open-uri のバージョンも更新しています。

[5458252bb0] Takashi Kokubun 2023-12-07 07:44:01 UTC

ae76c8a11e707176a53c84016256646308f36207 のブロック内での "it" の呼び出しに対する警告を deprecated カテゴリの警告にしています。

[680be886f4] Takashi Kokubun 2023-12-07 07:57:43 UTC

5458252bb0edcd498e6bd4bea57fd7500bacd54c の続きで parse.y 内で deprecated 警告の出力のために UNIVERSAL_PARSER が定義されている時に rb_warn_deprecated() マクロの定義を追加しています。

[c6eb355e04] Takashi Kokubun 2023-12-07 08:02:52 UTC

5458252bb0edcd498e6bd4bea57fd7500bacd54c および 680be886f4d807073f24beed36648ef76219e4f7 の it の警告を deprecated 警告にする変更を revert しています。

[d2ba8ea54a] KJ Tsanaktsidis 2023-12-07 08:55:15 UTC

拡張ライブラリ socket で getaddrinfo(3) の呼び出しのフラグに AI_ADDRCONFIG を立てるようにしています。マシンに IPv4/IPv6 のアドレスが割り当てられていなくて接続不能な時に名前解決を省くためのフラグとのこと。 https://github.com/ruby/ruby/pull/7295 [ruby-core:110870] [Bug #19144]

[abf192eb16] Tanaka Akira 2023-12-07 09:28:47 UTC

d2ba8ea54a4089959afdeecdd963e3c4ff391748 で追加した拡張ライブラリ socket のテストを Process.fork がない環境(Windows) では skip するようにしていましたが現状常に skip するようにしています。テストがあまりに複雑なのでとのこと。 [ruby-core:110870] [Bug #19144]

[eaead94d04] Kazuhiro NISHIYAMA 2023-12-07 09:44:05 UTC

NEWS のチケットのリンクのための footnote を番号順にソートしなおしています。

[bc6a0ede4a] Hiroshi SHIBATA 2023-12-07 09:56:23 UTC

gems/bundled_gems の net-ftp のバージョンを 0.3.0 に更新しています。

[2e9329e7a2] git 2023-12-07 09:57:01 UTC

NEWS の default gems のバージョンリストに net-ftp の項目を追加しています。

[d69af4788a] Matheus Richard 2023-12-07 10:49:55 UTC

拡張ライブラリ io/console の IO#cursor に rdoc 用コメントを追加しています。

[30a1ccbc5c] Yusuke Endoh 2023-12-07 10:50:55 UTC

NEWS の Socket.getaddrinfo が割り込み可能になった変更について Implementation improvements のセクションから Implementation improvements のセクションに移動しています。

[071df40495] yui-knk 2023-12-07 08:26:15 UTC

同梱している Lrama を v0.5.12 に更新しています。