7.5 KiB
7.5 KiB
Phase 20.14 — 脱Rust最終段階:フロントエンド完全統合
🎯 目的
Phase 20.13で確立したScript-built EXE基盤を活用し、Rust依存の最終的削減を実現する。
具体的目標
- Runner/Loader/VMフロントエンドをHakoruneスクリプトEXEで完全置換
- Rustカーネルを最小限(C‑ABIレイヤーのみ)に縮小
- Single EXE デプロイメントの完成
- 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)
// 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 カーネル仕様(草案・提案)
// 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
🔍 リスク管理
主要リスク(現状の制約を考慮)
- Performance Regression: Frontend EXE化のオーバーヘッド
- Compatibility Issues: 既存スクリプトとの互換性
- Debugging Complexity: 多層化のデバッグ困難
緩和策
- 性能: リグレッションテスト + 最適化バッファ
- 互換性: 後方互換レイヤー + 段階的移行
- デバッグ: 統合デバッグパイプライン + 詳細ログ
📚 関連ドキュメント
親フェーズ
- Phase 20.13 README - Script-built EXE基盤
- Phase 20.12b README - スクリプト化基盤
技術資料
🚀 開始手順
環境準備(現行ゲート)
# フロント(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
エントリー実行(例)
# ランナーを 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 - Phase 20.13からの移行詳細(本書は提案/ドラフト。ゲート配下で段階導入)
📊 詳細分析
- 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協調開発