Files
hakorune/docs/private/roadmap/phases/phase-20.14/TRANSITION_PLAN.md

6.7 KiB
Raw Blame History

Phase 20.13 → 20.14 移行計画

🔄 現状からの移行パス

Phase 20.13 の成果を活用

Phase 20.13で構築した以下の基盤を直接活用・拡張:

  • Script-built EXEインフラ: runner_front, loader_front, vm_front
  • AOTコンパイルパイプライン: Hakorune → EXE
  • Policy駆動アーキテクチャ: allowlist/policy方式
  • 整流ロジック: OK/NOOP/FAIL判定

📋 移行タスク詳細

Week 1: Frontend強化 (Phase 20.13 継承)

P0: Runner_front 実装強化

現状 (Phase 20.13): 基本的なOK/NOOP/FAILのみ Phase 20.14での拡張:

// runner_front.hkr - 拡張版
static box RunnerFront {
    executor: ExecutorBox
    validator: ValidatorBox
    
    execute(args: ArrayBox) {
        // Phase 20.13から継承
        local mode = me.detect_mode(args)
        local validation = me.validator.validate(args)
        
        if (validation.status != "OK") {
            return me.fail_fast(validation.error)
        }
        
        // 新機能: 実行計画最適化
        local plan = me.executor.optimize_plan(mode, args)
        return me.dispatch_with_plan(plan, args)
    }
}

P1: Loader_front ポリシー拡充

既存: 基本的allowlist 拡張: Dynamic policy loading

// policy_loader.hkr
static box PolicyLoader {
    policies: MapBox
    
    load_policy(name: StringBox) {
        return me.policies.get(name) || me.default_policy()
    }
    
    validate_load(path: StringBox, policy: PolicyBox) {
        return policy.check_allowed(path)
    }
}

P2: VM_front 軽量化

現状: 基本ディスパッチ 最適化: Cache + Pre-compilation


Week 2: Rust層削減

P0: Parserレイヤー削減

対象依存:

  • src/parser/ (~15,000 LOC)
  • src/ast/ (~8,000 LOC)

移行戦略:

  1. Hakorune実装Parserに一本化
  2. Rust Parserを内蔵ライブラリとして保持 (Rollback用)
  3. 段階的切り替えフラグ実装

(提案)移行モードの切替は将来のゲートで導入(現時点では未定義)。

P1: MIR Builder依存削減

最適化:

  • MIR生成をHakorune側に集約
  • Rust側はCABIブリッジのみ保持

P2: Plugin Manager移行

  • Rust PluginManager → Hakorune PluginManagerBox
  • 互換性レイヤーで移行期間をカバー

Week 3: Native実行環境

P0: CABIカーネル整備

最小カーネル実装:

// hakorune_kernel.h - 最終目標
struct hakorune_kernel {
    // Memory Management (from hakmem)
    struct hakmem_allocator* allocator;
    
    // FFI Interface  
    void* native_libs[32];
    
    // Diagnostics & Logging
    struct hakorune_logger* logger;
    
    // OS Interface
    struct hakorune_os* os_interface;
};

// 4つの核関数のみに削減
hakorune_kernel* hakorune_init();
int hakorune_execute(hakorune_kernel*, const char* script);
void* hakorune_alloc(hakorune_kernel*, size_t);
void hakorune_cleanup(hakorune_kernel*);

P1: Memory Manager統合

  • hakmem研究成果をCABIカーネルに統合
  • Phase 6研究成果 (L2.5 Pool, Whale Cache) を活用

P2: FFI Binding最適化

  • Rust FFI → C FFI完全移行
  • 性能回帰テストで Comparable 確保

Week 4: Single EXE完成

P0: Full Integration Testing

  • Phase 20.13 EXE群との互換性テスト
  • パフォーマンス回帰テスト (Phase 20.12b基準)
  • エンドツーエンド機能テスト

テストカバレッジ目標:

  • Quick smokes: 100% PASS
  • Integration tests: 95%+ PASS
  • Performance benchmarks: ±10% of Phase 20.12b

P1: Performance Validation

測定指標:

# 基準比較
Phase 20.12b (Rust):  усредненное время X
Phase 20.14 (Native):  目標 X*1.1以内

# 起動時間
目标: <100ms (Cold Start)
実測: [計測結果]

P2: Deployment Pipeline

  • Single EXEにすべてを梱包
  • 外部依存ゼロ配布
  • Cross-platformビルド対応

🎯 移行成功基準

テクニカルマイルストーン

  1. Frontend EXE動作確認: Phase 20.13実装がそのまま動作
  2. Rust依存削減: Rust LOC 50,000 → 10,000 以内 (-80%)
  3. Single EXE生成: 1ファイルで完結動作
  4. 性能維持: Phase 20.12b基準の±10%以内

品質マイルストーン

  1. テスト成功率: Quick smokes 100%, Integration 95%+
  2. バグ密度: Critical Zero, Major < 5件
  3. 互換性: 既存スクリプト99%以上互換

🔧 実行手順

Step 1: 環境確認 (Day 1)

# Phase 20.13成果の確認front script 経路・スモーク)
SMOKES_ENABLE_FRONT_EXE=1 tools/smokes/v2/run.sh --profile quick --filter 'front_.*_vm\.sh$'

# Lang内蔵frontのプレースホルダ挙動
HAKO_RUNNER_USE_LANG_EXE=1 HAKO_RUNNER_FRONT_FORCE=ok \
  HAKO_RUNNER_FRONT_PAYLOAD='{"stdout":"lang-adopt"}' \
  ./target/release/hakorune examples/hello.hako

Step 2: Frontend強化 (Day 2-7)

# Frontend EXE拡張実装
cd lang/src/tools/runner_front
# 拡張機能実装 (P0-P2)

# テスト実行
export HAKO_PHASE_20_14=1
./target/release/hakorune --frontend=runner_test

Step 3: 移行テスト (Day 8-14)

# Parser切り替えテスト
export HAKO_PARSER_MODE=hakorune
tools/smokes/v2/run.sh --profile quick

# パフォーマンステスト  
bash tools/bench_unified.sh --backend all --warmup 10 --repeat 50

Step 4: 統合テスト (Day 15-28)

# Single EXEテスト
./tools/build_native.sh --mode single-exe
./hakorune-native --version

# 配布テスト
./hakorune-native local_tests/hello.nyash

🚨 ロールバック計画

切り替え可能にするための戦略

  1. Feature Flags: すべての移行要素をフラグ制御
  2. Rollback Points: 各Week完了時に安定版をタグ付け
  3. Compatibility Layers: 期間限定の互換性確保
# 緊急ロールバック用
export HAKO_PHASE_20_14_ROLLBACK=1
export HAKO_PARSER_MODE=rust
export HAKO_FRONTEND_MODE=phase20_13

📊 進捗測定

週次進捗指標

  • Frontend実装進捗: Phase 20.13 EXE機能拡張率
  • Rust削減進捗: Rust LOC削減率、CYCLO改善率
  • 性能指標: ベンチマーク比較、メモリ使用量
  • 品質指標: テスト成功率、バグ発見率

デイリー進捗チェック

  • Feature Implementation: 当日実装Feature数
  • Test Results: 実行テスト結果とPASS率
  • Performance Impact: 前日比性能変化
  • Blocker Issues: 解決が必要なBlocking Issue

移行開始: 2025-10-27
Week 1完了予定: 2025-11-03
Week 2完了予定: 2025-11-10
Week 3完了予定: 2025-11-17
最終完了: 2025-11-24