ruby-trunk-changes 2023-09-16

今日は主に Range#overlap メソッドの新規追加、Process.wamup から malloc_trim(3) を呼び出す変更などがありました。

[efe2822708] Jean Boussier 2023-09-15 14:22:09 UTC

アプリケーションの初期化が完了したことを伝える Process.warmup で malloc_trim() という関数が呼べる環境なら呼ぶようにしています。名前からして不要なメモリ領域を返却するみたいなものかな? Linux 環境にあるみたいですね。

[a1dc1a3de9] Aaron Patterson 2023-09-11 21:11:46 UTC

YJIT が生成したコードから rubyソースコードの位置情報を得ようとして異常終了するのを避けるために明示的に行番号に 0 をセットするようにしているようです。

[4d86d932fd] Adam Hess 2023-09-15 15:54:37 UTC

rb_objspace_free() で page の解放をする時に解放するたびに decrement される変数をそのままループの上限に使ってしまっていたため完全に解放されていなかったのを修正しています。

[c423d6e0e4] Samuel Giddins 2023-09-15 02:34:15 UTC

bundler の Bundler::Setting でキーのキャッシュをするように最適化しています。

[e50b7bf784] Burdette Lamar 2023-09-15 17:59:48 UTC

doc/globals.rdoc の全体的な書きなおしをしています。 https://github.com/ruby/ruby/pull/8445

[0996cf5593] Alan Wu 2023-09-15 20:15:15 UTC

YJIT の Rust 実装で警告の除去。

[2cf5fe58fb] Samuel Giddins 2023-09-15 02:14:08 UTC

bundler で不要な空の Hash オブジェクトの生成を抑制する最適化。

[010017d86d] Martin Emde 2023-09-15 02:33:22 UTC

bundler の不要なオブジェクト生成を抑制する最適化。

[7cec7d14c3] Alan Wu 2023-09-15 23:03:48 UTC

YJIT の invokeblock 命令の実装で GC.compact によるオブジェクトの移動への対応が不完全だったところがあったのを修正しているようです。

[43ab2acf82] Takashi Kokubun 2023-09-15 23:51:42 UTC

tool/sync_default_gems.rb の同期時に無視するファイルのパターンにまた yarp 独自のファイル群にマッチする正規表現を追加しています。

[1fbfd06628] git 2023-09-16 00:34:07 UTC

NEWS の default gems のバージョンリストの yarp のバージョンを更新しています。

[9aeb6e72db] Takashi Kokubun 2023-09-16 01:41:00 UTC

YJIT の Rust 実装で JIT コンパイル時に不要な配列の確保を抑制する最適化をしているようです。 https://github.com/ruby/ruby/pull/8446

[67dedf8cf6] Nobuyoshi Nakada 2023-09-16 02:56:50 UTC

43ab2acf8242c580b1ef5d644ea94d48669d4869 の再修正。 tool/sync_default_gems.rb に yarp 専用の無視ファイルリストパターンの正規表現を追加してたのをやめて pickup_files でファイルリストから無視するディレクトリ配下のものを除外する処理を追加して代替としています。トップレベルのファイルの追加はそもそも全体的に禁止されているので不要だった模様。

[7d08dbd015] Kouhei Yanagita 2023-09-16 03:10:09 UTC

始点または終点の指定がない beginless range/endless range に対して Range#bsearch をした時にまず条件を満たす位置を 2の累乗でオフセットを増やしつつ探してからその始点/終端までのあいだを二分探索するという実装でしたが、2の累乗でオフセット増やしつつ探索してたひとつ前のステップまでは条件を満たしてなかったのでそこからの範囲のみ探索すればいいので範囲を絞るように最適化しています。 https://github.com/ruby/ruby/pull/8438

[e9b503f1bb] Shouichi Kamiya 2023-08-18 01:30:57 UTC

2つの Range オブジェクトの範囲に重複があるかどうかをチェックする Range#overlap? メソッドを新規追加しています。 [ruby-core:114399] [Feature #19839]

[c3ef7a528b] Jean Boussier 2023-09-15 21:08:59 UTC

efe2822708d62bfe3ba858da526e6ef7d4724959malloc_trim(3) の呼び出し追加に関連して gc.c の malloc 用のヘッダを #include するための preprocessor 分岐に HAVE_MALLOC_TRIM のチェックを追加しています。 WASM 向けのビルドがエラーになってたみたいです。

[b4213a73b8] Nobuyoshi Nakada 2023-09-14 13:45:42 UTC

e9b503f1bb9692eda1d1f55f62c19d861b88a0d5 で追加した Range#overlap? メソッドの実装は Range#cover? メソッドの実装を利用するシンプルな実装になっていましたが展開して独自にロジックを実装するようにしています。高速化のためみたいです。[追記]空の Range の時の不具合修正も含まれているそうでした。[/追記] https://github.com/ruby/ruby/pull/8242 [ruby-core:114399] [Feature #19839]

[a8afedce6d] Chad Schroeder 2023-09-16 12:48:26 UTC

irbhistory ファイルの保存処理で並列実行対応のため HISTORY のコピーを作ってから保存処理するようにしているようです。 https://github.com/ruby/irb/pull/651

[209d5f8482] Peter Zhu 2023-09-16 13:08:55 UTC

efe2822708d62bfe3ba858da526e6ef7d4724959 の Process.warmup の実装から malloc_trim() の呼び出しを追加した対応の続きで malloc_trim() が利用可能な時にも malloc.h を #include するように修正しています。 emscripten 向けの修正とのこと。

[e6ce490337] Nobuyoshi Nakada 2023-09-16 02:35:36 UTC

parse.y のコメントの桁をそろえる整形。

[e779465f19] Nobuyoshi Nakada 2023-09-16 02:36:02 UTC

Range#cover? の rdoc 用コメントの整形。