libperl-macrogen 0.1.13

Generate Rust FFI bindings from C macro functions in Perl headers
Documentation
{
   "comment": [
      "2026-08-19 の Phase 6 全範囲 baseline 採取 (podman legs) から生成。",
      "known_failures は green 化フェーズ (実装計画 Phase 9) で解消し次第",
      "削除する (解消すると XPASS 警告が出る)。bounds は実測 + headroom。",
      "実測 counts: threaded fn=1326 unresolved=33 / non-threaded fn=1271 unresolved=78",
      "2026-08-22: add_decl (apidoc data 1.4, MUTABLE_*/AvARRAY/AvFILLp/Pad* 補正)",
      "導入後の再実測で Cv 一族 6 + HvFILL を known_failures から削除 (以後 enforced)、",
      "bounds を再較正 (unresolved/suppressed = 実測x1.2, fn min = 実測x0.9)。",
      "2026-08-22 (2): token 注釈補完 (apidoc data 1.5, Xop*/Bhk* の which) で",
      "OP_CLASS が全 leg 復活 → known_failures から削除 (enforced 化)、bounds 再較正。",
      "2026-08-22 (3): 隣接文字列リテラル連結のパーサ拡張 (STR_WITH_LEN の",
      "(\"\" s \"\") 対応) で newSVpvs 一族が全 leg 復活 → known_failures から削除、",
      "bounds 再較正。",
      "2026-08-22 (5): 下流実走再評価に基づく v5.20/v5.22.patches.json 新設",
      "(Perl_atof / 旧ハッシュ inline 群 / 残渣クラスの理由付き skip) と",
      "Padname* の * 抜け override (common, apidoc data 1.12) を反映して bounds 再較正。",
      "5.20/5.22 の下流 libperl-sys ビルドは green (Phase 9 の当初要件完了)。",
      "実測 counts (2026-08-22 (5)): threaded fn=1448 unresolved=45 / non-threaded fn=1392 unresolved=92",
      "2026-08-29: 0.1.12 ラウンド (apidoc data 1.15) で GvALIASED_SV_{on,off} の",
      "skip 2 件を追加 (gp_flags bitfield アクセサが代入 LHS になる E0067、5.22 のみ)。",
      "suppressed 20 → 22 (max 24 内)。",
      "2026-08-29 (2): 5.22-non-threaded downstream 初実走で S__is_utf8_char_slow の",
      "E0381 (未初期化 out-param) が発覚 → skip 追加 (non-threaded のみ生成される関数)。",
      "suppressed は nt で 23 (max 24 内)。",
      "実測 counts (2026-08-29/30 検証スイープ): threaded fn=1446 sup=22 unres=45 / non-threaded fn=1389 sup=23 unres=92。",
      "bounds 再較正 (unresolved/suppressed = 実測x1.2, fn min = 実測x0.9)。",
      "2026-08-30: out-param zeroed 初期化 (local_usage, GH #23) で",
      "S__is_utf8_char_slow の E0381 が解消 → skip を削除 (apidoc data 1.16) し",
      "non-threaded の must_generate_extra で enforced 化。",
      "実測 (2026-08-30): non-threaded fn=1390 sup=22 unres=92。"
   ],
   "must_not_generate": [
      "Perl_CvDEPTH",
      "Perl_cx_topblock",
      "Perl_SvREFCNT_dec"
   ],
   "must_not_generate_comment": [
      "Perl_CvDEPTH: embed.fnc への登場は 5.32 から。5.20〜5.30 の CvDEPTH は S_CvDEPTHp 経由のマクロのみ (そちらは生成 PASS)",
      "Perl_cx_topblock: この名前 (perl_prefix) は 5.32 から。 5.24〜5.30 は S_cx_topblock inline + PERL_CORE ガードの cx_topblock マクロ、5.20/5.22 には機能自体が無い",
      "Perl_SvREFCNT_dec: この名前は 5.32 の inline 関数改名 (S_SvREFCNT_dec → Perl_SvREFCNT_dec) から。<=5.30 に存在するのは S_SvREFCNT_dec (inline) と SvREFCNT_dec (マクロ)"
   ],
   "non-threaded": {
      "must_generate_extra": [
         "S__is_utf8_char_slow"
      ],
      "bounds": {
         "codegen_suppressed_max": 27,
         "generated_fn_min": 1250,
         "unresolved_names_max": 110
      }
   },
   "threaded": {
      "bounds": {
         "codegen_suppressed_max": 26,
         "generated_fn_min": 1301,
         "unresolved_names_max": 54
      }
   }
}