6.7 KiB
6.7 KiB
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)
移行戦略:
- Hakorune実装Parserに一本化
- Rust Parserを内蔵ライブラリとして保持 (Rollback用)
- 段階的切り替えフラグ実装
(提案)移行モードの切替は将来のゲートで導入(現時点では未定義)。
P1: MIR Builder依存削減
最適化:
- MIR生成をHakorune側に集約
- Rust側はC‑ABIブリッジのみ保持
P2: Plugin Manager移行
- Rust PluginManager → Hakorune PluginManagerBox
- 互換性レイヤーで移行期間をカバー
Week 3: Native実行環境
P0: C‑ABIカーネル整備
最小カーネル実装:
// 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研究成果をC‑ABIカーネルに統合
- 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ビルド対応
🎯 移行成功基準
テクニカルマイルストーン
- Frontend EXE動作確認: Phase 20.13実装がそのまま動作
- Rust依存削減: Rust LOC 50,000 → 10,000 以内 (-80%)
- Single EXE生成: 1ファイルで完結動作
- 性能維持: Phase 20.12b基準の±10%以内
品質マイルストーン
- テスト成功率: Quick smokes 100%, Integration 95%+
- バグ密度: Critical Zero, Major < 5件
- 互換性: 既存スクリプト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
🚨 ロールバック計画
切り替え可能にするための戦略
- Feature Flags: すべての移行要素をフラグ制御
- Rollback Points: 各Week完了時に安定版をタグ付け
- 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