Files
hakorune/tools/mir13-migration-helper.sh
Moe Charm fb2d8e37d5 🎉 Phase 11.8/12.7: MIR Core-13 完全実装 + 糖衣構文ドキュメント更新
主要な変更:
- MIR Core-13命令セット確定(Load/Store削除の革命的設計)
  - Const, BinOp, Compare(値・計算)
  - Jump, Branch, Return, Phi(制御)
  - Call, BoxCall, ExternCall(呼び出し)
  - TypeOp, Safepoint, Barrier(メタ)
- Phase 12.7糖衣構文ドキュメント整理(超圧縮重視、可逆変換保証)
- MIRビルダーのモジュール分割完了
- vtableテストスイート拡充
- AI協調開発ツール追加(並列リファクタリング支援)

詳細:
- src/mir/instruction_introspection.rs: core13_instruction_names()追加
- MIRビルダー分割: decls.rs, exprs_*.rs, fields.rs
- plugin_loader_v2: errors.rs, host_bridge.rs分離
- 論文用データ: mir13-final.md作成

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 11:34:15 +09:00

143 lines
4.1 KiB
Bash
Raw Permalink 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.

#!/bin/bash
# MIR13移行専用ヘルパーChatGPT5方式を応用
set -euo pipefail
# === MIR13特化設定 ===
LEGACY_PATTERNS=(
"ArrayGet" "ArraySet"
"RefNew" "RefGet" "RefSet"
"TypeCheck" "Cast"
"PluginInvoke"
"Copy" "Debug" "Print"
"Nop" "Throw" "Catch"
"Safepoint"
)
# 統合先
UNIFICATION_MAP="
ArrayGet:BoxCall
ArraySet:BoxCall
RefNew:BoxCall
RefGet:BoxCall
RefSet:BoxCall
TypeCheck:TypeOp
Cast:TypeOp
PluginInvoke:BoxCall
"
# === Phase 1: レガシー命令の使用箇所を検出 ===
echo "🔍 Detecting legacy instruction usage..."
mkdir -p mir13-migration/{detections,patches,results}
for pattern in "${LEGACY_PATTERNS[@]}"; do
echo "Searching for: $pattern"
rg -l "MirInstruction::$pattern" src/ > "mir13-migration/detections/$pattern.txt" || true
count=$(wc -l < "mir13-migration/detections/$pattern.txt" 2>/dev/null || echo 0)
if [[ $count -gt 0 ]]; then
echo " Found in $count files"
# 各ファイルに対してCodexタスク生成
while IFS= read -r file; do
target_instruction=$(echo "$UNIFICATION_MAP" | grep "^$pattern:" | cut -d: -f2 || echo "appropriate")
task="In $file, replace all uses of MirInstruction::$pattern with MirInstruction::$target_instruction.
Ensure semantic equivalence is maintained. For array operations, use BoxCall with appropriate method names.
For type operations, use TypeOp with appropriate parameters."
echo " Creating task for: $file"
echo "$task" > "mir13-migration/patches/$pattern-$(basename "$file").task"
done < "mir13-migration/detections/$pattern.txt"
fi
done
# === Phase 2: 並列実行スクリプト生成 ===
cat > mir13-migration/execute_migration.sh << 'MIGRATION_SCRIPT'
#!/bin/bash
# Execute MIR13 migration tasks
JOBS=${JOBS:-3}
LOG_DIR="logs-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$LOG_DIR"
echo "🚀 Executing MIR13 migration tasks..."
# 各タスクファイルを処理
for task_file in patches/*.task; do
[[ -e "$task_file" ]] || continue
task_content=$(cat "$task_file")
task_name=$(basename "$task_file" .task)
echo "Processing: $task_name"
# Codex実行ここは環境に応じて調整
../tools/codex-async-notify.sh "$task_content" > "$LOG_DIR/$task_name.log" 2>&1 &
# API制限対策で少し待つ
sleep 3
done
echo "✅ All tasks submitted!"
echo "📋 Monitor progress in tmux or check logs in: $LOG_DIR"
# 結果集計スクリプト
cat > verify_migration.sh << 'VERIFY'
#!/bin/bash
echo "🔍 Verifying MIR13 migration..."
# レガシー命令が残っていないか確認
legacy_found=0
for pattern in ArrayGet ArraySet RefNew RefGet RefSet TypeCheck Cast PluginInvoke; do
if rg -q "MirInstruction::$pattern" ../src/; then
echo "❌ Still found: $pattern"
rg "MirInstruction::$pattern" ../src/ | head -3
((legacy_found++))
fi
done
if [[ $legacy_found -eq 0 ]]; then
echo "✅ No legacy instructions found!"
echo "🎉 MIR13 migration complete!"
else
echo "⚠️ Found $legacy_found legacy instruction types remaining"
fi
# 新しい統一命令の使用統計
echo ""
echo "📊 Unified instruction usage:"
echo -n " BoxCall: "
rg "MirInstruction::BoxCall" ../src/ | wc -l
echo -n " TypeOp: "
rg "MirInstruction::TypeOp" ../src/ | wc -l
VERIFY
chmod +x verify_migration.sh
MIGRATION_SCRIPT
chmod +x mir13-migration/execute_migration.sh
# === サマリー表示 ===
echo ""
echo "📊 MIR13 Migration Summary:"
echo "=========================="
total_files=0
for pattern in "${LEGACY_PATTERNS[@]}"; do
file="mir13-migration/detections/$pattern.txt"
if [[ -s "$file" ]]; then
count=$(wc -l < "$file")
echo " $pattern: $count files"
((total_files += count))
fi
done
echo "=========================="
echo " Total: $total_files file occurrences"
echo ""
echo "🚀 Next steps:"
echo " 1. cd mir13-migration"
echo " 2. Review task files in patches/"
echo " 3. Run: ./execute_migration.sh"
echo " 4. After completion, run: ./verify_migration.sh"