主要な変更: - 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>
143 lines
4.1 KiB
Bash
143 lines
4.1 KiB
Bash
#!/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" |