feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions
Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization. Changes: 1. PatternPipelineContext: - Added loop_condition: Option<ASTNode> - Added loop_body: Option<Vec<ASTNode>> - Added loop_update_summary: Option<LoopUpdateSummary> - Updated build_pattern_context() for Pattern 3 2. CarrierUpdateInfo: - Added then_expr: Option<ASTNode> - Added else_expr: Option<ASTNode> - Updated analyze_loop_updates() with None defaults Status: Phase 213-2 Steps 2-2 & 2-3 complete Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
This commit is contained in:
@ -145,14 +145,15 @@ NYASH_CLI_VERBOSE=2 \
|
||||
JoinIR は制御構造を関数呼び出し + 継続に正規化する IR 層。フラグは config/env のポリシーで集約するよ。
|
||||
|
||||
**ポリシー入口**
|
||||
- `joinir_core_enabled()` … `NYASH_JOINIR_CORE` が優先。未設定時は `NYASH_JOINIR_EXPERIMENT` や IfSelect/VM bridge/LLVM 実験の明示設定で自動 ON。
|
||||
- `joinir_core_enabled()` … JoinIR は常に ON。`NYASH_JOINIR_CORE` は deprecated で無視(0 を指定すると警告だけ出す)。
|
||||
- `joinir_dev_enabled()` … `NYASH_JOINIR_DEV=1` または JoinIR debug level > 0 で ON(開発者向け束ねスイッチ)。
|
||||
|
||||
LoopBuilder は物理削除済みで、JoinIR を OFF にするモードは存在しない。
|
||||
|
||||
### Core(本線化対象)
|
||||
|
||||
| 変数 | デフォルト | 説明 |
|
||||
| --- | --- | --- |
|
||||
| `NYASH_JOINIR_CORE` | unset | Core トグルの明示 ON/OFF(未設定時は下記を見て自動判定) |
|
||||
| `NYASH_JOINIR_EXPERIMENT` | OFF | JoinIR 実験メイントグル(Core 判定に含まれる) |
|
||||
| `HAKO_JOINIR_IF_SELECT` | OFF | IfSelect/IfMerge JoinIR 経路。エイリアス `NYASH_JOINIR_IF_SELECT` は Deprecated。 |
|
||||
| `HAKO_JOINIR_IF_IN_LOOP_ENABLE` | OFF | if-in-loop JoinIR 本線切替(Core 候補)。 |
|
||||
@ -180,14 +181,15 @@ JoinIR は制御構造を関数呼び出し + 継続に正規化する IR 層。
|
||||
|
||||
| 変数 | 状態 | 説明 |
|
||||
| --- | --- | --- |
|
||||
| `NYASH_JOINIR_CORE` | Deprecated | JoinIR 本線の ON/OFF トグルだったが、LoopBuilder 削除後は無効化不可。設定しても警告のみにして無視する。 |
|
||||
| `HAKO_JOINIR_NESTED_IF` | Deprecated候補 | Route B nested if。 |
|
||||
| `HAKO_JOINIR_READ_QUOTED` / `_IFMERGE` | Deprecated候補 | read_quoted JoinIR 実験。 |
|
||||
|
||||
### 使用例
|
||||
|
||||
```bash
|
||||
# Core JoinIR + Stage-3(推奨)
|
||||
env NYASH_FEATURES=stage3 NYASH_JOINIR_CORE=1 ./target/release/hakorune program.hako
|
||||
# JoinIR は常に ON。Stage-3(推奨)
|
||||
env NYASH_FEATURES=stage3 ./target/release/hakorune program.hako
|
||||
|
||||
# VM bridge Route B(開発用)
|
||||
env NYASH_FEATURES=stage3 NYASH_JOINIR_EXPERIMENT=1 NYASH_JOINIR_VM_BRIDGE=1 ./target/release/hakorune program.hako
|
||||
|
||||
@ -11,7 +11,7 @@ PyVMは**一般的なプログラム実行には使用しないでください**
|
||||
#### 1. JSON v0ブリッジ機能
|
||||
```bash
|
||||
# セルフホスティング実行(PyVM自動使用)
|
||||
NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
NYASH_SELFHOST_EXEC=1 ./target/release/hakorune program.hako
|
||||
```
|
||||
- **用途**: Rust→Python連携でMIR JSON生成
|
||||
- **重要性**: Phase 15.3コンパイラMVP開発に必須
|
||||
@ -20,7 +20,7 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
#### 2. using処理共通パイプライン
|
||||
```bash
|
||||
# using前処理(PyVM内部使用)
|
||||
./target/release/nyash --enable-using program_with_using.hako
|
||||
./target/release/hakorune --enable-using program_with_using.hako
|
||||
```
|
||||
- **用途**: `strip_using_and_register`統一処理
|
||||
- **重要性**: Rust VM・LLVMとの共通前処理基盤
|
||||
@ -29,7 +29,7 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
#### 3. サンドボックス実行環境
|
||||
```bash
|
||||
# 開発者の明示的使用(上級者のみ)
|
||||
NYASH_VM_USE_PY=1 ./target/release/nyash program.hako
|
||||
NYASH_VM_USE_PY=1 ./target/release/hakorune program.hako
|
||||
```
|
||||
- **用途**: 安全なコード実行制御、実験的検証
|
||||
- **対象**: 開発者・研究者の明示的使用のみ
|
||||
@ -39,7 +39,7 @@ NYASH_VM_USE_PY=1 ./target/release/nyash program.hako
|
||||
#### 1. 一般的なプログラム実行
|
||||
```bash
|
||||
# ❌ 使わないでください
|
||||
NYASH_VM_USE_PY=1 ./target/release/nyash my_application.hako
|
||||
NYASH_VM_USE_PY=1 ./target/release/hakorune my_application.hako
|
||||
|
||||
# ✅ 代わりにこれを使用
|
||||
./target/release/nyash my_application.hako # Rust VM
|
||||
@ -156,4 +156,4 @@ NYASH_VM_USE_PY=1 ./target/release/nyash hello_world.hako
|
||||
- **非推奨**: 一般実行・性能測定・新機能開発
|
||||
- **推奨**: Rust VM(開発)+ LLVM(本番)の2本柱
|
||||
|
||||
この方針により、Phase 15の開発効率を最大化し、重要機能を安全に保持できます。
|
||||
この方針により、Phase 15の開発効率を最大化し、重要機能を安全に保持できます。
|
||||
|
||||
Reference in New Issue
Block a user