1.3 KiB
1.3 KiB
Plan — Phase 20.22(String/Array C‑ABI / MVP)
マイルストーン
- M1: string → C コピー API(hako_string_to_c_copy)
- M2: array → C コピー API(HakoArray / hako_array_to_c_copy)
- M3: ヘッダー生成拡張(typedef/プロトタイプ)
- M4: スモーク(C リンク実行・負例)
タスク詳細
- String copy‑out
- 実装: 内部 StringBox から bytes を複製、末尾 NUL を付与
- 戻り: char*(caller owns;
hako_free必須) - 失敗: NULL 返し+安定タグ(stderr)
- Array copy‑out
- 実装: 配列メタ(len)を読み、
HakoArrayI64{data,length}を複製 - 戻り: HakoArrayI64*(caller owns;
hako_mem_free(data)とhako_mem_free(self)必須) - 失敗: NULL 返し+安定タグ
- ヘッダ生成
typedef struct { int64_t* data; size_t length; } HakoArrayI64;- プロトタイプを c_header_gen.py に追加
- スモーク
- C からリンク: 文字列/配列を受け取り、値確認→
hako_free - 負例: 空文字列/len=0/NULL 入力/巨大サイズ(Fail‑Fast)
リスク/対策
- 二重解放 →
hako_freeの多重呼び出し検知(Fail) - 競合 → Phase 20.21 の retain/release ルールに従う
- ABI 拡張 → _copy と _borrow を命名で分離(本フェーズは _copy のみ)