42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
# Phase 20.20 — 実装計画(C ABI Export / LLVM)
|
||
|
||
マイルストーン
|
||
- M1: 注釈→MIR JSON 反映(@extern_c)
|
||
- M2: LLVM(IR) C ABI ラッパ生成(プリミティブ i64/i32)
|
||
- M3: C ヘッダー生成(extern "C"、stdint.h)
|
||
- M4: 最小スモーク(.o + .h → C からリンク実行)
|
||
- M5: ドキュメント(設計/制約/使用例)
|
||
|
||
タスク(詳細)
|
||
1) 注釈設計と反映(M1)
|
||
- [ ] @extern_c("c_symbol") の構文/意味論を docs に定義
|
||
- [ ] パーサ→ビルダーで関数メタへ注釈を格納
|
||
- [ ] MIR JSON に `function.flags.extern_c = "c_symbol"` を出力
|
||
|
||
2) C ABI ラッパ生成(M2)
|
||
- [ ] llvmlite builder に `emit_c_abi_function(func_name, c_name)` を追加
|
||
- [ ] calling convention=ccc、unmangled 名、visibility(ELF/Mach‑O/Win)
|
||
- [ ] プリミティブ i64/i32 のみ対応(fail-fast: その他は未対応メッセージ)
|
||
|
||
3) ヘッダー生成(M3)
|
||
- [ ] CHeaderGenerator を実装(MIR JSON→.h 生成)
|
||
- [ ] extern "C"、include guard、stdint.h、プロトタイプ
|
||
- [ ] 型マッピング表(SSOT)に基づき生成(当面: i64→int64_t、i32→int32_t)
|
||
|
||
4) スモーク(M4)
|
||
- [ ] Hakorune → MIR(JSON) → .o(C ABI)→ C からリンク→実行
|
||
- [ ] 代表: `test_add(10,20)=30`、負/ゼロ境界
|
||
|
||
5) ドキュメント(M5)
|
||
- [ ] docs/development/abi/README.md(設計/制約/CLI)
|
||
- [ ] docs/development/abi/types.md(型マッピングSSOT)
|
||
- [ ] tools(最小ビルド/リンク例)
|
||
|
||
ガード/ポリシー
|
||
- 既定 OFF(CLIフラグ: `--emit-c-abi`, `--emit-header`)
|
||
- ENV は原則導入しない。必要時のみ TTL(ドキュ必須)
|
||
- 失敗は Fail‑Fast(ラッパ生成前に診断)
|
||
|
||
見積
|
||
- 実装 + スモーク + ドキュ: 2–3週間(最小構成)
|