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=1356 unresolved=36 / non-threaded fn=1288 unresolved=87",
      "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 再較正。",
      "実測 counts (2026-08-22 (3)): threaded fn=1489 unresolved=44 / non-threaded fn=1420 unresolved=95",
      "2026-08-26: SvREFCNT_dec/Padlist 系の auto-generated skip 6 件を実走再評価で解除",
      "(apidoc data 1.14, doc/plan/unskip-refcnt-padlist-5.28-5.30.md)。復活分を",
      "must_generate_extra で enforced 化 (PAD_SET_CUR は threaded のみ —",
      "non-threaded は PAD_SET_CUR_NOSAVE が unresolved で従来から不生成)。",
      "実測 counts (2026-08-26): threaded fn=1505 unresolved=46 / non-threaded fn=1429 unresolved=102",
      "2026-08-29: 0.1.12 ラウンド (apidoc data 1.15) で Padname/Padnamelist 系の",
      "auto-generated skip 8 件を解除 (5.26 での green 実証と同根 = data 1.11 の",
      "common override で解消済みだった)。復活分 5 件を must_generate_extra に追加。",
      "2026-08-29 補足: 「PAD_SET_CUR は threaded のみ」は smoke harness の制限",
      "(threaded スナップショット samples/bindings.rs に PL_comppad グローバルが",
      "無い) による。downstream の実 bindgen bindings では non-threaded でも",
      "PAD_SET_CUR は生成される (downstream 産物で確認)。",
      "実測 counts (2026-08-29/30 検証スイープ): threaded fn=1520 sup=33 unres=46 / non-threaded fn=1443 sup=33 unres=104。",
      "bounds 再較正 (unresolved/suppressed = 実測x1.2, fn min = 実測x0.9)。"
   ],
   "must_generate_extra": [
      "S_SvREFCNT_dec",
      "S_SvREFCNT_dec_NN",
      "SvREFCNT_dec",
      "PadlistARRAY",
      "PadlistMAX",
      "PadnamePV",
      "PadnameLEN",
      "PadnameTYPE",
      "PadnamelistARRAY",
      "PadnamelistMAX"
   ],
   "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 (マクロ) が正 (must_generate_extra で enforced)。Perl_ 名が要る下流は libperl-sys 側の compat shim で吸収する"
   ],
   "non-threaded": {
      "bounds": {
         "codegen_suppressed_max": 39,
         "generated_fn_min": 1298,
         "unresolved_names_max": 124
      }
   },
   "threaded": {
      "must_generate_extra": [
         "PAD_SET_CUR"
      ],
      "bounds": {
         "codegen_suppressed_max": 39,
         "generated_fn_min": 1368,
         "unresolved_names_max": 55
      }
   }
}