d2972c1437
feat(joinir): Phase 92完了 - ConditionalStep + body-local変数サポート
...
## Phase 92全体の成果
**Phase 92 P0-P2**: ConditionalStep JoinIR生成とbody-local変数サポート
- ConditionalStep(条件付きキャリア更新)のJoinIR生成実装
- Body-local変数(ch等)の条件式での参照サポート
- 変数解決優先度: ConditionEnv → LoopBodyLocalEnv
**Phase 92 P3**: BodyLocalPolicyBox + 安全ガード
- BodyLocalPolicyDecision実装(Accept/Reject判定)
- BodyLocalSlot + DualValueRewriter(JoinIR/MIR二重書き込み)
- Fail-Fast契約(Cannot promote LoopBodyLocal検出)
**Phase 92 P4**: E2E固定+回帰最小化 (本コミット)
- Unit test 3本追加(body-local変数解決検証)
- Integration smoke追加(phase92_pattern2_baseline.sh、2ケースPASS)
- P4-E2E-PLAN.md、P4-COMPLETION.md作成
## 主要な実装
### ConditionalStep(条件付きキャリア更新)
- `conditional_step_emitter.rs`: JoinIR Select命令生成
- `loop_with_break_minimal.rs`: ConditionalStep検出と統合
- `loop_with_continue_minimal.rs`: Pattern4対応
### Body-local変数サポート
- `condition_lowerer.rs`: body-local変数解決機能
- `lower_condition_to_joinir`: body_local_env パラメータ追加
- 変数解決優先度実装(ConditionEnv優先)
- Unit test 3本追加: 変数解決/優先度/エラー
- `header_break_lowering.rs`: break条件でbody-local変数参照
- 7ファイルで後方互換ラッパー(lower_condition_to_joinir_no_body_locals)
### Body-local Policy & Safety
- `body_local_policy.rs`: BodyLocalPolicyDecision(Accept/Reject)
- `body_local_slot.rs`: JoinIR/MIR二重書き込み
- `dual_value_rewriter.rs`: ValueId書き換えヘルパー
## テスト体制
### Unit Tests (+3)
- `test_body_local_variable_resolution`: body-local変数解決
- `test_variable_resolution_priority`: 変数解決優先度(ConditionEnv優先)
- `test_undefined_variable_error`: 未定義変数エラー
- 全7テストPASS(cargo test --release condition_lowerer::tests)
### Integration Smoke (+1)
- `phase92_pattern2_baseline.sh`:
- Case A: loop_min_while.hako (Pattern2 baseline)
- Case B: phase92_conditional_step_minimal.hako (条件付きインクリメント)
- 両ケースPASS、integration profileで発見可能
### 退行確認
- ✅ 既存Pattern2Breakテスト正常(退行なし)
- ✅ Phase 135 smoke正常(MIR検証PASS)
## アーキテクチャ設計
### 変数解決メカニズム
```rust
// Priority 1: ConditionEnv (loop params, captured)
if let Some(value_id) = env.get(name) { return Ok(value_id); }
// Priority 2: LoopBodyLocalEnv (body-local like `ch`)
if let Some(body_env) = body_local_env {
if let Some(value_id) = body_env.get(name) { return Ok(value_id); }
}
```
### Fail-Fast契約
- Delta equality check (conditional_step_emitter.rs)
- Variable resolution error messages (ConditionEnv)
- Body-local promotion rejection (BodyLocalPolicyDecision::Reject)
## ドキュメント
- `P4-E2E-PLAN.md`: 3レベルテスト戦略(Level 1-2完了、Level 3延期)
- `P4-COMPLETION.md`: Phase 92完了報告
- `README.md`: Phase 92全体のまとめ
## 将来の拡張(Phase 92スコープ外)
- Body-local promotionシステム拡張
- P5bパターン認識の汎化(flagベース条件サポート)
- 完全なP5b E2Eテスト(body-local promotion実装後)
🎯 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2025-12-16 21:37:07 +09:00
7e03cb6425
docs(phase-91): Update Phase 91 README with Step 2 completion status
...
### Updates
#### 1. Status Section
- Updated Status to reflect all completed steps (1, 2-A/B/D, 2-E)
- Documented parity verification success
#### 2. Completion Status Section (NEW)
- Added dedicated section for Phase 91 Step 2 completion
- Listed all deliverables with checkmarks
- Documented test results: 1062/1062 PASS
#### 3. Next Steps
- Clarified Phase 92 lowering requirements
- Updated timeline expectations
#### 4. Test Fixture Fix
- Fixed syntax error in test_pattern5b_escape_minimal.hako
(field declarations: changed `console: ConsoleBox` to `console ConsoleBox`)
### Context
Phase 91 Step 2 is now fully complete:
- ✅ AST recognizer (detect_escape_skip_pattern)
- ✅ Canonicalizer integration (UpdateKind::ConditionalStep)
- ✅ Unit tests (test_escape_skip_pattern_recognition)
- ✅ Parity verification (strict mode green)
Ready for Phase 92 lowering implementation.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2025-12-16 14:55:40 +09:00
9e3b258046
feat(phase-91): JoinIR Selfhost depth-2 advancement - Pattern P5b design & planning
...
## Overview
Analyzed 34 loops across selfhost codebase to identify JoinIR coverage gaps.
Current readiness: 47% (16/30 loops). Next frontier: Pattern P5b (Escape Handling).
## Current Status
- Phase 91 planning document: Complete
- Loop inventory across 6 key files
- Priority ranking: P5b (escape) > P5 (guard) > P6 (nested)
- Effort estimates and ROI analysis
- Pattern P5b Design: Complete
- Problem statement (variable-step carriers)
- Pattern definition with Skeleton layout
- Recognition algorithm (8-step detection)
- Capability taxonomy (P5b-specific guards)
- Lowering strategy (Phase 92 preview)
- Test fixture: Created
- Minimal escape sequence parser
- JSON string with backslash escape
- Loop Canonicalizer extended
- Capability table updated with P5b entries
- Fail-Fast criteria documented
- Implementation checklist added
## Key Findings
### Loop Readiness Matrix
| Category | Count | JoinIR Status |
|----------|-------|--------------|
| Pattern 1 (simple bounded) | 16 | ✅ Ready |
| Pattern 2 (with break) | 1 | ⚠️ Partial |
| **Pattern P5b (escape seq)** | ~3 | ❌ NEW |
| Pattern P5 (guard-bounded) | ~2 | ❌ Deferred |
| Pattern P6 (nested loops) | ~8 | ❌ Deferred |
### Top Candidates
1. **P5b**: json_loader.hako:30 (8 lines, high reuse)
- Effort: 2-3 days (recognition)
- Impact: Unlocks all escape parsers
2. **P5**: mini_vm_core.hako:541 (204 lines, monolithic)
- Effort: 1-2 weeks
- Impact: Major JSON optimization
3. **P6**: seam_inspector.hako:76 (7+ nesting)
- Effort: 2-3 weeks
- Impact: Demonstrates nested composition
## Phase 91 Strategy
**Recognition-only phase** (no lowering in P1):
- Step 1: Design & planning ✅
- Step 2: Canonicalizer implementation (detect_escape_pattern)
- Step 3: Unit tests + parity verification
- Step 4: Lowering deferred to Phase 92
## Files Added
- docs/development/current/main/phases/phase-91/README.md - Full analysis & planning
- docs/development/current/main/design/pattern-p5b-escape-design.md - Technical design
- tools/selfhost/test_pattern5b_escape_minimal.hako - Test fixture
## Files Modified
- docs/development/current/main/design/loop-canonicalizer.md
- Capability table extended with P5b entries
- Pattern P5b full section added
- Implementation checklist updated
## Acceptance Criteria (Phase 91 Step 1)
- ✅ Loop inventory complete (34 loops across 6 files)
- ✅ Pattern P5b design document ready
- ✅ Test fixture created
- ✅ Capability taxonomy extended
- ⏳ Implementation deferred (Step 2+)
## References
- JoinIR Architecture: joinir-architecture-overview.md
- Phase 91 Plan: phases/phase-91/README.md
- P5b Design: design/pattern-p5b-escape-design.md
Next: Implement detect_escape_pattern() recognition in Phase 91 Step 2
🤖 Generated with Claude Code
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2025-12-16 14:22:36 +09:00
2674e074b6
feat(joinir): Phase 142 P2 Step 3-A - Pattern4 early return fail-fast
2025-12-16 13:48:30 +09:00
d7805e5974
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
2025-12-10 00:01:53 +09:00
e30116f53d
feat(joinir): Phase 171-fix ConditionEnv/ConditionBinding architecture
...
Proper HOST↔JoinIR ValueId separation for condition variables:
- Add ConditionEnv struct (name → JoinIR-local ValueId mapping)
- Add ConditionBinding struct (HOST/JoinIR ValueId pairs)
- Modify condition_to_joinir to use ConditionEnv instead of builder.variable_map
- Update Pattern2 lowerer to build ConditionEnv and ConditionBindings
- Extend JoinInlineBoundary with condition_bindings field
- Update BoundaryInjector to inject Copy instructions for condition variables
This fixes the undefined ValueId errors where HOST ValueIds were being
used directly in JoinIR instructions. Programs now execute (RC: 0),
though loop variable exit values still need Phase 172 work.
Key invariants established:
1. JoinIR uses ONLY JoinIR-local ValueIds
2. HOST↔JoinIR bridging is ONLY through JoinInlineBoundary
3. condition_to_joinir NEVER accesses builder.variable_map
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-07 01:45:03 +09:00
b8a9d08894
feat(joinir): Phase 165 Pattern4 (continue) validation complete - ALL PATTERNS NOW WORKING!
...
- Created 3 representative Pattern4 test cases:
* test_pattern4_simple_continue.hako - Simple continue loop (odd number sum)
* test_pattern4_parse_string.hako - String parsing with escape + continue
* test_pattern4_parse_array.hako - Array element parsing with continue
- Validated Pattern4_WithContinue detection:
* All 3 test cases: Pattern4_WithContinue MATCHED ✅
* JoinIR lowering successful (20-24 blocks → 14-20 blocks)
* [joinir/freeze] elimination: Complete (no errors on any test)
- Verified execution correctness:
* test_pattern4_simple_continue: Sum=25 (1+3+5+7+9) ✅ CORRECT
* test_pattern4_parse_string: Execution successful, expected error handling
* test_pattern4_parse_array: Execution successful, expected error handling
- **MAJOR MILESTONE**: All 4 Loop Patterns Now Complete!
* Pattern1 (Simple): 6 loops ✅
* Pattern2 (Break): 5 loops ✅
* Pattern3 (If-Else PHI): 1 loop ✅
* Pattern3+break (as Pattern2): 3 loops ✅
* Pattern4 (Continue): 3 loops ✅
* Total: 18 loops covered, zero [joinir/freeze] errors!
- Updated CURRENT_TASK.md with Phase 165 section and complete statistics
Next phases:
* Phase 166: JsonParserBox full implementation & verification
* Phase 167: .hako JoinIR Frontend prototype development
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-06 16:25:33 +09:00
701f1fd650
feat(joinir): Phase 164 Pattern3 (If-Else PHI) validation complete
...
- Created 4 representative test cases for Pattern3 patterns:
* test_pattern3_if_phi_no_break.hako - Core Pattern3 (if-else PHI, no break/continue)
* test_pattern3_skip_whitespace.hako - Pattern3+break style (routed to Pattern2)
* test_pattern3_trim_leading.hako - Pattern3+break style (routed to Pattern2)
* test_pattern3_trim_trailing.hako - Pattern3+break style (routed to Pattern2)
- Validated Pattern3_WithIfPhi detection:
* Pattern routing: Pattern3_WithIfPhi MATCHED confirmed
* JoinIR lowering: 3 functions, 20 blocks → 8 blocks (successful)
* [joinir/freeze] elimination: Complete (no errors on any test)
- Clarified pattern classification:
* Pattern3_WithIfPhi handles if-else PHI without break/continue
* Loops with "if-else PHI + break" are routed to Pattern2_WithBreak
* Break takes priority over if-else PHI in pattern detection
- Cumulative achievement (Phase 162-164):
* Pattern1: 6 loops working ✅
* Pattern2: 5 loops working ✅
* Pattern3 (no break): 1 loop working ✅
* Pattern3+break (as Pattern2): 3 loops working ✅
* Total: 15 loops covered, zero [joinir/freeze] errors
- Updated CURRENT_TASK.md with Phase 164 section and findings
Next: Phase 165 Pattern4 (continue) validation
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-06 16:22:38 +09:00
a9e10d2a6a
feat(selfhost): Phase 81 Strict + Fail-Fast mode support
...
Phase 81: selfhost_build.sh に JoinIR Core/Strict モードサポート追加
## 変更内容
### 新オプション
- `--core`: JoinIR Core ON モード有効化 (Phase 80)
- `--strict`: Strict モード有効化(失敗時フォールバック禁止)
### 環境変数伝播
- `NYASH_JOINIR_CORE`: apply_selfhost_env() 経由で伝播
- `NYASH_JOINIR_STRICT`: apply_selfhost_env() 経由で伝播
### ドキュメント
- Usage コメントに全オプションと環境変数を記載
## 使用例
```bash
# Core ON + Strict mode
tools/selfhost/selfhost_build.sh --in test.hako --core --strict --run
# 環境変数経由
NYASH_JOINIR_CORE=1 NYASH_JOINIR_STRICT=1 tools/selfhost/selfhost_build.sh --in test.hako --run
```
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 13:46:51 +09:00
804ccff23f
feat(phase73): Selfhost Stage-B I/O 簡素化 - HAKO_SRC 環境変数統一化
...
Unified selfhost Stage-B I/O path from argv to environment variables:
- Remove --source "$SRC_CONTENT" from compiler.hako invocation (argv limit)
- Export HAKO_SRC="$SRC_CONTENT" instead (env-based I/O)
- Update compiler_stageb.hako to check HAKO_SRC fallback
Changes:
1. lang/src/compiler/entry/compiler_stageb.hako:
- Added HAKO_SRC env check in StageBArgsBox.resolve_src()
- Fallback order: --source arg → HAKO_SOURCE_FILE_CONTENT → HAKO_SRC → default
2. tools/selfhost/selfhost_build.sh:
- Removed --source "$SRC_CONTENT" from compiler.hako invocation
- Export HAKO_SRC="$SRC_CONTENT" before Stage-B execution
- Unified with wrapper pathway (HAKO_USE_BUILDBOX=1)
Benefits:
- Eliminates "Argument list too long" (os error 7) for large .hako files
- Single unified I/O pattern (env variables) for all Stage-B paths
- Consistent with hako_check.sh and wrapper pattern
- Ready for future HAKO_SRC_FILE optimization
Verification:
✅ NYASH_FEATURES=stage3 NYASH_USE_NY_COMPILER=1 \
./tools/selfhost/selfhost_build.sh --in apps/tests/stage1_run_min.hako --run
Output: abc (correct)
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 13:09:10 +09:00
97a776aac3
feat(phase73): Stage-3 ENV consolidation complete - Shell scripts
...
Phase 73-B: Unified legacy Stage-3 environment variables in 27 shell scripts:
- Replaced NYASH_PARSER_STAGE3=1 → NYASH_FEATURES=stage3
- Replaced HAKO_PARSER_STAGE3=1 → NYASH_FEATURES=stage3
- Updated all variant patterns (with/without assignments)
Files modified (27 total):
- tools/dev/*.sh (9 files)
- tools/dev_stageb.sh, dump_stageb_min_mir.sh, hakorune_emit_mir.sh
- tools/joinir_ab_test.sh, ny_selfhost_inline.sh
- tools/perf/*.sh, tools/selfhost/*.sh (9 files)
- tools/hako_check/dot_edges_smoke.sh, tools/selfhost_smoke.sh
Complete Phase 73 consolidation count:
- Phase 73-A: 20 test files + 2 special files (stage3 compat)
- Phase 73-B: 27 shell script files
- Total: 49 files with legacy Stage-3 ENV consolidated
Next: Phase 72 (JoinIR EXPERIMENT SSOT consolidation)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 12:38:01 +09:00
8633224061
JoinIR/SSA/Stage-3: sync CURRENT_TASK and dev env
2025-12-01 11:10:46 +09:00
a3d5bacc55
Phase 30.1 & 73: Stage-3 features env and JoinIR flag cleanup
2025-11-30 14:30:28 +09:00
eadde8d1dd
fix(mir/builder): use function-local ValueId throughout MIR builder
...
Phase 25.1b: Complete SSA fix - eliminate all global ValueId usage in function contexts.
Root cause: ~75 locations throughout MIR builder were using global value
generator (self.value_gen.next()) instead of function-local allocator
(f.next_value_id()), causing SSA verification failures and runtime
"use of undefined value" errors.
Solution:
- Added next_value_id() helper that automatically chooses correct allocator
- Fixed 19 files with ~75 occurrences of ValueId allocation
- All function-context allocations now use function-local IDs
Files modified:
- src/mir/builder/utils.rs: Added next_value_id() helper, fixed 8 locations
- src/mir/builder/builder_calls.rs: 17 fixes
- src/mir/builder/ops.rs: 8 fixes
- src/mir/builder/stmts.rs: 7 fixes
- src/mir/builder/emission/constant.rs: 6 fixes
- src/mir/builder/rewrite/*.rs: 10 fixes
- + 13 other files
Verification:
- cargo build --release: SUCCESS
- Simple tests with NYASH_VM_VERIFY_MIR=1: Zero undefined errors
- Multi-parameter static methods: All working
Known remaining: ValueId(22) in Stage-B (separate issue to investigate)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-17 00:48:18 +09:00
7ca7f646de
Phase 25.1b: Step2完了(FuncBodyBasicLowerBox導入)
...
Step2実装内容:
- FuncBodyBasicLowerBox導入(defs専用下請けモジュール)
- _try_lower_local_if_return実装(Local+単純if)
- _inline_local_ints実装(軽い正規化)
- minimal lowers統合(Return/BinOp/IfCompare/MethodArray系)
Fail-Fast体制確立:
- MirBuilderBox: defs_onlyでも必ずタグ出力
- [builder/selfhost-first:unsupported:defs_only]
- [builder/selfhost-first:unsupported:no_match]
Phase構造整備:
- Phase 25.1b README新設(Step0-3計画)
- Phase 25.2b README新設(次期計画)
- UsingResolverBox追加(using system対応準備)
スモークテスト:
- stage1_launcher_program_to_mir_canary_vm.sh追加
Next: Step3 LoopForm対応
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-15 22:32:13 +09:00
6856922374
Phase 25.1a: selfhost builder hotfix (fn rename, docs)
2025-11-15 05:42:32 +09:00
981ddd890c
Phase 22.1 WIP: SSOT resolver + TLV infrastructure + Hako MIR builder setup
...
Setup infrastructure for Phase 22.1 (TLV C shim & Resolver SSOT):
Core changes:
- Add nyash_tlv, nyash_c_core, nyash_kernel_min_c crates (opt-in)
- Implement SSOT resolver bridge (src/using/ssot_bridge.rs)
- Add HAKO_USING_SSOT=1 / HAKO_USING_SSOT_HAKO=1 env support
- Add HAKO_TLV_SHIM=1 infrastructure (requires --features tlv-shim)
MIR builder improvements:
- Fix using/alias consistency in Hako MIR builder
- Add hako.mir.builder.internal.{prog_scan,pattern_util} to nyash.toml
- Normalize LLVM extern calls: nyash.console.* → nyash_console_*
Smoke tests:
- Add phase2211 tests (using_ssot_hako_parity_canary_vm.sh)
- Add phase2220, phase2230, phase2231 test structure
- Add phase2100 S3 backend selector tests
- Improve test_runner.sh with quiet/timeout controls
Documentation:
- Add docs/ENV_VARS.md (Phase 22.1 env vars reference)
- Add docs/development/runtime/C_CORE_ABI.md
- Update de-rust-roadmap.md with Phase 22.x details
Tools:
- Add tools/hakorune_emit_mir.sh (Hako-first MIR emission wrapper)
- Add tools/tlv_roundtrip_smoke.sh placeholder
- Improve ny_mir_builder.sh with better backend selection
Known issues (to be fixed):
- Parser infinite loop in static method parameter parsing
- Stage-B output contamination with "RC: 0" (needs NYASH_JSON_ONLY=1)
- phase2211/using_ssot_hako_parity_canary_vm.sh fork bomb (needs recursion guard)
Next steps: Fix parser infinite loop + Stage-B quiet mode for green tests
2025-11-09 15:11:18 +09:00
301b1d212a
Phase 21.2 Complete: VM Adapter正規実装 + devブリッジ完全撤去
...
## 🎉 Phase 21.2完全達成
### ✅ 実装完了
- VM static box 永続化(singleton infrastructure)
- devブリッジ完全撤去(adapter_dev.rs削除、by-name dispatch削除)
- .hako正規実装(MirCallV1Handler, AbiAdapterRegistry等)
- text-merge経路完全動作
- 全phase2120 adapter reps PASS(7テスト)
### 🐛 バグ修正
1. strip_local_decl修正
- トップレベルのみlocal削除、メソッド内は保持
- src/runner/modes/common_util/hako.rs:29
2. static box フィールド永続化
- MirInterpreter singleton storage実装
- me parameter binding修正(1:1マッピング)
- getField/setField string→singleton解決
- src/backend/mir_interpreter/{mod,exec,handlers/boxes_object_fields}.rs
3. Map.len alias rc=0修正
- [map/missing]パターン検出でnull扱い(4箇所)
- lang/src/vm/boxes/mir_call_v1_handler.hako:91-93,131-133,151-153,199-201
### 📁 主要変更ファイル
#### Rust(VM Runtime)
- src/backend/mir_interpreter/mod.rs - static box singleton storage
- src/backend/mir_interpreter/exec.rs - parameter binding fix
- src/backend/mir_interpreter/handlers/boxes_object_fields.rs - singleton resolution
- src/backend/mir_interpreter/handlers/calls.rs - dev bridge removal
- src/backend/mir_interpreter/utils/mod.rs - adapter_dev module removal
- src/backend/mir_interpreter/utils/adapter_dev.rs - DELETED (7555 bytes)
- src/runner/modes/vm.rs - static box declaration collection
- src/runner/modes/common_util/hako.rs - strip_local_decl fix
- src/instance_v2.rs - Clone implementation
#### Hako (.hako実装)
- lang/src/vm/boxes/mir_call_v1_handler.hako - [map/missing] detection
- lang/src/vm/boxes/abi_adapter_registry.hako - NEW (adapter registry)
- lang/src/vm/helpers/method_alias_policy.hako - method alias support
#### テスト
- tools/smokes/v2/profiles/quick/core/phase2120/s3_vm_adapter_*.sh - 7 new tests
### 🎯 テスト結果
```
✅ s3_vm_adapter_array_len_canary_vm.sh
✅ s3_vm_adapter_array_len_per_recv_canary_vm.sh
✅ s3_vm_adapter_array_length_alias_canary_vm.sh
✅ s3_vm_adapter_array_size_alias_canary_vm.sh
✅ s3_vm_adapter_map_len_alias_state_canary_vm.sh
✅ s3_vm_adapter_map_length_alias_state_canary_vm.sh
✅ s3_vm_adapter_map_size_struct_canary_vm.sh
```
環境フラグ: HAKO_ABI_ADAPTER=1 HAKO_ABI_ADAPTER_DEV=0
### 🏆 設計品質
- ✅ ハードコード禁止(AGENTS.md 5.1)完全準拠
- ✅ 構造的・一般化設計(特定Box名のif分岐なし)
- ✅ 後方互換性保持(既存コード破壊ゼロ)
- ✅ text-merge経路(.hako依存関係正しくマージ)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-07 19:32:44 +09:00
77d4fd72b3
phase: 20.49 COMPLETE; 20.50 Flow+String minimal reps; 20.51 selfhost v0/v1 minimal (Option A/B); hv1-inline binop/unop/copy; docs + run_all + CURRENT_TASK -> 21.0
2025-11-06 15:41:52 +09:00
cf3908d438
deprecations: warn-once for nyash.toml (already wired) + child_env audit (spawns use helper); docs sweep to prefer and hako.toml in README.*; smokes: add Core‑Direct negative rc canaries (array oob set, map bad key) and verified quick/core core_direct suite green
2025-11-02 19:02:23 +09:00
9c67343420
Selfhost: EXE path switched to Program(JSON v0) → MIR(JSON) → ny-llvmc; BuildBox opts (structured via env/array) and Bridge v1 positive canary
...
- selfhost_build.sh: EXE now converts Stage‑B Program(JSON v0) to MIR(JSON) via --json-file + --program-json-to-mir, then feeds ny-llvmc
- BuildBox: accept minimal opts via env or simple array parsing (alias_table, require_mods)
- Add positive v1 bridge canary: canonicalize_method_size_on_array_vm.sh (quick)
2025-11-02 18:54:16 +09:00
cd67911dae
BuildBox: env alias/require minimal bundling; selfhost tool: add --mir and docs
...
- BuildBox.emit_program_json_v0: use BundleResolver via env (HAKO_BUNDLE_ALIAS_TABLE, HAKO_REQUIRE_MODS)
- selfhost_build.sh: add --mir to emit MIR(JSON); document HAKO_USE_BUILDBOX for emit-only path
2025-11-02 18:48:34 +09:00
0eeae54434
Selfhost: prefer BuildBox for emit-only (opt-in) and fix selfhost smokes root detection
...
- selfhost_build.sh: HAKO_USE_BUILDBOX=1 uses BuildBox.emit_program_json_v0 for emit-only paths
- Fix ROOT detection in selfhost and bridge negative smokes
- All selfhost smokes pass (opt-in)
2025-11-02 18:22:15 +09:00
2dcf5006c6
Selfhost build: add EXE path via ny-llvmc (tools) + smoke
...
- tools/selfhost/selfhost_build.sh: support --exe <out>, using LLVM harness (ny-llvmc)
- Add selfhost EXE canary (opt-in): selfhost_build_exe_return.sh
- Keep Stage‑B JSON emit for verification; EXE path currently parses original Hako source (80/20)
2025-11-02 18:16:11 +09:00
075257a948
Hybrid selfhost build (tools) + opt-in smokes
...
- Add tools/selfhost/selfhost_build.sh: Stage‑B emit(JSON v0) + optional Core‑Direct (in-proc) run
- Add tools/selfhost/README.md
- Add opt-in smokes: selfhost_build_return_vm, selfhost_build_binop_vm (SMOKES_ENABLE_SELFHOST=1)
This establishes the mixed selfhost route (Hakorune Stage‑B front), ready to expand toward full build.
2025-11-02 18:07:33 +09:00