ruby-trunk-changes 2023-12-14

今日は主に拡張ライブラリから別の拡張ライブラリの API を利用するための C API rb_ext_resolve_symbol() の新規追加や String#chomp! の引数チェックの修正(変更)、Hash#compare_by_identity のメモリリーク修正、bundled gems の net-ftp のバージョン更新などがありました。

[c42e4a38e9] Jeremy Evans 2023-12-09 00:39:41 UTC

シンボリックリンクを作成するツール tool/ln_sr.rb で String#chomp! を誤って呼んでたところを String#sub! に修正しています。

[0d53dba7ce] Jeremy Evans 2023-12-13 00:58:20 UTC

c42e4a38e9839fe3380566727304f3fd75a6506a で String#chomp! に 2つ引数を渡してもエラーになってなくて気がつかなかったからということで String#chomp! で receiver が空文字列だと第2引数を渡しても例外になってなかったのを修正しています。

[f8ddcecbdf] Peter Zhu 2023-12-12 15:45:59 UTC

finalizer の実行で RUBY_FREE_ON_EXIT を指定して終了時に全てのメモリを解放するようにしている場合に全オブジェクトの mark と RGenGC の rememberset をクリアしておくようにしています。処理の順序の問題で? 解放済みの領域に触ってしまう可能性があったようです。 [ruby-core:115713] [Bug #20061]

[a4b43e9264] David Rodríguez 2023-12-13 12:03:00 UTC

rubygems に vendoring された net-protocol, resolv, timeout のライセンスファイルを追加しています。先日 net-http のは削除されてたけど vendoring されているぶんは別途必要ってことかな。

[c83a648fc8] tomoya ishida 2023-12-13 17:05:30 UTC

irb のテストで未使用の警告抑制のため? 不要な代入を削除しています。

[0f1c7e3bcb] Takashi Kokubun 2023-12-13 17:36:06 UTC

RJIT で arm64 プラットフォームはサポートしていないので警告を出力してコード生成を抑制するようにしています。 https://github.com/ruby/ruby/pull/9221

[cc86fa8416] Takashi Kokubun 2023-12-13 17:38:18 UTC

拡張ライブラリ io/wait のテストで MinGW でたまに失敗するものを skip するようにしています。

[a3b48ac9ad] Alan Wu 2023-12-13 17:11:49 UTC

Hash#compare_by_identity で元の st_table の解放が漏れていてメモリリークしていたのを修正しています。メモリプロファイラでみつかったとのこと。すばらしい。

[6aa26af683] Samuel Giddins 2023-12-13 13:01:24 UTC

bundler の認識する ruby バージョンに 3.4 を追加しています。

[14c7895c21] Takashi Kokubun 2023-12-13 19:50:35 UTC

NEWS の YJIT の変更についての部分のオプション名の間違いを修正。

[7f4b271a61] Martin Emde 2023-12-13 19:15:51 UTC

bundler の Bundler::Checksum::Store というクラスで Hash に保存する時のキーを Gem::NameTuple から lock_name という文字列に変更しています。別途報告がありましたが NameTuple の hash メソッドの呼び出しで異常終了する不具合があってその回避のためとのこと。 [Bug #20050]

[b266890dab] Takashi Kokubun 2023-12-13 21:29:37 UTC

doc/yjit/yjit.md のコマンドラインオプションのドキュメントの順序の入れ替えと --yjit-disable オプションについて追記しています。 https://github.com/ruby/ruby/pull/9230

[baf2ec2ca8] Samuel Giddins 2023-12-13 11:46:10 UTC

rubygems と bundler で正規表現のマッチに Regexp#=~ のかわりに Regexp#match? を使ったり String#include や String#start_with? などそもそも正規表現を使わない方法に変更する最適化。

[75c40802cb] Akira Matsuda 2023-12-13 17:30:04 UTC

4e6861d3376eb7857d2b0a947c97b6fec8e5bf37 の lib/bundled_gems.rb の require で警告する default gems の検出の再修正で演算子の優先度のため明示的なかっこを追加しています。 [ruby-core:115710] [Bug #20060]

[8b0c626962] Hiroshi SHIBATA 2023-12-12 07:04:49 UTC

require で default gems に警告を出す lib/bundled_gems.rb で bootsnap 経由の時には feature 名を書き換えられてしまって誤った警告が出ることがあるので caller_locations をみて bootsnap 経由の時は警告抑制するようにしています。

[5a0cbc9344] Hiroshi SHIBATA 2023-12-13 07:38:15 UTC

8b0c62696203daba815fa4e6d1c08dc143b3cc04 の追加修正で lib/bundled_gems.rb で bootsnap 経由かどうかの判定に使うバックトレースの範囲を広げています。

[c1f4bfd41f] Martin Emde 2023-12-13 21:46:04 UTC

c424d15cb95f0f5a0db711974f7c76928c9633b1 の bundler の bundle outdated に --json オプションを追加していたのを revert しています。

[d7dad64465] John Hawthorn 2023-12-13 04:57:02 UTC

gc.c の try_move() で struct heap_page::freelist を更新する時に asan_unlock_freelist()/asan_lock_freelist() で一時的に ASAN の unpoisoning していなかったのを修正しています。

[beefce1444] Drew Stevenson 2023-12-01 04:35:33 UTC

rubygems で gemspec ファイルの spec.metadata の複数の URL に同じ URL を書いていると警告するようにしているようです。えーだめなんだそれ。

[74b6e70ef4] Kazuhiro NISHIYAMA 2023-12-14 00:54:23 UTC

NEWS の拡張ライブラリ版の readline の削除についてのエントリの行を折り返しています。

[26145a27f6] Shugo Maeda 2023-12-14 06:51:12 UTC

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

[2c5e2ce2cc] git 2023-12-14 06:51:54 UTC

NEWS の bundled gems のバージョンリストの net-ftp のバージョンも更新しています。

[1b1d5e757e] Shugo Maeda 2023-12-14 07:38:39 UTC

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

[35a6b69f6c] git 2023-12-14 07:39:19 UTC

NEWS の bundled gems のバージョンリストの net-ftp のバージョンも更新しています。

[8a37df8c8b] Satoshi Tagomori 2023-12-07 11:38:53 UTC

dln.c の dln_sym() を外から呼べるように wrap した dln_symbol() という関数を定義しています。handle 引数に NULL を渡すとこの関数内で dlopen(3) もするようにしています。

[e51f9e9f75] Satoshi Tagomori 2023-12-08 06:06:12 UTC

拡張ライブラリ用の新たな C API の rb_ext_resolve_symbol() という関数を追加しています。これは拡張ライブラリの feature 名と関数や変数などの C の symbol の名前を指定してその拡張ライブラリ内の symbol のアドレスを返すようなものです。ある拡張ライブラリから別の拡張ライブラリの関数を呼んだり変数にアクセスしたりしたい時に使うもののようです。このために load.c の拡張ライブラリの dlopen したハンドラの管理するオブジェクトを配列から Hash に変更しています。また dln.c で dlopen(3) に渡すフラグに RTLD_LAZY | RTLD_GLOBAL を追加していますが、これはおそらく省略時のデフォルトの挙動を明示しただけだと思います。 [ruby-core:115388] [Feature #20005] NEWS への追記も必要ですね。