diff --git a/docs/reference/environment-variables.md b/docs/reference/environment-variables.md index f41d05e2..f953f63b 100644 --- a/docs/reference/environment-variables.md +++ b/docs/reference/environment-variables.md @@ -95,18 +95,26 @@ NYASH_USE_STAGE1_CLI=1 STAGE1_EMIT_MIR_JSON=1 \ | `NYASH_LLVM_DEBUG_PHI_TRACE=1` | OFF | LLVM | PHI wiring詳細トレース、vmap変化の追跡 | | `NYASH_LLVM_PHI_STRICT=1` | OFF | LLVM | PHI値解決時のゼロフォールバックを禁止(厳格モード) | -### 旧環境変数(Phase 278で削除予定) +### 旧環境変数(Phase 278で削除完了) -以下の環境変数は **Phase 277 P2** で統合されました。現在は後方互換性のため動作しますが、非推奨警告が表示されます。 +以下の環境変数は **Phase 277 P2** で統合され、**Phase 278 P0** で削除されました。 -**`NYASH_LLVM_DEBUG_PHI=1` に統合された変数:** -- `NYASH_LLVM_PHI_DEBUG` (旧一般デバッグ) -- `NYASH_PHI_TYPE_DEBUG` (旧型デバッグ) -- `NYASH_PHI_ORDERING_DEBUG` (旧順序デバッグ) +**エラーメッセージ**: +```bash +❌ ERROR: NYASH_LLVM_PHI_DEBUG was removed in Phase 278. Use NYASH_LLVM_DEBUG_PHI=1 instead. +``` -**`NYASH_LLVM_DEBUG_PHI_TRACE=1` に統合された変数:** -- `NYASH_LLVM_TRACE_PHI` (旧トレース) -- `NYASH_LLVM_VMAP_TRACE` (旧vmapトレース) +**マイグレーション(移行方法)**: + +| 旧変数 | 新変数(SSOT) | +| --- | --- | +| `NYASH_LLVM_PHI_DEBUG` | `NYASH_LLVM_DEBUG_PHI=1` | +| `NYASH_PHI_TYPE_DEBUG` | `NYASH_LLVM_DEBUG_PHI=1` | +| `NYASH_PHI_ORDERING_DEBUG` | `NYASH_LLVM_DEBUG_PHI=1` | +| `NYASH_LLVM_TRACE_PHI` | `NYASH_LLVM_DEBUG_PHI_TRACE=1` | +| `NYASH_LLVM_VMAP_TRACE` | `NYASH_LLVM_DEBUG_PHI_TRACE=1` | + +**理由**: Phase 277 P2 で環境変数を 8個→3個 に統合。Phase 278 で後方互換性削除(スプロール防止)。 ### 使用例 diff --git a/src/llvm_py/phi_wiring/debug_helper.py b/src/llvm_py/phi_wiring/debug_helper.py index 539f153e..dc19c9f1 100644 --- a/src/llvm_py/phi_wiring/debug_helper.py +++ b/src/llvm_py/phi_wiring/debug_helper.py @@ -1,11 +1,13 @@ -"""Phase 277 P2: PHI デバッグ環境変数のSSOT +"""Phase 278 P0: PHI デバッグ環境変数のSSOT 統合された環境変数を一元管理。 -統合前の環境変数(8個) → 統合後(3個): -- NYASH_LLVM_DEBUG_PHI: 一般デバッグ(旧: LLVM_PHI_DEBUG, PHI_TYPE_DEBUG, PHI_ORDERING_DEBUG) -- NYASH_LLVM_DEBUG_PHI_TRACE: 詳細トレース(旧: LLVM_TRACE_PHI, LLVM_VMAP_TRACE) -- NYASH_LLVM_PHI_STRICT: 厳格モード(既存維持) +Phase 277 P2 統合(8個 → 3個): +- NYASH_LLVM_DEBUG_PHI: 一般デバッグ(旧変数削除済み) +- NYASH_LLVM_DEBUG_PHI_TRACE: 詳細トレース(旧変数削除済み) +- NYASH_LLVM_PHI_STRICT: 厳格モード(変更なし) + +Phase 278 P0: 旧環境変数の後方互換性を削除(fail-fast化) """ import os import sys @@ -26,7 +28,7 @@ def is_phi_debug_enabled(): if os.environ.get('NYASH_LLVM_DEBUG_PHI') == '1': return True - # 旧環境変数の後方互換性(Phase 278で削除予定) + # 旧環境変数の後方互換性(Phase 278で削除) legacy_vars = [ 'NYASH_LLVM_PHI_DEBUG', 'NYASH_PHI_TYPE_DEBUG', @@ -34,9 +36,9 @@ def is_phi_debug_enabled(): ] for var in legacy_vars: if os.environ.get(var) == '1': - print(f"⚠️ DEPRECATED: {var} is deprecated. Use NYASH_LLVM_DEBUG_PHI=1 instead.", + print(f"❌ ERROR: {var} was removed in Phase 278. Use NYASH_LLVM_DEBUG_PHI=1 instead.", file=sys.stderr) - return True + sys.exit(1) return False @@ -55,16 +57,16 @@ def is_phi_trace_enabled(): if os.environ.get('NYASH_LLVM_DEBUG_PHI_TRACE') == '1': return True - # 旧環境変数の後方互換性(Phase 278で削除予定) + # 旧環境変数の後方互換性(Phase 278で削除) legacy_vars = [ 'NYASH_LLVM_TRACE_PHI', 'NYASH_LLVM_VMAP_TRACE' ] for var in legacy_vars: if os.environ.get(var) == '1': - print(f"⚠️ DEPRECATED: {var} is deprecated. Use NYASH_LLVM_DEBUG_PHI_TRACE=1 instead.", + print(f"❌ ERROR: {var} was removed in Phase 278. Use NYASH_LLVM_DEBUG_PHI_TRACE=1 instead.", file=sys.stderr) - return True + sys.exit(1) return False diff --git a/tools/smokes/v2/profiles/integration/llvm/phase278_p0_deprecated_env_fail.sh b/tools/smokes/v2/profiles/integration/llvm/phase278_p0_deprecated_env_fail.sh new file mode 100644 index 00000000..194c5ebf --- /dev/null +++ b/tools/smokes/v2/profiles/integration/llvm/phase278_p0_deprecated_env_fail.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Phase 278 P0: Verify deprecated env vars are rejected + +set -e + +# Build +cargo build --release --features llvm + +# Test 1: NYASH_LLVM_PHI_DEBUG should fail +echo "Test 1: Deprecated NYASH_LLVM_PHI_DEBUG should fail..." +if NYASH_LLVM_PHI_DEBUG=1 NYASH_LLVM_USE_HARNESS=1 \ + ./target/release/hakorune --backend llvm \ + apps/tests/phase275_p0_plus_number_only_min.hako 2>&1 | grep -q "was removed in Phase 278"; then + echo "✅ Test 1 passed: Deprecated var rejected" +else + echo "❌ Test 1 failed: Expected error message" + exit 1 +fi + +# Test 2: NYASH_LLVM_TRACE_PHI should fail +echo "Test 2: Deprecated NYASH_LLVM_TRACE_PHI should fail..." +if NYASH_LLVM_TRACE_PHI=1 NYASH_LLVM_USE_HARNESS=1 \ + ./target/release/hakorune --backend llvm \ + apps/tests/phase275_p0_plus_number_only_min.hako 2>&1 | grep -q "was removed in Phase 278"; then + echo "✅ Test 2 passed: Deprecated var rejected" +else + echo "❌ Test 2 failed: Expected error message" + exit 1 +fi + +# Test 3: SSOT vars should work +echo "Test 3: SSOT vars should work..." +if NYASH_LLVM_DEBUG_PHI=1 NYASH_LLVM_USE_HARNESS=1 \ + ./target/release/hakorune --backend llvm \ + apps/tests/phase275_p0_plus_number_only_min.hako > /dev/null 2>&1; then + echo "✅ Test 3 passed: SSOT var works" +else + echo "❌ Test 3 failed: SSOT var should work" + exit 1 +fi + +echo "✅ All Phase 278 P0 smoke tests passed"