feat(selfhost): Phase 120 selfhost Stage-3 baseline establishment
## Phase 120: selfhost Stage-3 代表パスの安定化 (完了) ### 概要 Phase 106-115完了時点でのselfhost経路(Stage-3 .hakoコンパイラ)の 動作ベースラインを確立。実装修正なし、現状記録のみ。 ### 完了タスク - ✅ 代表パス選定: 3つの.hakoファイル選定完了 - peek_expr_block.hako (match式・ブロック式) - loop_min_while.hako (ループ・PHI命令) - esc_dirname_smoke.hako (複雑制御構造・StringBox) - ✅ 期待フロー整理: JoinIR Strict モード説明ドキュメント作成 - ✅ 実行調査完了: NYASH_JOINIR_STRICT=1 での動作確認 - ✅ ベースライン確立: 詳細実行結果記録 - ✅ スモークスクリプト作成: integration profileに統合 ### 実行結果 - ✅ 完全成功: 2/3 (peek_expr_block, loop_min_while) - ⚠️ 既知問題: 1/3 (esc_dirname_smoke - ConsoleBox.println解決失敗) ### JoinIR Strict検証結果 - ✅ If Lowering 動作 - ✅ Loop Lowering 動作 - ✅ PHI命令生成 - ✅ ControlForm構造生成 - ✅ StringBox操作 - ❌ ConsoleBox.println (メソッド解決失敗) ### Phase 122+への課題 **高優先度**: - ConsoleBox.printlnメソッド解決エラー修正 **中優先度**: - NYASH_PARSER_STAGE3非推奨警告対応 **低優先度**: - builtin Box プラグイン移行検討 ### 技術的成果 - Phase 106-115の安定性確認完了 - JoinIR Lowering動作確認 - 明確なPhase 122+タスクリスト確立 - 回帰検証可能なテスト整備 ### ファイル構成 **新規作成**: - docs/development/current/main/phase120_selfhost_stable_paths.md (指示書) - docs/development/current/main/selfhost_stage3_expected_flow.md (期待フロー) - docs/development/current/main/phase120_baseline_results.md (ベースライン結果) - tools/smokes/v2/profiles/integration/selfhost/phase120_stable_paths.sh (スモークテスト) **修正**: - CURRENT_TASK.md (Phase 120完了記録追加) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# phase120_stable_paths.sh — Phase 120: selfhost Stage-3 stable paths smoke test
|
||||
|
||||
source "$(dirname "$0")/../../../lib/test_runner.sh"
|
||||
export SMOKES_USE_PYVM=0
|
||||
require_env || exit 2
|
||||
preflight_plugins || exit 2
|
||||
|
||||
# Phase 120 environment variables
|
||||
export NYASH_JOINIR_STRICT=1
|
||||
export NYASH_USE_NY_COMPILER=1
|
||||
export NYASH_PARSER_STAGE3=1
|
||||
export HAKO_PARSER_STAGE3=1
|
||||
|
||||
log_info "Phase 120: selfhost Stage-3 stable paths smoke test"
|
||||
log_info "JoinIR Strict mode: NYASH_JOINIR_STRICT=1"
|
||||
|
||||
# Test counter
|
||||
PASSED=0
|
||||
FAILED=0
|
||||
TOTAL=3
|
||||
|
||||
# Representative path 1: peek_expr_block.hako
|
||||
log_info "[1/3] Testing peek_expr_block.hako (match expression with block expressions)"
|
||||
output=$(run_nyash_vm "$NYASH_ROOT/apps/tests/peek_expr_block.hako" 2>&1) || true
|
||||
if echo "$output" | grep -q "found one"; then
|
||||
log_success "peek_expr_block.hako: PASS (match expression lowered correctly)"
|
||||
PASSED=$((PASSED + 1))
|
||||
else
|
||||
log_error "peek_expr_block.hako: FAIL (unexpected output or error)"
|
||||
echo "$output" | head -20
|
||||
FAILED=$((FAILED + 1))
|
||||
fi
|
||||
|
||||
# Representative path 2: loop_min_while.hako
|
||||
log_info "[2/3] Testing loop_min_while.hako (loop with PHI instructions)"
|
||||
output=$(run_nyash_vm "$NYASH_ROOT/apps/tests/loop_min_while.hako" 2>&1) || true
|
||||
if echo "$output" | grep -q "0" && echo "$output" | grep -q "1" && echo "$output" | grep -q "2"; then
|
||||
log_success "loop_min_while.hako: PASS (loop lowered correctly with PHI)"
|
||||
PASSED=$((PASSED + 1))
|
||||
else
|
||||
log_error "loop_min_while.hako: FAIL (unexpected output or error)"
|
||||
echo "$output" | head -20
|
||||
FAILED=$((FAILED + 1))
|
||||
fi
|
||||
|
||||
# Representative path 3: esc_dirname_smoke.hako
|
||||
log_info "[3/3] Testing esc_dirname_smoke.hako (complex control structures with StringBox)"
|
||||
output=$(run_nyash_vm "$NYASH_ROOT/apps/tests/esc_dirname_smoke.hako" 2>&1) || true
|
||||
# Expected: This test currently fails with ConsoleBox.println error
|
||||
# We record the baseline: this is a known issue for Phase 122+
|
||||
if echo "$output" | grep -q "Unknown method 'println' on ConsoleBox"; then
|
||||
log_warn "esc_dirname_smoke.hako: BASELINE RECORDED (expected ConsoleBox.println error)"
|
||||
log_info " Issue recorded for Phase 122+ resolution"
|
||||
# Don't count as pass or fail - it's a baseline recording
|
||||
else
|
||||
log_error "esc_dirname_smoke.hako: FAIL (unexpected error - not the known ConsoleBox.println issue)"
|
||||
echo "$output" | head -20
|
||||
FAILED=$((FAILED + 1))
|
||||
fi
|
||||
|
||||
# Summary
|
||||
log_info "=========================================="
|
||||
log_info "Phase 120 Baseline Results:"
|
||||
log_info " Passed: $PASSED/$TOTAL"
|
||||
log_info " Failed: $FAILED/$TOTAL"
|
||||
log_info " Known Issues: 1 (esc_dirname_smoke.hako)"
|
||||
log_info "=========================================="
|
||||
log_info "JoinIR If/Loop Lowering: Stable"
|
||||
log_info "ControlForm structure: Correct"
|
||||
log_info "PHI instruction generation: Working"
|
||||
log_info "ConsoleBox.println: Known issue for Phase 122+"
|
||||
log_info "=========================================="
|
||||
|
||||
# Exit code: pass if at least 2/3 pass (allowing for known issues)
|
||||
if [ "$PASSED" -ge 2 ]; then
|
||||
log_success "Phase 120 baseline established successfully"
|
||||
exit 0
|
||||
else
|
||||
log_error "Phase 120 baseline check failed"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user