Files
hakorune/docs/private/roadmap/phases/phase-20.5/INDEX.md

366 lines
9.8 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 20.5 — Index
**Escape from Rust: Bootstrap Compiler Implementation**
Status: Planning (Gate plan active)
Duration: 10 weeks (2025-12-21 - 2026-02-28)
---
## 📚 Documentation Structure
### Core Documents
1. **[README.md](README.md)** ⭐ START HERE
- Phase overview and goals
- Weekly breakdown (Week 1-10)
- Implementation strategy decision (Option B)
- Success criteria and DoD
2. **[MILESTONE.md](MILESTONE.md)**
- Objectives and deliverables
- Weekly milestones
- Success criteria
- Risk analysis
3. **[BOOTSTRAP_CHAIN_ANALYSIS.md](BOOTSTRAP_CHAIN_ANALYSIS.md)**
- 3-stage bootstrap chain detailed design
- Stage 1 (Rust) → Stage 2 (Hako v1) → Stage 3 (Hako v2)
- Data flow analysis
- Verification strategy
4. **[C_CODE_GENERATOR_DESIGN.md](C_CODE_GENERATOR_DESIGN.md)**
- MIR → C conversion design
- 16-instruction mapping table
- PHI resolution strategy
- Test strategy (43 test cases)
5. **[PLAN.md](PLAN.md)** ✅ Gate-based execution plan短縮版
- 5行サマリ / 最小命令セット / DoD
- Gate A〜EParser→MIR→VM PoC→op_eq→統合
- テスト/CI/リスク/次ステップ
---
## 🎯 Quick Reference
### What is Phase 20.5? (5-line summary)
1) Goal: 脱Rust。凍結EXEを土台に自己ホストへ前進。
2) Strategy: Gate方式Parser→MIR→VM PoC→op_eq→統合
3) Boundary: CABI/HostBridgeのみ外部境界。中はEverything is Box。
4) Proof: 決定性JSON正規化、Golden固定点で検証。
5) Policy: 小さく、順序よく、SKIPはWARN、回帰のみFAIL。
### Key Deliverables
1. **Bootstrap Compiler** (`apps/bootstrap-compiler/`)
- Written in Hakorune
- Runs on frozen EXE
- Outputs C code
2. **C Code Generator**
- MIR JSON → C source
- 16 instructions fully supported
- NyRT function calls
3. **Verification**
- v1 == v2 (compiler parity)
- v2 == v3 (fixed point)
- 10 test programs PASS
---
## 📊 Timeline at a Glance
| Weeks | Focus | Deliverable |
|-------|-------|-------------|
| 1-2 | Design & Analysis | Design docs complete |
| 3-4 | Parser Adaptation | Parser works on frozen EXE |
| 5-6 | MIR Builder Migration | MIR JSON generation works |
| 7-8 | C Code Generator | C code emission works |
| 9 | Bootstrap Integration | v1 == v2 verified |
| 10 | Documentation & Review | Phase complete |
---
## 🔄 Bootstrap Chain Overview
```
┌─────────────────┐
│ hako-frozen-v1 │
│ (Rust, 724KB) │
└────────┬────────┘
│ compiles
v
┌─────────────────┐
│ bootstrap_v1 │
│ (Hakorune code) │
│ runs on frozen │
└────────┬────────┘
│ compiles itself
v
┌─────────────────┐
│ bootstrap_v2.c │
│ (C source) │
└────────┬────────┘
│ clang + NyRT
v
┌─────────────────┐
│ bootstrap_v2 │
│ (native binary) │
└─────────────────┘
Verify: v1 output == v2 output ✅
```
---
## 💡 Implementation Strategy
### Decision: Option B (Reuse apps/selfhost-compiler/)
**Rationale**:
- 2500 lines of existing, tested code
- 170 smoke tests already PASS
- 90%+ reusability
- Proven architecture
**Code Reuse Breakdown**:
```
✅ 90% Reusable: Parser, Emitter, MIR Builder (2250 lines)
⚠️ 10% Adaptation: using paths, Box constraints (250 lines)
❌ New Code: C Code Generator (500 lines)
Total Effort: ~750 lines (vs 2500+ for Option A)
```
---
## 🧪 Test Strategy
### Test Pyramid
```
/\
/ \ Level 3: Self-Compilation (1 test, slow)
/____\ - v1 compiles itself → v2
/ \ - v2 compiles itself → v3
/ \ - Verify: v2 == v3
/__________\
/ \ Level 2: Comprehensive (10 tests, medium)
/ \ - If/else, loops, functions, boxes, arrays
/________________\
/ \ Level 1: Smoke Tests (43 tests, fast)
- Each MIR instruction
- Basic parsing
- C generation
```
---
## 📦 Directory Structure
```
Phase 20.5 Planning:
docs/private/roadmap/phases/phase-20.5/
├── INDEX.md # ← You are here
├── README.md # Phase overview
├── MILESTONE.md # Milestones & DoD
├── BOOTSTRAP_CHAIN_ANALYSIS.md # 3-stage bootstrap
├── C_CODE_GENERATOR_DESIGN.md # C codegen design
├── REUSABILITY_ANALYSIS.md # (Week 1-2 deliverable)
├── RISK_ASSESSMENT.md # (Week 1-2 deliverable)
├── IMPLEMENTATION_GUIDE.md # (Week 3+ deliverable)
└── COMPLETION_REPORT.md # (Week 10 deliverable)
Implementation:
apps/bootstrap-compiler/
├── parser/ # Week 3-4
│ ├── parser_box.hako
│ └── lexer_box.hako
├── mir_builder/ # Week 5-6
│ └── builder_box.hako
├── codegen/ # Week 7-8
│ ├── c_emitter_box.hako
│ └── c_runtime_box.hako
├── tests/ # Week 3-9
│ ├── smoke/ # 43 tests
│ ├── integration/ # 10 tests
│ └── bootstrap/ # 1 test (v1==v2==v3)
├── main.hako # Entry point
└── README.md # User guide
```
---
## 🚀 Quick Start (After Phase Complete)
### Compile a Hakorune Program
```bash
# Stage 1: Use frozen EXE to run bootstrap compiler
./hako-frozen-v1 apps/bootstrap-compiler/main.hako \
--input my_program.hako \
--output my_program.c
# Stage 2: Compile C to native binary
clang my_program.c -o my_program \
-L /path/to/hako_kernel \
-lhako_kernel \
-lpthread -ldl -lm
# Stage 3: Run
./my_program
```
### Verify Bootstrap Chain
```bash
# Run verification script
bash tools/verify_bootstrap_chain.sh
# Expected output:
# ✅ Stage 1 → Stage 2: OK
# ✅ Stage 2 → Stage 3: OK
# ✅ v1 == v2: VERIFIED
# ✅ v2 == v3: VERIFIED (fixed point)
# ✅ Bootstrap chain complete!
```
---
## ⚠️ Prerequisites
### From Phase 15.77
- [x] Frozen EXE built and tested (`hako-frozen-v1.exe`)
- [x] NyRT function calls working (Result: 6 test PASS)
- [x] MIR JSON → .o → EXE pipeline verified
- [x] Windows (MSVC/MinGW) + Linux support
### For Phase 20.5
- [ ] apps/selfhost-compiler/ analysis complete (Week 1-2)
- [ ] Frozen EXE constraints documented (Week 1-2)
- [ ] C Code Generator design approved (Week 1-2)
- [ ] Test infrastructure ready (Week 3+)
---
## 🎯 Success Criteria Summary
### Technical
- [ ] Bootstrap chain works: Stage 1 → 2 → 3
- [ ] C Code Generator: 16/16 instructions supported
- [ ] Verification: v1 == v2 == v3 (identical output)
- [ ] Tests: 43 smoke + 10 integration + 1 bootstrap PASS
### Performance
- [ ] Stage 2 compile time: < 30s for self-compilation
- [ ] Stage 3 compile time: < 5s for self-compilation
- [ ] Memory usage: < 100MB
### Quality
- [ ] Documentation complete (user guide + design docs)
- [ ] Code is modular (Box-based)
- [ ] Edge cases covered
- [ ] Review approved (ChatGPT + Claude)
---
## 📚 Related Phases
### Previous
- [Phase 15.77 - Frozen EXE Finalization](../phase-15.77/)
- [Phase 15.76 - extern_c & Frozen Toolchain](../phase-15.76/)
- [Phase 15.75 - Escape from Rust Planning](../phase-15.75/)
### Next
- **Phase 20.6 - Complete Rust Removal**
- VM executor Hakorune implementation
- Rust codebase 0 lines
- Pure Hakorune self-hosting
### Parallel
- [Phase 15.78 - Frozen UX Polish](../phase-15.78/)
- Distribution packaging
- Doctor improvements
- Windows polish
---
## 💬 Communication
### Weekly Sync Points
- **Monday**: Week start, goal setting
- **Wednesday**: Mid-week progress check
- **Friday**: Week review, next week planning
### Issue Tracking
- Use GitHub issues with label `phase-20.5`
- Prefix: `[20.5]` in commit messages
- Milestone: `Phase 20.5 - Bootstrap Compiler`
### Review Process
- Each week: Self-review + smoke tests
- Week 5, 10: Full review with ChatGPT/Claude
- Blocking issues: Immediate escalation
---
## 🔗 External Resources
### Industry Examples
- **Rust Bootstrap**: [Rust stage0 documentation](https://rustc-dev-guide.rust-lang.org/building/bootstrapping.html)
- **Go Bootstrap**: [Go 1.5 Bootstrap Process](https://go.dev/doc/go1.5#bootstrap)
- **OCaml Bootstrap**: [OCaml self-hosting](https://ocaml.org/docs/compiling-ocaml-projects)
### Papers
- [Rapid Self-Hosting Paper](../../../../private/papers-active/rapid-selfhost-ai-collaboration/)
- [Reflections on Trusting Trust](https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf) (Ken Thompson, 1984)
---
## 📝 Notes
### Naming Conventions
- **Stage 1**: Rust compiler, frozen EXE (`hako-frozen-v1`)
- **Stage 2**: Hakorune compiler v1 (`bootstrap_v1`)
- **Stage 3**: Hakorune compiler v2 (`bootstrap_v2`)
- **Fixed Point**: v2 == v3 (self-consistency)
### File Naming
- Test outputs: `test_v1.c`, `test_v2.c`
- Bootstrap outputs: `bootstrap_v2.c`, `bootstrap_v3.c`
- Always include version suffix for clarity
### Verification
- Use `diff` for exact comparison
- Use `md5sum` for quick hash checks
- Use `tools/verify_bootstrap_chain.sh` for automation
---
**Created**: 2025-10-14
**Last Updated**: 2025-10-14
**Status**: Planning (Phase not yet started)
**Next Review**: 2025-12-21 (Phase start)