214 lines
7.5 KiB
Markdown
214 lines
7.5 KiB
Markdown
# Phase 20.14 — 脱Rust最終段階:フロントエンド完全統合
|
||
|
||
## 🎯 目的
|
||
|
||
Phase 20.13で確立したScript-built EXE基盤を活用し、**Rust依存の最終的削減**を実現する。
|
||
|
||
### 具体的目標
|
||
1. **Runner/Loader/VMフロントエンドをHakoruneスクリプトEXEで完全置換**
|
||
2. **Rustカーネルを最小限(C‑ABIレイヤーのみ)に縮小**
|
||
3. **Single EXE デプロイメントの完成**
|
||
4. **Hakorune Native実行環境の確立**
|
||
|
||
---
|
||
|
||
## 📋 現状分析 (Phase 20.13 からの移行)
|
||
|
||
### Phase 20.13 の成果(現状確定)
|
||
- ✅ **Script-built EXEインフラ(ゲート)**: runner_front / loader_front / vm_front(script 経路)
|
||
- ✅ **OK/NOOP/FAIL の短文契約** と採用(adopt)ロジック(Runner=CliGroups、Loader=ENV、VM=stdout)
|
||
- ✅ **Strictモード(開発者向け)**: 未知キーの Fail‑Fast(runner 既定、loader/vm は HAKO_FRONT_STRICT=1)
|
||
- ✅ **One Binary 方針の確立**: 将来は内蔵AOTへ集約、現状はゲートで切替(script↔lang)
|
||
|
||
### Phase 20.14 での発展(提案・段階導入)
|
||
- 🔥 **Rust層の段階的削減**(フロントエンド中心。カーネルは維持)
|
||
- 🔥 **Lang内蔵(AOT)フロントの導入**: 既定OFFゲートで順次切替(script→lang)
|
||
- 🔥 **Single EXE 体験を保ったままの移行**(外部置換は開発用途に限定)
|
||
|
||
---
|
||
|
||
## 🏗️ アーキテクチャ設計
|
||
|
||
### 最終目標アーキテクチャ(方針)
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Hakorune EXE (Native) │
|
||
│ ┌─────────────┬─────────────────┐ │
|
||
│ │ Front-end │ Kernel │ │
|
||
│ │ (Hakorune) │ (C-ABI) │ │
|
||
│ │ ┌─────────┐ │ ┌─────────────┐ │ │
|
||
│ │ │ Runner │ │ │ Memory │ │ │
|
||
│ │ │ Loader │ │ │ FFI │ │ │
|
||
│ │ │ VM │ │ │ Diagnostics│ │ │
|
||
│ │ │ Linker │ │ │ OS Interface│ │ │
|
||
│ │ └─────────┘ │ └─────────────┘ │ │
|
||
│ └─────────────┴─────────────────┘ │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### Phase遷移マップ
|
||
|
||
| Phase | Rust依存度 | Hakorune化 | 状態 |
|
||
|------|-----------|-----------|------|
|
||
| 20.12 | 85% | Frontendスクリプト化 | ✅完了 |
|
||
| 20.13 | 50% | Frontend EXE化 | ✅完了 |
|
||
| **20.14** | **低減** | **Frontend統合を段階導入** | 🎯提案 |
|
||
| 20.15 | 5% | カーネル最小化 | 予定 |
|
||
|
||
---
|
||
|
||
## 📅 実行計画 (4週間)
|
||
|
||
### Week 1: Frontend統合強化
|
||
- **P0**: Runner_front実装強化 (Phase 20.13継承)
|
||
- **P1**: Loader_frontポリシー拡充
|
||
- **P2**: VM_front軽量化最適化
|
||
- **P3**: 統合テストインフラ構築
|
||
|
||
### Week 2: Rust層削減第一段階(提案・既定OFF)
|
||
- **P0**: Parserレイヤーの移行検討(既定OFFのゲートで試験。既存挙動は維持)
|
||
- **P1**: MIR Builder依存削減
|
||
- **P2**: Plugin Manager移行
|
||
- **P3**: エラーハンドリング統合
|
||
|
||
### Week 3: Native実行環境確立
|
||
- **P0**: C‑ABIカーネル整備
|
||
- **P1**: Memory Manager統合
|
||
- **P2**: FFI Binding最適化
|
||
- **P3**: OS Interface抽象化
|
||
|
||
### Week 4: Single EXE完成
|
||
- **P0**: Full Integration Testing
|
||
- **P1**: Performance Validation
|
||
- **P2**: Deployment Pipeline
|
||
- **P3**: Documentation Complete
|
||
|
||
---
|
||
|
||
## 🔧 技術仕様
|
||
|
||
### Frontend EXE 仕様(概念・.hako)
|
||
```hako
|
||
// runner_front.hako - 統合エントリーポイント(概念スケッチ)
|
||
static box RunnerFront {
|
||
config: ConfigBox
|
||
policy: PolicyBox
|
||
|
||
execute(args: ArrayBox) {
|
||
// Phase 20.13から継承・強化
|
||
local mode = me.policy.detect_mode(args)
|
||
return me.dispatch(mode, args)
|
||
}
|
||
}
|
||
```
|
||
|
||
### C‑ABI カーネル仕様(草案・提案)
|
||
```c
|
||
// hakorune_kernel.h - 最小限のCインターフェース
|
||
typedef struct {
|
||
void* memory_base;
|
||
void* ffi_table;
|
||
void* diagnostics;
|
||
} hakorune_kernel_t;
|
||
|
||
// 4つの核関数のみ
|
||
hakorune_kernel_t* hakorune_init();
|
||
int hakorune_execute(hakorune_kernel_t*, const char* script);
|
||
void* hakorune_alloc(hakorune_kernel_t*, size_t size);
|
||
void hakorune_cleanup(hakorune_kernel_t*);
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 成功基準(Phase 20.14)
|
||
|
||
### 機能的成功
|
||
- ✅ **Frontend EXE群がすべてHakoruneで実装**
|
||
- ✅ **Rust依存がC‑ABIカーネルのみ (target <10,000 LOC)**
|
||
- ✅ **Single EXEで完結 (外部DLL不要)**
|
||
|
||
### 性能的成功
|
||
- ✅ **Phase 20.12 性能維持 (±10%)**
|
||
- ✅ **起動時間 < 100ms (Cold Start)**
|
||
- ✅ **メモリ使用量 < 50MB (Base Execution)**
|
||
|
||
### 品質的成功
|
||
- ✅ **Quick smokes 100% PASS**
|
||
- ✅ **Integration tests 95%+ PASS**
|
||
- ✅ **Zero critical bugs in production**
|
||
|
||
---
|
||
|
||
## 🔍 リスク管理
|
||
|
||
### 主要リスク(現状の制約を考慮)
|
||
1. **Performance Regression**: Frontend EXE化のオーバーヘッド
|
||
2. **Compatibility Issues**: 既存スクリプトとの互換性
|
||
3. **Debugging Complexity**: 多層化のデバッグ困難
|
||
|
||
### 緩和策
|
||
1. **性能**: リグレッションテスト + 最適化バッファ
|
||
2. **互換性**: 後方互換レイヤー + 段階的移行
|
||
3. **デバッグ**: 統合デバッグパイプライン + 詳細ログ
|
||
|
||
---
|
||
|
||
## 📚 関連ドキュメント
|
||
|
||
### 親フェーズ
|
||
- [Phase 20.13 README](../phase-20.13/README.md) - Script-built EXE基盤
|
||
- [Phase 20.12b README](../phase-20.12b/README.md) - スクリプト化基盤
|
||
|
||
### 技術資料
|
||
- [Front-end Overview Guide](../../../guides/tools/front-exe-overview.md)
|
||
- [C-ABI Kernel Specification](../../../reference/c-abi-kernel.md)
|
||
- [Performance Benchmarks](../../../development/performance/phase-20-benchmarks.md)
|
||
|
||
---
|
||
|
||
## 🚀 開始手順
|
||
|
||
### 環境準備(現行ゲート)
|
||
```bash
|
||
# フロント(script)経路の確認(開発用)
|
||
SMOKES_ENABLE_FRONT_EXE=1 tools/smokes/v2/run.sh --profile quick --filter 'front_.*_vm\.sh$'
|
||
|
||
# Lang内蔵(AOT)ゲートの有効化(現行はプレースホルダ挙動)
|
||
export HAKO_RUNNER_USE_LANG_EXE=1
|
||
export HAKO_LOADER_USE_LANG_EXE=1
|
||
export HAKO_VM_USE_LANG_EXE=1
|
||
```
|
||
|
||
### エントリー実行(例)
|
||
```bash
|
||
# ランナーを lang 内蔵frontに切替して通常実行(標準的な .hako ファイル)
|
||
HAKO_RUNNER_USE_LANG_EXE=1 ./target/release/hakorune examples/hello.hako
|
||
|
||
# Script front と連携(OKペイロード注入)
|
||
HAKO_RUNNER_USE_SCRIPT_EXE=1 HAKO_RUNNER_FRONT_FORCE=ok \
|
||
HAKO_RUNNER_FRONT_PAYLOAD='{"stdout":"adopt","backend":"vm"}' \
|
||
./target/release/hakorune examples/hello.hako
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 関連ドキュメント
|
||
|
||
### 📋 移行計画
|
||
- [TRANSITION_PLAN.md](TRANSITION_PLAN.md) - Phase 20.13からの移行詳細(本書は提案/ドラフト。ゲート配下で段階導入)
|
||
|
||
### 📊 詳細分析
|
||
- [RUST_MINIMIZATION_ANALYSIS.md](RUST_MINIMIZATION_ANALYSIS.md) - 統計的分析と削減ポテンシャル
|
||
|
||
### 🎯 今後の展開
|
||
- **Phase 20.15**: Core削減強化 (75%削減目標) → `../phase-20.15/`
|
||
- **Phase 20.16**: 究極的最小化 (93%削減目標) → `../phase-20.16/`
|
||
- **Phase 20.17**: Full Self‑Hosting(Spec/ABI Freeze v1) → `../phase-20.17/`
|
||
|
||
---
|
||
|
||
**開発開始**: 2025-10-27
|
||
**完了予定**: 2025-11-24
|
||
**担当**: Claude/Human協調開発
|