GC: config・stat_heap・total_time 系の 5 メソッドを追加#3300
Conversation
実機で登場バージョンを確認し、それぞれ #@SInCE で分岐した。 3.1 で追加: GC.total_time GC にかかった時間の合計 (ナノ秒) GC.measure_total_time 時間計測の有無の取得と設定 GC.measure_total_time= 3.2 で追加: GC.stat_heap サイズプールごとの統計情報 3.4 で追加: GC.config GC の設定の取得と変更 配置は関連するメソッドの近くにした。stat_heap は GC.stat の直後、 total_time と measure_total_time は latest_gc_info の後、config は 設定系の GC.auto_compact= の後に置いている。 measure_total_time と measure_total_time= は getter/setter の対なので 1 つのエントリにまとめた (docs/HowToWriteMethodEntry.md)。 stat_heap の返すハッシュはキー自体がバージョンで異なり (3.2 には heap_tomb_pages が、4.0 には heap_live_slots がある)、値も環境依存なので、 例ではハッシュ全体を出さずキーの一覧と特定の値だけを示した。この形なら 3.2 から 4.0 まで出力が変わらないことを実機で確認している。Hash の inspect 表記が 3.4 で変わる問題も同時に避けられる。 GC.config は 3.4 からのメソッドなので、例の出力は新しい表記のみでよい。 サンプルコードは対象となる全バージョンで実行して出力を確認した。 total_time の返り値だけは環境依存のため、その旨を本文に書いている。 bitclust のデータベース生成を 3.0 / 3.1 / 3.2 / 3.3 / 3.4 / 4.0 で実行して エラーが出ないこと、および登録されるメソッドが 0 / 3 / 4 / 4 / 5 / 5 件と 追加バージョンどおりになることを確認済み。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
レビューしました。since の版分け・出力表記とも正確で、マージ可と考えます。 1 点だけ非ブロッキングの参考情報です。 検証(実機 3.0.7 / 3.1.7 / 3.2.11 / 3.3.12 / 3.4.10 / 4.0.6 + bitclust ミニ描画)
参考(非ブロッキング):
|
znz さんのレビューで、GC.config(hash) を setter として呼んだときの
返り値そのものに版差があるとの指摘があった。実機で確認したところ、
3.4.10: GC.config(rgengc_allow_full_mark: false)
# => {rgengc_allow_full_mark: false} 指定キーのみ
4.0.6 : GC.config(rgengc_allow_full_mark: false)
# => {rgengc_allow_full_mark: false, implementation: "default"} 全体
3.4 では指定したキーだけを含む Hash が、4.0 以降では設定全体を含む Hash が
返る。本文の「変更後の設定を返します」という表現とずれるため、返り値について
一文補足した。
掲載している例はいずれも設定後に改めて p GC.config を呼んでおり出力は
どちらの版でも正しいため、例そのものは変更していない。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
参考情報ありがとうございます。ご指摘のとおり実機でも版差を確認しました。 APPROVED いただいた後で恐縮ですが、返り値についてだけ一文補足しました (dd1e926)。
例そのものは、ご指摘のとおり設定後に改めて 🤖 Generated with Claude Code |
|
補足対応ありがとうございます。dd1e9269b を確認しました。マージ可と考えます。 追記いただいた一文は実機の版差と一致していますし(3.4=指定キーのみ / 4.0 以降=設定全体)、本文の「設定を返します」への言い換えも適切だと思います。 🤖 Generated with Claude Code |
概要
Ruby 4.0 に存在するのにリファレンスに項目が無い [c:GC] のメソッド 5 個を追加しました。
追加したメソッド
Ruby 3.1 で追加:
GC.total_time— GC にかかった時間の合計 (ナノ秒)GC.measure_total_time/GC.measure_total_time=— 時間計測の有無Ruby 3.2 で追加:
GC.stat_heap— サイズプールごとの統計情報Ruby 3.4 で追加:
GC.config— GC の設定の取得と変更登場バージョンの確認
2.7 / 3.0 / 3.1 / 3.2 / 3.3 / 3.4 / 4.0 の実機で
GC.singleton_methods(false)を比較しました。記述の方針
measure_total_timeとmeasure_total_time=は getter/setter の対なので、docs/HowToWriteMethodEntry.mdにならい 1 つのエントリにまとめました。stat_heapはGC.statの直後、total_timeとmeasure_total_timeはlatest_gc_infoの後、configは設定系のGC.auto_compact=の後です。サンプルコードについて
GC.stat_heapが返すハッシュは、キー自体がバージョンによって異なります。値も環境依存なので、例ではハッシュ全体を出さず、キーの一覧と特定の値だけを示しました。
この形なら 3.2 から 4.0 まで出力が変わらないことを実機で確認しています
(Hash の inspect 表記が 3.4 で変わる問題も同時に避けられます)。
GC.configは 3.4 からのメソッドなので、例の出力は新しい表記のみで済みます。GC.total_timeの返り値は環境や実行状況で変わるため、その旨を本文に書きました。検証
rake check_blank_lines/check_indent_in_samplecode/check_single_space_indentbitclust update --markdowntree=manual/apiを 3.0 / 3.1 / 3.2 / 3.3 / 3.4 / 4.0 で実行し、エラーが出ないこと、および登録されるメソッドが 0 / 3 / 4 / 4 / 5 / 5 件と
上記の追加バージョンどおりになることを確認しました。
🤖 Generated with Claude Code