feat(llvm/phi): Phase 278 P0 - remove deprecated PHI debug env vars
## Changes - debug_helper.py: Remove backward compatibility (warning → error + exit 1) - environment-variables.md: Migrate deprecated section with migration guide - phase278_p0_deprecated_env_fail.sh: Add smoke test for deprecated var detection ## Removed Variables (5) - NYASH_LLVM_PHI_DEBUG - NYASH_PHI_TYPE_DEBUG - NYASH_PHI_ORDERING_DEBUG - NYASH_LLVM_TRACE_PHI - NYASH_LLVM_VMAP_TRACE ## SSOT Variables (3) - Unchanged - NYASH_LLVM_DEBUG_PHI=1 - NYASH_LLVM_DEBUG_PHI_TRACE=1 - NYASH_LLVM_PHI_STRICT=1 ## Benefits - ✅ Deprecated vars cause fail-fast error (not silent) - ✅ Error messages include replacement hints - ✅ Documentation reflects removal (migration guide included) - ✅ Smoke test verifies deprecated var rejection - ✅ No regressions in existing tests ## Testing ✅ Test 1: Deprecated NYASH_LLVM_PHI_DEBUG rejected ✅ Test 2: Deprecated NYASH_LLVM_TRACE_PHI rejected ✅ Test 3: SSOT vars work normally ✅ Regression tests: strict=OFF, strict=ON, debug mode - all pass 🤖 Generated with Claude Code Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -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 で後方互換性削除(スプロール防止)。
|
||||
|
||||
### 使用例
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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"
|
||||
Reference in New Issue
Block a user