今日は主にメモリ管理でサイズを指定する free 関数の利用を徹底する変更や RGenGC 用の bitmap の操作の最適化などがありました。
[3c100019a4] Jean Boussier 2026-01-30 08:41:27 UTC
91619f0230c0e5a95c796c1bd4f784c151e15614 の ruby_sized_xfree() で指定するサイズが確保時と一致しているかのデバッグの続きで st.c で free(3) を直接使ってたところを st_free_xxx() といった st.c 内部でのユーティリティ関数を導入して ruby_sized_xfree() で解放するようにしてメモリ使用量の管理下に置くようにしています。
[9be01bc70d] Jean Boussier 2026-01-30 12:09:10 UTC
GC の default 実装の rb_gc_impl_realloc() でも old_size に渡されたサイズが確保実装のものと一致するかデバッグビルド時にチェックするようにしています。またこれにより parse.y の PARSER_STRING_RESIZE_CAPA_TERM() マクロを修正しています。
[1298f9ac1a] Max Bernstein 2026-01-30 17:29:15 UTC
ZJIT の super 呼び出し時の最適化を拡張しています。 https://github.com/ruby/ruby/pull/16004
[d7553015cc] Benoit Daloze 2026-01-29 19:39:23 UTC
標準添付ライブラリとしても prism の ripper 互換対応の続き。Prism::Translator::Ripper.new の第1引数に to_str で文字列に変換できるオブジェクトも受け付けるようにしています。
[737809bf25] Peter Zhu 2026-01-30 22:05:11 UTC
ARGF の rdoc 用コメントのリンク切れの修正。
[6327f59307] John Hawthorn 2026-01-20 18:47:21 UTC
GC の default 実装で RGenGC のための世代管理のための bitmap でオブジェクトの age を記録するための 2 bits を連続した領域を使っていたのを隣接する word 上の同じ位置分けてに配置するようにレイアウトを変更しています。なるほど。このほうが将来的に SIMD 命令を使う最適化の可能性があるとかそういう感じでしょうか。
[e8d8f50fa8] John Hawthorn 2026-01-20 19:55:36 UTC
GC の default 実装で RGEnGC 用の age や WB-unprotected を管理する bitmap のビットフラグを落とす処理を word 単位でまとめて処理するように最適化しています。
[957887b340] cui 2026-01-31 04:33:44 UTC
ZJIT の Rust 実装のコメントの typo 修正。 https://github.com/ruby/ruby/pull/16020
[242850727c] git 2026-01-31 06:59:41 UTC
gems/bundled_gems と NEWS の bundled gems のバージョンリストの rbs, repl_type_completor のバージョンを更新しています。
[801cdfefe2] Nobuyoshi Nakada 2025-11-30 07:56:44 UTC
jit.c の rb_optimized_call() という関数の第1引数が VALUE* と定義されていたのを VALUE に修正しています。 https://github.com/ruby/ruby/pull/6691
[050c00141c] Jean Boussier 2026-01-30 08:52:29 UTC
SIZED_FREE() および SIZED_FREE_N() というマクロを導入して、これを利用することで variable.c で xfree() を使ってメモリ解放していたところを ruby_sized_xfree() を利用するように変更しています。
[0584f9fb09] Jean Boussier 2026-01-30 16:00:23 UTC
050c00141c7e8fdded5355b4c31e971ae21403d0 と同様に gc.c でも SIZED_FREE()/SIZED_FREE_N() マクロを利用してサイズを指定したメモリ解放するようにしています。
[bcbc6ed571] Jean Boussier 2026-01-31 04:28:52 UTC
050c00141c7e8fdded5355b4c31e971ae21403d0 と同様に bignum.c でも SIZED_FREE()/SIZED_FREE_N() マクロを利用してサイズを指定したメモリ解放するようにしています。
[a7d4a9df03] Jean Boussier 2026-01-31 04:43:49 UTC
050c00141c7e8fdded5355b4c31e971ae21403d0 と同様に class.c でも SIZED_FREE()/SIZED_FREE_N() マクロを利用してサイズを指定したメモリ解放するようにしています。
[54df6cddd7] Jean Boussier 2026-01-31 05:11:47 UTC
050c00141c7e8fdded5355b4c31e971ae21403d0 と同様に concurrent_set.c でも SIZED_FREE()/SIZED_FREE_N() マクロを利用してサイズを指定したメモリ解放するようにしています。
[db52e98520] Jean Boussier 2026-01-31 06:03:17 UTC
050c00141c7e8fdded5355b4c31e971ae21403d0 と同様に compile.c でも SIZED_FREE()/SIZED_FREE_N() マクロを利用してサイズを指定したメモリ解放するようにしています。
[bd6fa7f5cc] Jean Boussier 2026-01-31 07:53:48 UTC
プロセス起動時に objspace の初期化前のメモリ確保で ruby_mimmalloc() や ruby_mimcalloc() といった関数を使って確保したメモリの解放を ruby_xfree() で行なってしまっていたところを、対応する ruby_mimfree() で解放するように管理を強化しています。
[eae7300a09] Nobuyoshi Nakada 2025-11-30 07:53:59 UTC
組み込みの T_TYPEDDATA 型オブジェクトの VM と Proc の VALUE から構造体を取り出す GetCoreDataFromValue() マクロで rb_data_type_t の型チェックが可能にするため引数に型情報を渡すようにしています。まだチェック自体は実装してなさそう?
[7ef8c470d2] Nobuyoshi Nakada 2025-11-30 08:40:41 UTC
eae7300a09a4b9bd87045b313dcdd464d12dd683 で GetCoreDataFromValue() の定義を preprocessor 分岐でチェック有無を分けていたものの常にチェックなしになっていたので RUBY_CORE_DATA_TYPE_CHECK マクロおよび RUBY_DEBUG マクロの指定を考慮するように変更しています。