test(env): Phase 286A - Deprecated env warning regression test
Goal: Prevent regression where deprecated env vars warn even when unset Changes: - tools/smokes/v2/profiles/quick/env/phase286_deprecated_env_warnings.sh * Test Case 1: Unset env → No warnings (防止: 未設定で警告) * Test Case 2: NYASH_MACRO_TOPLEVEL_ALLOW=1 → Warning expected * Test Case 3: NYASH_MACRO_BOX_CHILD_RUNNER=1 → Warning expected * Uses env -u to truly unset variables (empty string counts as "set") - docs/reference/environment-variables.md * Added "Deprecated 警告動作 (Phase 286A)" section * Clarified: warnings only appear when env var is explicitly set * Warning format: [macro][compat] <変数名> is deprecated; <推奨アクション> Test Results: ✅ All 3 test cases pass ✅ Quick smoke: 45/46 tests pass (1 known failure unrelated) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -362,4 +362,109 @@ env NYASH_FEATURES=stage3 NYASH_LLVM_USE_HARNESS=1 \
|
||||
|
||||
---
|
||||
|
||||
## Macro システム (Phase 286A 集約版)
|
||||
|
||||
**Phase 286A** で Macro 系環境変数を `src/config/env/macro_flags.rs` に集約しました。
|
||||
|
||||
### Core(本線化対象)
|
||||
|
||||
| 変数 | デフォルト | 適用経路 | 説明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `NYASH_MACRO_PATHS=comma,separated,paths` | unset | Any | MacroBox パス(カンマ区切り)。推奨経路。 |
|
||||
| `NYASH_MACRO_ENABLE={0\|1}` | `1` | Any | Macro システム全体の有効化。`0` で完全無効化(lite プロファイル用)。 |
|
||||
| `NYASH_MACRO_STRICT={0\|1\|true\|false}` | `true` | Any | Strict モード。エラー時に即失敗(未設定時は ON)。 |
|
||||
| `NYASH_MACRO_TRACE={0\|1}` | `0` | Any | Macro トレース出力。 |
|
||||
| `NYASH_MACRO_BOX={0\|1}` | `0` | Any | MacroBox システムの有効化。 |
|
||||
| `NYASH_MACRO_BOX_ENABLE=list` | unset | Any | 有効化する MacroBox 名(カンマ区切り)。 |
|
||||
|
||||
### Legacy / Backward compat
|
||||
|
||||
| 変数 | デフォルト | 適用経路 | 説明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `NYASH_MACRO_BOX_NY={0\|1}` | `0` | Any | Legacy: Nyash MacroBox ロード有効化。非推奨:`NYASH_MACRO_PATHS` を使用してね。 |
|
||||
| `NYASH_MACRO_BOX_NY_PATHS=comma,separated,paths` | unset | Any | Legacy: Nyash MacroBox パス(カンマ区切り)。非推奨:`NYASH_MACRO_PATHS` を使用してね。 |
|
||||
| `NYASH_MACRO_TOPLEVEL_ALLOW={0\|1\|true\|false}` | `false` | Any | Legacy: トップレベル `static function MacroBoxSpec.expand(json)` を許可。非推奨:BoxDeclaration を使用してね。 |
|
||||
| `NYASH_MACRO_BOX_CHILD={0\|1\|true\|false}` | `true` | Any | 子プロセス MacroBox を使用。 |
|
||||
| `NYASH_MACRO_BOX_CHILD_RUNNER={0\|1\|true\|false}` | `false` | Any | Legacy: Runner モードを強制。非推奨:自動管理されるから手動設定不要だよ。 |
|
||||
| `NYASH_MACRO_BOX_NY_IDENTITY_ROUNDTRIP={0\|1}` | `0` | Any | Identity MacroBox の JSON ラウンドトリップ検証。 |
|
||||
|
||||
### Deprecated 警告動作 (Phase 286A)
|
||||
|
||||
**Phase 286A** で deprecated 環境変数の警告動作を明確化しました:
|
||||
|
||||
- **警告タイミング**: deprecated 変数が**明示的に設定されている場合のみ**警告を出力します。未設定時は警告なし。
|
||||
- **警告フォーマット**: `[macro][compat] <変数名> is deprecated; <推奨アクション>`
|
||||
- **対象変数**:
|
||||
- `NYASH_MACRO_TOPLEVEL_ALLOW` - BoxDeclaration を使用推奨
|
||||
- `NYASH_MACRO_BOX_CHILD_RUNNER` - 自動管理されるため設定不要
|
||||
- `NYASH_MACRO_BOX_NY*` - `NYASH_MACRO_PATHS` を使用推奨
|
||||
|
||||
**例**:
|
||||
```bash
|
||||
# 未設定 - 警告なし
|
||||
./target/release/hakorune program.hako
|
||||
|
||||
# 設定あり - 警告あり
|
||||
NYASH_MACRO_TOPLEVEL_ALLOW=1 ./target/release/hakorune program.hako
|
||||
# stderr: [macro][compat] NYASH_MACRO_TOPLEVEL_ALLOW is deprecated; ...
|
||||
```
|
||||
|
||||
### Capabilities(Capability ガード)
|
||||
|
||||
| 変数 | デフォルト | 適用経路 | 説明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `NYASH_MACRO_CAP_IO={0\|1\|true\|false}` | `false` | Any | Macro から IO (File/Path/Dir) を許可。 |
|
||||
| `NYASH_MACRO_CAP_NET={0\|1\|true\|false}` | `false` | Any | Macro から NET (HTTP/Socket) を許可。 |
|
||||
| `NYASH_MACRO_CAP_ENV={0\|1\|true\|false}` | `false` | Any | Macro から環境変数読み取りを許可。 |
|
||||
|
||||
### Advanced / Dev-only
|
||||
|
||||
| 変数 | デフォルト | 適用経路 | 説明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `NYASH_MACRO_MAX_PASSES=N` | unset | Any | Macro パス最大回数。 |
|
||||
| `NYASH_MACRO_CYCLE_WINDOW=N` | unset | Any | Macro 検出ウィンドウ。 |
|
||||
| `NYASH_MACRO_DERIVE_ALL={0\|1}` | `0` | Any | すべての MacroBox で派生マクロを有効化。 |
|
||||
| `NYASH_MACRO_DERIVE=target` | unset | Any | 派生マクロのターゲット。 |
|
||||
| `NYASH_MACRO_TRACE_JSONL=path` | unset | Any | Macro トレースを JSONL 形式で出力。 |
|
||||
| `NYASH_MACRO_DISABLE={0\|1\|true\|false}` | `false` | Any | Macro システム全体の無効化(`NYASH_MACRO_ENABLE=0` と同等)。 |
|
||||
| `NYASH_MACRO_BOX_EXAMPLE={0\|1}` | `0` | Any | Example MacroBox を有効化。 |
|
||||
|
||||
### Syntax Sugar
|
||||
|
||||
| 変数 | デフォルト | 適用経路 | 説明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `NYASH_SYNTAX_SUGAR_LEVEL={none\|basic\|full}` | `none` | Any | 構文糖衣レベル。Macro スキャン中は一時的に `basic` に設定される。 |
|
||||
|
||||
### 使用例
|
||||
|
||||
```bash
|
||||
# 基本使用(推奨)
|
||||
NYASH_MACRO_PATHS=macros/my_macro.ny \
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
|
||||
# Strict モード
|
||||
NYASH_MACRO_STRICT=1 \
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
|
||||
# Trace 出力
|
||||
NYASH_MACRO_TRACE=1 \
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
|
||||
# MacroBox 有効化
|
||||
NYASH_MACRO_BOX=1 NYASH_MACRO_BOX_ENABLE=MyMacroBox,AnotherBox \
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
|
||||
# Capability ガード
|
||||
NYASH_MACRO_CAP_IO=1 NYASH_MACRO_CAP_NET=0 \
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
|
||||
# Legacy(非推奨)
|
||||
NYASH_MACRO_BOX_NY=1 NYASH_MACRO_BOX_NY_PATHS=legacy_macros.ny \
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
```
|
||||
|
||||
参考: [docs/guides/macro-profiles.md](../guides/macro-profiles.md) / [docs/guides/macro-box.md](../guides/macro-box.md) / [docs/guides/macro-box-nyash.md](../guides/macro-box-nyash.md)
|
||||
|
||||
---
|
||||
|
||||
参考: [docs/development/architecture/mir-logs-observability.md](../development/architecture/mir-logs-observability.md) / [src/mir/verification/](../../src/mir/verification/)
|
||||
|
||||
Reference in New Issue
Block a user