ddf736ddef
Stage‑B alias/table negatives + Bridge v1 Closure negatives + docs sweep (minor)
...
- BundleResolver: fail-fast with tag on malformed alias table entries ([bundle/alias-table/bad] <entry>)
- Add opt-in negatives:
- canonicalize_closure_captures_negative_vm (captures wrong types)
- canonicalize_closure_missing_func_negative_vm (missing func in Closure)
- stageb_bundle_alias_table_bad_vm (malformed alias table)
- README minor replacements to (residuals)
All new tests are opt-in; quick remains green.
2025-11-02 17:57:41 +09:00
dd6876e1c6
Phase 20.12b: quick green + structural cleanup
...
- Deprecations: add warn-once for nyash.toml (runtime::deprecations); apply in plugin loader v2 (singletons/method_resolver)
- Child env + runner hygiene: unify Stage‑3/quiet/disable-fallback env in test/runner; expand LLVM noise filters
- Docs/branding: prefer and hako.toml in README.md/README.ja.md and smokes README
- VM: implement Map.clear in MIR interpreter (boxes_map)
- Stage‑B: gate bundle/alias/require smokes behind SMOKES_ENABLE_STAGEB; fix include cwd and resolve() call even for require-only cases
- Core‑Direct: gate rc boundary canary behind SMOKES_ENABLE_CORE_DIRECT
- Smokes: inject Stage‑3 and disable selfhost fallback for LLVM runs; filter using/* logs
- Quick profile: 168/168 PASS locally
This commit accelerates Phase 20.33 (80/20) by stabilizing quick suite, reducing noise, and gating heavy/experimental paths for speed.
2025-11-02 17:50:06 +09:00
0cd2342b05
core: add Core Direct string canaries (substring/charAt/replace); Stage‑B: alias table (ENV) support with BundleResolver; docs: Exit Code Policy tag→rc rules and checklist updates.
2025-11-02 16:24:50 +09:00
8b006575c1
smokes: enable Gate‑C budget canary by default (fallback allowed); add map_values_sum/map_keys_size; Stage‑B bundling routed via BundleResolver box; minor fixes.
2025-11-02 15:56:45 +09:00
a1d5b82683
runner: introduce CoreExecutor box for JSON→exec; wire Gate‑C pipe to CoreExecutor. Stage‑B bundling: duplicate name Fail‑Fast + mix canary; add Core Map/String positive smokes; add Gate‑C budget opt‑in canary; docs: Exit Code Policy; apply child_env in PyVM common util.
2025-11-02 15:43:43 +09:00
3aa0c3c875
fix(stage-b): Add sh_core using + Stage-1 JSON support
...
## Fixed Issues
1. compiler_stageb.hako: Added 'using sh_core as StringHelpers'
- Resolved: call unresolved ParserStringUtilsBox.skip_ws/2
- Root cause: using chain resolution not implemented
- Workaround: explicit using in parent file
2. stageb_helpers.sh: Accept Stage-1 JSON format
- Modified awk pattern to accept both formats:
- MIR JSON v0: "version":0, "kind":"Program"
- Stage-1 JSON: "type":"Program"
## Remaining Issues
ParserBox VM crash: Invalid value: use of undefined value ValueId(5839)
- Cause: Complex nested loops in parse_program2()
- Workaround: Minimal Stage-B (without ParserBox) works
- Fallback: Rust compiler path available
## Verification
✅ Minimal Stage-B outputs JSON correctly
❌ ParserBox execution crashes VM (SSA bug)
Co-Authored-By: Task先生 (AI Agent)
2025-11-02 08:23:43 +09:00
7180579cf8
stage-b (P0): stabilize entry — compiler_stageb.hako now emits Stage‑1 Program(JSON v0) directly (one-line), avoiding heavy MIR path; FlowEntry prefers v1→v0 first; noisy debug prints in pipeline with_usings gated. Quick core/stageb canaries PASS.
2025-11-02 07:22:40 +09:00
df9068a555
feat(stage-b): Add FLOW keyword support + fix Stage-3 keyword conflicts
...
## ✅ Fixed Issues
### 1. `local` keyword tokenization (commit 9aab64f7)
- Added Stage-3 gate for LOCAL/TRY/CATCH/THROW keywords
- LOCAL now only active when NYASH_PARSER_STAGE3=1
### 2. `env.local.get` keyword conflict
- File: `lang/src/compiler/entry/compiler_stageb.hako:21-23`
- Problem: `.local` in member access tokenized as `.LOCAL` keyword
- Fix: Commented out `env.local.get("HAKO_SOURCE")` line
- Fallback: Use `--source` argument (still functional)
### 3. `flow` keyword missing
- Added FLOW to TokenType enum (`src/tokenizer/kinds.rs`)
- Added "flow" → TokenType::FLOW mapping (`src/tokenizer/lex_ident.rs`)
- Added FLOW to Stage-3 gate (requires NYASH_PARSER_STAGE3=1)
- Added FLOW to parser statement dispatch (`src/parser/statements/mod.rs`)
- Added FLOW to declaration handler (`src/parser/statements/declarations.rs`)
- Updated box_declaration parser to accept BOX or FLOW (`src/parser/declarations/box_definition.rs`)
- Treat `flow FooBox {}` as syntactic sugar for `box FooBox {}`
### 4. Module namespace conversion
- Renamed `lang.compiler.builder.ssa.local` → `localvar` (avoid keyword)
- Renamed file `local.hako` → `local_ssa.hako`
- Converted 152 path-based using statements to namespace format
- Added 26+ entries to `nyash.toml` [modules] section
## ⚠️ Remaining Issues
### Stage-B selfhost compiler performance
- Stage-B compiler not producing output (hangs/times out after 10+ seconds)
- Excessive PHI debug output suggests compilation loop issue
- Needs investigation: infinite loop or N² algorithm in hako compiler
### Fallback JSON version mismatch
- Rust fallback (`--emit-mir-json`) emits MIR v1 JSON (schema_version: "1.0")
- Smoke tests expect MIR v0 JSON (`"version":0, "kind":"Program"`)
- stageb_helpers.sh fallback needs adjustment
## Test Status
- Parse errors: FIXED ✅
- Keyword conflicts: FIXED ✅
- Stage-B smoke tests: STILL FAILING ❌ (performance issue)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-02 04:13:17 +09:00
f813659d2e
refactor(compiler): Stage-B compiler simplification and test infrastructure
...
**Compiler Simplification (compiler_stageb.hako):**
- Remove complex fallback system (_fallback_enabled, _fallback_program)
- Remove flag parsing system (_collect_flags, _parse_signed_int)
- Streamline to single-method implementation (main only)
- Focus: parse args/env → extract main body → FlowEntry emit
- 149 lines simplified, better maintainability
**Parser Cleanup:**
- Fix trailing whitespace in members.rs (static_def)
- Add child_env module to runner/mod.rs
**Test Infrastructure (stageb_helpers.sh):**
- Enhance Stage-B test helper functions
- Better error handling and diagnostics
**Context:**
These changes were made during PHI UseBeforeDef debugging session.
Simplified compiler_stageb.hako eliminates unnecessary complexity
while maintaining core Stage-B compilation functionality.
**Impact:**
✅ Reduced Stage-B compiler complexity (-12 lines net)
✅ Clearer single-responsibility implementation
✅ Better test infrastructure support
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-01 20:58:26 +09:00
6279d93e9a
Stage‑B fallback TTL: HAKO_STAGEB_ALLOW_FALLBACK (default ON); Runner helper child_env (OOB strict helpers) and use in Gate‑C; Add quick smokes: map len/set/get, string index/substring; Bridge canonicalize tests default‑on; Update bridge scripts to robust root detection.
2025-11-01 19:48:40 +09:00
6a452b2dca
fix(mir): PHI検証panic修正 - update_cfg()を検証前に呼び出し
...
A案実装: debug_verify_phi_inputs呼び出し前にCFG predecessorを更新
修正箇所(7箇所):
- src/mir/builder/phi.rs:50, 73, 132, 143
- src/mir/builder/ops.rs:273, 328, 351
根本原因:
- Branch/Jump命令でsuccessorは即座に更新
- predecessorはupdate_cfg()で遅延再構築
- PHI検証が先に実行されてpredecessor未更新でpanic
解決策:
- 各debug_verify_phi_inputs呼び出し前に
if let Some(func) = self.current_function.as_mut() {
func.update_cfg();
}
を挿入してCFGを同期
影響: if/else文、論理演算子(&&/||)のPHI生成が正常動作
2025-11-01 13:28:56 +09:00
bec43ea206
compiler: route --stage-b through main entry; document Stage-B status
2025-11-01 08:59:43 +09:00
4f4ee948e0
Stage-B: add --v1-compat opt-in path and smoke
2025-11-01 03:56:25 +09:00
1f415e733c
Stage-B: route FlowEntry context (using/extern) and default Stage-B entry
2025-11-01 03:03:51 +09:00
978bb4a5c6
runner: add NyVM wrapper core_bridge (canonicalize/dump) + opt-in wrapper canary; export module in common_util
2025-11-01 02:51:49 +09:00
abe174830f
hako(compiler): Fix binary operators and if statements parsing
...
- Implement simplified binary operator parsing (+, -, *, /) with proper JSON output
- Add comparison operator parsing (==, >) for if statements
- Fix if statement parsing with proper body extraction and print statement handling
- Resolve missing parenthesis issue in if body parsing
- All smoke tests now PASS: hako_min_binop_vm.sh and hako_min_if_vm.sh
- Maintain existing functionality: array read/write, map rw canaries still green
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-10-31 23:00:06 +09:00
5208491e6e
hako( compiler): Stage-A enhancements - map literals, binary/compare operators, if statements, and error diagnostics
...
- Implement map literal parsing with basic key/value pairs: {a:1,b:2}
- Add binary operators (+, -, *, /) with precedence handling
- Add comparison operators (>, <, ==, !=, >=, <=) for if statements
- Implement minimal if statement parsing: if(condition){statement}
- Add string indexing error diagnostic for unsupported Stage-A features
- Create new smoke tests: hako_min_binop_vm.sh and hako_min_if_vm.sh
- Enhance JSON v0 output with proper ExprV0.Binary and ExprV0.Compare structures
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-10-31 22:48:46 +09:00
5e3d9e7ae4
restore(lang/compiler): bring back lang/src/compiler from e917d400; add Hako index canaries and docs; implement Rust-side index operator (Array/Map get/set) with Fail‑Fast diagnostics
...
- restore: lang/src/compiler/** (parser/emit/builder/pipeline_v2) from e917d400
- docs: docs/development/selfhosting/index-operator-hako.md
- smokes(hako): tools/smokes/v2/profiles/quick/core/index_operator_hako.sh (opt-in)
- smokes(vm): adjust index_operator_vm.sh for semicolon gate + stable error text
- rust/parser: allow IndexExpr and assignment LHS=Index; postfix parse LBRACK chain
- rust/builder: lower arr/map index to BoxCall get/set; annotate array/map literals; Fail‑Fast for unsupported types
- CURRENT_TASK: mark Rust side done; add Hako tasks checklist
Note: files disappeared likely due to branch FF to a lineage without lang/src/compiler; no explicit delete commit found. Added anchor checks and suggested CI guard in follow-up.
2025-10-31 20:18:39 +09:00