Skip to content

バージョンバッジ算出の誤りを {: since=""} / {: since="X"} で補正する#3256

Merged
znz merged 3 commits into
rurema:masterfrom
znz:c-since-badge-corrections
Jul 22, 2026
Merged

バージョンバッジ算出の誤りを {: since=""} / {: since="X"} で補正する#3256
znz merged 3 commits into
rurema:masterfrom
znz:c-since-badge-corrections

Conversation

@znz

@znz znz commented Jul 21, 2026

Copy link
Copy Markdown
Member

概要

バージョンバッジの誤算出 — メソッド自体は古くからあるのにリファレンスへの記載が後から追加され、記載時期が初出として表示されるケース(rurema/bitclust#132 で報告の Array#collect「Ruby 2.5.0 から」問題)— を、rurema/bitclust#274 で解禁された {: since=""}(不明の明示=バッジ非表示)と {: since="X"}(真の版の明示)で一括補正します。3 コミット構成です。

  1. lock 更新: bitclust を a1f45b3({: since=""} を「明示的に不明」= バッジ非表示として解禁する bitclust#274 マージ後の master)へ
  2. 要約ドキュメント: 属性表に since="" の行と空値の説明を追記
  3. 一括補正: 7 ファイル・95 属性行(59 エントリ)
    • since="" × 41 エントリ: ruby v1_8_7 のソースで定義を確認し、かつ現在の本番 DB で誤ったバッジが算出されているもの(例: Array#collect/map = array.c:3803/3805 で現表示「Ruby 2.5.0 から」。Enumerable 経由で 1.8 から呼べた Array#any? も C 再定義の 2.2 ではなくこちらに分類)
    • since="1.9.1" × 11: v1_9_1_0 で確認(Dir.exists?Symbol#matchEnumerator::Yielder#<</#yield・ARGF の encoding 系ほか。現表示 1.9.3〜2.5.0 を真値へ)
    • since="1.9.3" × 7: ARGF の write 系(1.9.1/1.9.2 には無いことを確認。現表示 2.0.0)
    • 意図的に対象外: Array#filter(2.6 追加)・Fixnum#magnitude(1.9 系)・ARGF.class#inspect(2.0 の alias 追加)= 同じエントリ内でも算出値が正しい別名には付けず、名前単位で補正
    • 付けずに済ませたもの: String#each_byte/each_char/each_line/linesHash#merge!Range#include?GC.stress=$stderrFixnum#abs は、1.8.7 の凍結 DB に別名グループの一員として名前が記録されている(例: $stderr$deferr エントリの names=deferr,stderr)ため算出が既に floor = バッジ非表示と判定しており、明示は冗長

検証

  • 手法: 全 10 凍結版 DB のエントリ初出一覧 × ruby ソース tarball(v1_8_7〜v2_7_0 + v1_9_1_0/v1_9_2_0)の突き合わせで候補 976 件 → ソースで確証が取れたもののみ採用(静的 grep で確認できないものは保守的に見送り)。さらに本番 DB の算出値(since_by_name)と全件突き合わせ、実際に誤バッジが表示されているものだけに絞り込み(ファイル一覧ベースの初出判定では別名レベルの存在が見えず、既に floor 判定で非表示のものが 9 エントリ混じっていたため除外)
  • ビルド: 本ブランチの manual/api 全体を新パーサで DB 化し ParseError 0。エントリ実測で collect=,map=(空)・select= のみ(filter= 無し)・to_s= のみ・match=1.9.1$stderr 空などを確認
  • bitclust methodsince を適用しても明示値が上書きされないこと、描画で Array#collect = バッジ 0・Symbol#match = 「Ruby 1.9.1 から」になることを確認

refs rurema/bitclust#132

🤖 Generated with Claude Code

znz and others added 3 commits July 22, 2026 08:30
{: since=""}(明示的に不明=バッジ非表示)と {: since="X"} を原稿で使う
ための更新。rurema/bitclust#274 マージ後の master を指す。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
rurema/bitclust#274 で解禁された {: since=""}(明示的に不明=バッジ非表示)
を属性表に追加し、値の説明にも空値の意味を補う。メソッド自体は昔から
あるのに記載が後から追加され、自動算出が記載時期を初出として誤表示する
場合の抑止用(例: Array#collect は 2.4.0 のドキュメント凍結後に記載が
追加されたため「Ruby 2.5.0 から」と誤算出されていた)。

refs rurema/bitclust#132

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bitclust#132: 全10凍結版の DB 初出一覧と当時の ruby ソース(v1_8_7〜
v2_7_0 + v1_9_1_0/v1_9_2_0)の突き合わせで、メソッド自体は古くから
あるのに記載が後から追加されて算出バッジが誤っているエントリを補正する。
最終リストは本番 DB の算出値(since_by_name)との突き合わせで確定した
(59 エントリ・95 属性行):

- since="" — ruby v1_8_7 のソースで定義を確認したもの。現在
  「Ruby 1.9.3 から」「Ruby 2.5.0 から」等と誤表示されているバッジを
  抑止する(Enumerable 経由で 1.8 から呼べた Array#any? を含む)
- since="1.9.1" — v1_9_1_0 で存在を確認したもの(現表示 1.9.3〜2.5.0)
- since="1.9.3" — 1.9.1/1.9.2 に無く 1.9.3 で確認した ARGF の write 系

対象外(算出値が既に正しい): Array#filter(2.6)・ARGF.class#inspect
(2.0 の alias 追加)など。また String#each_byte 系・Hash#merge!・
Range#include?・GC.stress=・$stderr・Fixnum#abs は、1.8.7 の DB に
別名グループの一員として名前が記録されており算出が既に floor(バッジ
非表示)と判定しているため、付けずに済ませた。

refs rurema/bitclust#132

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@znz
znz force-pushed the c-since-badge-corrections branch from ccdf652 to 09ff9a6 Compare July 21, 2026 23:32
@znz
znz merged commit 03d0755 into rurema:master Jul 22, 2026
9 checks passed
@znz
znz deleted the c-since-badge-corrections branch July 22, 2026 00:44
znz added a commit that referenced this pull request Jul 24, 2026
key?/include?/member?/each/each_pair/each_key/each_value/keys/values/
size/length は Ruby 2.1 で、inspect は 2.0.0 で導入されたが、
ドキュメントの追加が 3.0 世代だったため、凍結 DB(2.7.0 以前)には
エントリが無く、since バッジが「Ruby 3.0 から」と誤表示されていた
(tools/method-versions/mismatch-report.md の db-late 分類)。
凍結 DB は再生成されないため、明示 {: since=} で補正する(#3256 と
同方式)。値は実測(tools/method-versions/matrix.tsv)による。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
znz added a commit that referenced this pull request Jul 24, 2026
メソッド単位 since バッジは DB 上の初出版から自動計算されるため、
ドキュメント追加が実際の導入より遅いと、バッジが実際より遅い版を
表示する(tools/method-versions/mismatch-report.md の db-late 分類)。
凍結 DB(2.7.0 以前)は再生成されないため、#3256 と同方式で明示
{: since=} 属性により補正する。

- {: since=""}(バッジ非表示)…昔から public な継承メソッドで呼び出せた
  エントリ(Array#all?/max、Range#to_a、各クラスの inspect/==/hash 等)。
  #3256 の collect/any? と同じ方針
- 実値付き …クラス自体の導入(Complex/Rational=1.9.1 等)や機能新設
  (positive?/negative?=2.3.0、deconstruct=2.7.0 等)がゲートになるもの。
  全値を旧版 Ruby(all-ruby)実機で呼び出し確認済み

トリアージで修正不要と確定した 8 件(private 継承の誤検出 3・既存
ゲートの帰結 2・Complex#<=> の undef 1・要人間判断 2)と、
explicit-wrong 4 件が誤検出だった訂正を mismatch-report.md に追記。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant