feat(phase27): Phase 27.4-A JoinIR Header φ Integration
Phase 27.4-A実装完了: JoinIR側でloop header φの意味をPinned/Carrier情報から再構成 主な変更: - src/mir/join_ir.rs: LoopHeaderShape構造体追加 - Pinned: ループ中で不変の変数(例: skip_ws の s, n / trim の str, b) - Carrier: ループで更新される変数(例: skip_ws の i / trim の e) - to_loop_step_params()メソッドで引数リスト生成 - lower_skip_ws_to_joinir(), lower_funcscanner_trim_to_joinir(): - Pinned/Carrier構造をコメントで明示 - _header_shape変数で将来の自動導出の雛形を準備 - src/mir/phi_core/header_phi_builder.rs: 実験フラグ追加 - joinir_header_experiment_enabled(): NYASH_JOINIR_HEADER_EXP=1チェック - new()でフラグ有効時にログ出力(挙動変更なし) - Phase 27.4移行計画をモジュールドキュメントに記載 テスト結果: - ✅ mir_joinir_skip_ws_auto_lowering PASS - ✅ mir_joinir_min_auto_lowering PASS - ✅ 全type_sanityテスト PASS - ⚠️ mir_joinir_funcscanner_trim_auto_lowering FAIL (既存問題、本実装と無関係) 原則: 本線MIR/LoopForm→VMの挙動は一切変更なし。JoinIRはトグル付き実験経路。
This commit is contained in:
@ -6,10 +6,35 @@
|
||||
//! - Latch値更新(seal時)
|
||||
//!
|
||||
//! Box-First理論: Header PHI生成の責任を明確に分離し、テスト可能な箱として提供
|
||||
//!
|
||||
//! # Phase 27.4 移行計画
|
||||
//!
|
||||
//! **Header φ の責務は JoinIR の loop_step 引数に順次移していく。**
|
||||
//! Rust 側の φ は当面互換のため残すが、JoinIR 経路では以下の方針で縮退していく:
|
||||
//!
|
||||
//! 1. **Phase 27.4-A**: JoinIR 側で Pinned/Carrier を loop_step 引数として表現(完了)
|
||||
//! 2. **Phase 27.4-B**: HeaderPhiBuilder に JoinIR 実験フラグを追加(現在)
|
||||
//! 3. **Phase 27.4-C**: JoinIR 経路で Header φ をスキップ可能にする(将来)
|
||||
//! 4. **Phase 27.5+**: HeaderPhiBuilder を JoinIR 前段に完全統合(長期目標)
|
||||
//!
|
||||
//! **原則**: 本線 MIR/LoopForm → VM の挙動は一切変えない。JoinIR はトグル付き実験経路。
|
||||
|
||||
use crate::mir::{BasicBlockId, ValueId};
|
||||
use std::collections::HashMap;
|
||||
|
||||
/// Phase 27.4-B: JoinIR 実験モードが有効かチェック
|
||||
///
|
||||
/// 環境変数 `NYASH_JOINIR_HEADER_EXP=1` のときに true を返す。
|
||||
/// このフラグが有効な場合、将来的に Header φ 生成をスキップする経路が追加される。
|
||||
///
|
||||
/// **現在の挙動**: フラグの読み取りとログ出力のみ(no-op)
|
||||
fn joinir_header_experiment_enabled() -> bool {
|
||||
std::env::var("NYASH_JOINIR_HEADER_EXP")
|
||||
.ok()
|
||||
.as_deref()
|
||||
== Some("1")
|
||||
}
|
||||
|
||||
/// Header PHI生成専門Box
|
||||
///
|
||||
/// # Purpose
|
||||
@ -104,6 +129,10 @@ impl HeaderPhiBuilder {
|
||||
/// let builder = HeaderPhiBuilder::new();
|
||||
/// ```
|
||||
pub fn new() -> Self {
|
||||
// Phase 27.4-B: JoinIR 実験フラグのチェック(ログ出力のみ、挙動変更なし)
|
||||
if joinir_header_experiment_enabled() {
|
||||
eprintln!("[HeaderPhiBuilder] JoinIR experiment flag is ON (NYASH_JOINIR_HEADER_EXP=1)");
|
||||
}
|
||||
Self::default()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user