Files
hakorune/docs/private/roadmap/phases/phase-15.76/README.md

199 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 15.76 - extern_c & Frozen Toolchain
**期間**: 2025-10-14 - 2025-11-084週間
**状態**: 🚧 計画中ChatGPT実装開始準備
---
## 🎯 このフェーズで実現すること
**extern_c構文 + 凍結EXEhako-frozen-v1.exeの背骨確立**
1. **extern_c構文**: HakoruneからC関数を直接呼び出しRust `extern "C"` 相当)
2. **LLVM Backendプラグイン化**: C ABI経由で.o生成
3. **AOT導線確立**: MIR JSON → .o → EXE
4. **凍結EXE準備**: Rust層を凍結しても日常開発が回る
---
## 💡 発見の経緯2025-10-14
**Usertomoakiの直感**:
> 「HakoruneからC ABIを呼びたい」
> → 「あ、Rustもやってる`extern "C"`」
> → 「じゃあHakoruneでも`extern_c`構文を!」
**結果**: 業界標準パターンRust stage0, Go 1.4 frozenへの独自収束 ⭐論文価値
---
## 📁 ドキュメント
### 🎯 必読
- **[INDEX.md](INDEX.md)** - Phase全体像・実装の流れ
- **[MILESTONE.md](MILESTONE.md)** ⭐最重要 - ゴールラインDoD
- **[GUARD_RAILS.md](GUARD_RAILS.md)** - セキュリティ設計
### 📚 設計資料
- **[BUILTIN_VS_PLUGIN_DESIGN.md](BUILTIN_VS_PLUGIN_DESIGN.md)** - 内蔵 vs プラグイン方針
---
## 🚀 クイックスタート(実装後)
### 基本的なextern_c呼び出し
```hakorune
// プロセスID取得
static box SystemInfo {
get_pid() -> IntegerBox {
local pid = extern_c "getpid"()
return pid
}
}
```
### LLVM Backendプラグイン呼び出し
```hakorune
// MIR JSON → .o 生成
static box Compiler {
compile_to_object(mir: StringBox, out: StringBox) -> IntegerBox {
local result = extern_c "llvm_compile_mir_to_object"(
mir.to_cstring(),
out.to_cstring()
)
return result
}
}
```
### AOT導線
```bash
# Step 1: MIR JSON生成
./hako --backend mir --emit-mir-json program.mir.json program.hako
# Step 2: .o生成
./hako compiler_wrapper.hako program.mir.json program.o
# Step 3: リンク
clang program.o -o program.exe libhakorune_kernel.a
```
---
## 🔒 セキュリティ
### 既定Deny + Allowlist
```toml
# hako.toml
[ffi.dynamic]
allow = [
"getpid", # 既定
"strlen", # 既定
"system", # 既定
"getppid", # 追加
]
```
### 開発時のみ全許可CI不可
```bash
HAKO_FFI_ALLOW_ALL=1 ./hako program.hako # ⚠️ Dev only
```
詳細: [GUARD_RAILS.md](GUARD_RAILS.md)
---
## 📊 進捗Week 1-4
### Week 12025-10-14 - 10-18
- [ ] extern_c構文実装Parser→AST→MIR
- [ ] VM動的FFI基盤0/1/2引数対応
- [ ] 既定ホワイトリスト実装
### Week 22025-10-19 - 10-25
- [ ] ENV/TOML許可機構
- [ ] libs/llvm_backend プラグイン化
- [ ] lib探索パス実装
### Week 32025-10-26 - 11-01
- [ ] AOT導線整備MIR JSON→.o→EXE
- [ ] 補助スクリプト作成
- [ ] ドキュメント完成
### Week 42025-11-02 - 11-08
- [ ] スモークテスト追加
- [ ] 統合テストquick-selfhost
- [ ] レビュー・調整
詳細: [MILESTONE.md](MILESTONE.md)
---
## 🎯 成功基準
### 必須DoD
1. ✅ extern_c構文が動作getpid/strlen/system
2. ✅ libs/llvm_backend プラグイン化完了
3. ✅ AOT導線再現可能MIR JSON→.o→EXE
4. ✅ allowlist/TOML運用ガイド完成
### 推奨
5. ✅ スモークテスト全緑extern_c関連
6. ✅ 既存テスト影響なし170 PASS維持
---
## 🚀 次のフェーズPhase 15.77/凍結へ)
### 開始条件
- AOTルートが安定稼働
- libs/llvm_backend ビルド緑Linux
- セキュリティ運用ガイド完成
### Phase 15.77 目標
- **凍結EXE確定**: hako-frozen-v1.exe タグ付け・配布
- **Rust層最小化**: 100-200行VM実行エンジンのみ
- **脱Rust加速**: Hakoruneパーサーのみ開発
---
## 📚 関連リソース
### 前フェーズ
- [Phase 15.75 - 脱Rust大作戦](../phase-15.75/)
- [Phase 15.78 - Frozen UX Polish & Parity](../phase-15.78/)
- [Stage 4 - Dual Parser Harness](../phase-15.75/stage-4/)
- [ChatGPT extern_c戦略](../phase-15.75/stage-4-chatgpt/EXTERN_C_SELFHOST_STRATEGY.md)
### 論文資料
- [Rapid Self-Hosting Paper](../../../../private/papers-active/rapid-selfhost-ai-collaboration/)
- [Pattern Rediscovery Evidence](../../../../private/papers-active/rapid-selfhost-ai-collaboration/03_DATA_ANALYSIS.md)
### 業界標準パターン
- **Rust**: stage0凍結ツールチェーン
- **Go**: Go 1.4 frozenbootstrap用
- **OCaml**: ocamlc frozen自己ホスト用
---
## 💬 質問・議論
### ChatGPTと相談
このフェーズはChatGPTが主導で実装予定。設計判断はChatGPT↔tomoaki↔Claude三者で合意形成。
### Claudeのレビュー担当
- コード品質チェック
- セキュリティレビュー
- ドキュメント整備
---
**作成日**: 2025-10-14
**実装開始**: ChatGPT2025-10-14 Stage 4完了後
**レビュー**: Claude実装後