81211c22ad
feat: MIR Call命令統一Phase 3.1-3.2完了!統一Call実装進行中
...
✨ Phase 3.1-3.2実装完了
- build_indirect_call_expressionでCallTarget::Value使用
- print関数をcall_global print()として統一
- build_function_callでemit_unified_call使用
- ExternCall(env.console.log)→Callee::Global(print)完全移行
🏗️ MIR統一基盤構築
- src/mir/definitions/call_unified.rs: 統一定義(297行)
- emit_unified_call()と便利メソッド3種実装
- NYASH_MIR_UNIFIED_CALL=1で段階移行制御
- VM実行器でCallee対応実装済み
📊 進捗状況(26%削減見込み)
- Phase 1-2: ✅ 基盤構築完了
- Phase 3.1-3.2: ✅ 基本関数統一完了
- Phase 3.3: 🔄 BoxCall統一中
- Phase 4: 📅 Python LLVM(最優先・63%削減)
- Phase 5: 📅 PyVM/VM統一
📚 ドキュメント更新
- CLAUDE.md: テストスクリプト参考集追加
- CURRENT_TASK.md: Phase 3進捗更新
- python-llvm-priority-rationale.md: 優先順位戦略文書化
- mir-call-unification-master-plan.md: スケジュール最新化
🎯 6種類→1種類: Call/BoxCall/PluginInvoke/ExternCall/NewBox/NewClosure → MirCall統一へ
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-24 01:05:44 +09:00
82957f3cf6
apps: fix ConsoleStd print recursion
2025-09-23 13:03:35 +09:00
2e93403de0
phase15: implement Phase S root treatment for break control flow
...
🔧 **Phase S (Immediate Stabilization) Implementation**
- Create control flow utilities module (src/mir/utils/)
- Refactor loop_builder.rs duplicated code to utilities
- Fix PHI incoming predecessor capture per ChatGPT Pro analysis
📊 **AI Collaborative Analysis Complete**
- Task agent: Root cause identification
- Gemini: Strategic 3-phase approach
- codex: Advanced type inference solution (archived)
- ChatGPT Pro: Definitive staged treatment strategy
🗂️ **Documentation & Archive**
- Strategy document: docs/development/strategies/break-control-flow-strategy.md
- codex solutions: archive/codex-solutions/ (100+ lines changes)
- Update CLAUDE.md with 2025-09-23 progress
⚡ **Expected Impact**
- Resolve collect_prints null return issue
- Eliminate code duplication (4 locations unified)
- Foundation for Phase M (PHI unification) and Phase L (BuildOutcome)
🎯 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 07:13:32 +09:00
7ab1e59450
json_native: Import JSON native implementation from feature branch
...
- Added apps/lib/json_native/ directory with complete JSON parser implementation
- Updated CLAUDE.md with JSON native import status and collect_prints investigation
- Added debug traces to mini_vm_core.nyash for collect_prints abnormal termination
- Note: JSON native uses match expressions incompatible with current parser
- Investigation ongoing with Codex for collect_prints method issues
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 04:51:17 +09:00
39f27a348a
Phase 15: using system BOX parser problem completely resolved
...
✅ Major breakthroughs in using system stability:
- Fixed using system brace balance issue with NYASH_RESOLVE_FIX_BRACES=1
- Confirmed ChatGPT's JSON processing unification approach is correct
- Added comprehensive trace debugging for collect_prints method
- Identified collect_prints abnormal termination issue (method executes normally but return trace missing)
🔧 Technical improvements:
- Enhanced trace logging with method entry, loop exit, break conditions
- Documented using system file integration mechanism
- Validated echo/itoa processing works correctly with empty arguments
🎯 Phase 15 progress:
- Main using system parser errors: ✅ RESOLVED
- collect_prints processing: ✅ Functional (echo/itoa working)
- Remaining: investigate return value handling anomaly
Next: Codex investigation of collect_prints return behavior
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 04:10:00 +09:00
96aff4ce7b
Merge branch 'selfhost' of github.com-moecharm:moe-charm/nyash_private into selfhost
2025-09-23 02:59:31 +09:00
0a9a9c01ea
fix: Phase 15 empty args test 95% solved - ArrayBox/collect_prints完全修正
...
- fix: collect_prints()位置インクリメントバグ修正 (pos = obj_end)
- echo/itoa empty args処理が正常化
- 90%完了状態から95%完了に前進
- fix: ArrayBox戻り値問題完全解決
- ArrayBox.size()は正常動作(数値型2を返す)
- 型比較の問題であることを特定
- docs: CLAUDE.md更新 - デバッグ結果と次ステップ明記
- remaining: usingシステムパーサーエラー(BOX token line 1888)のみ
- next: codex調査依頼でusing結合プロセス詳細分析予定
🎯 Phase 15セルフホスティング重要マイルストーンまであと一歩!
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 02:52:57 +09:00
fdc889ed58
selfhost: Integrate ChatGPT's using system parser fixes
...
- Fix using paths in mini_vm_prints.nyash and mini_vm_core.nyash
- Convert multi-line JSON literal to single-line in empty args smoke test
- Remove extra closing brace in mini_vm_core.nyash
- Add verbose logging for using system visited file tracking
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 02:15:53 +09:00
75f4eac785
mini_vm: handle empty function arguments in collect_prints
2025-09-23 02:01:56 +09:00
6e6dc9ebe3
selfhost: Integrate ChatGPT's using system parser fixes
...
- Fix using paths in mini_vm_prints.nyash and mini_vm_core.nyash
- Convert multi-line JSON literal to single-line in empty args smoke test
- Remove extra closing brace in mini_vm_core.nyash
- Add verbose logging for using system visited file tracking
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 01:23:16 +09:00
a05e9b46ce
fix using smoke brace mismatch
2025-09-23 00:53:41 +09:00
43e8dcbaf0
fix: correct using paths in selfhost VM apps for compatibility
...
- Update mini_vm_core.nyash: fix using paths to point to correct locations
- selfhost.vm.json -> selfhost.vm.boxes.json_cur
- selfhost.vm.scan -> selfhost.common.mini_vm_scan
- selfhost.vm.binop -> selfhost.common.mini_vm_binop
- selfhost.vm.compare -> selfhost.common.mini_vm_compare
- Update smoke test apps to use correct mini_vm_core path
- Addresses using system parser errors at line 1885 and brace delta issues
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-23 00:07:09 +09:00
da78fc174b
selfhost/runtime: Stage 0-1 runner + MIR JSON loader (summary) with trace; compiler: scopebox/loopform prepass wiring (flags, child args); libs: add P1 standard boxes (console/string/array/map) as thin wrappers; runner: pass --box-pref via env; ops_calls dispatcher skeleton; docs: selfhost executor roadmap + scopebox/loopform notes; smokes: selfhost runner + identity prepasses; CURRENT_TASK: update plan and box lib schedule
2025-09-22 21:52:39 +09:00
6d80338814
docs: add papers on seam-aware JSON unification and Nyash Box FFI; fix seam inspector string parsing; dev: updates in mini_vm_prints, PyVM vm, and loop_builder
2025-09-22 09:32:54 +09:00
8e4cadd349
selfhost(pyvm): MiniVmPrints – prefer JSON route early-return (ok==1) to avoid fallback loops; keep default behavior unchanged elsewhere
2025-09-22 07:54:25 +09:00
27568eb4a6
json: add v2 JsonDoc/JsonNode plugin with runtime provider switch; vendored yyjson + FFI; loader resolve(name)->method_id; PyVM JSON shims; smokes + CI gate; disable MiniVmPrints fallbacks by default
...
- plugin_loader_v2: store per-Box resolve() from TypeBox FFI; add resolve_method_id() and use in invoke_instance_method
- plugin_loader_unified: resolve_method() falls back to loader’s resolve when TOML lacks method entries
- nyash.toml: register JsonDocBox/JsonNodeBox methods (birth/parse/root/error; kind/get/size/at/str/int/bool)
- plugins/nyash-json-plugin:
* serde/yyjson provider switch via env NYASH_JSON_PROVIDER (default serde)
* vendored yyjson (c/yyjson) + shim; parse/root/get/size/at/str/int/bool implemented for yyjson
* TLV void returns aligned to tag=9
- PyVM: add minimal JsonDocBox/JsonNodeBox shims in ops_box.py (for dev path)
- tests/smokes: add jsonbox_{parse_ok,parse_err,nested,collect_prints}; wire two into min-gate CI
- tools: collect_prints_mixed now uses JSON-based app
- MiniVmPrints: move BinaryOp and fallback heuristics behind a dev toggle (default OFF)
- CURRENT_TASK.md: updated with provider policy and fallback stance
2025-09-22 06:16:20 +09:00
0f96f2297d
selfhost(pyvm): MiniVmPrints – fix int fallback bounds and step budget; compare path stabilized; avoid skipping next Print; still pending: BinaryOp '+': use inline typed sum
2025-09-22 04:10:00 +09:00
c9a0333c38
using+pyvm: fix inlining seam and brace guard; stabilize MiniVm.collect_prints unknown-skip; harden MiniVmPrints int/binop scan; add seam-combiner diagnostics (default OFF); green self-contained + progress on using-mixed
2025-09-22 03:45:36 +09:00
c8063c9e41
pyvm: split op handlers into ops_core/ops_box/ops_ctrl; add ops_flow + intrinsic; delegate vm.py without behavior change
...
net-plugin: modularize constants (consts.rs) and sockets (sockets.rs); remove legacy commented socket code; fix unused imports
mir: move instruction unit tests to tests/mir_instruction_unit.rs (file lean-up); no semantic changes
runner/pyvm: ensure using pre-strip; misc docs updates
Build: cargo build ok; legacy cfg warnings remain as before
2025-09-21 08:53:00 +09:00
ee17cfd979
mini_vm: stabilize BinOp(+), literal/string/functioncall/compare/if fast-paths; pyvm: indexOf(start)/lastIndexOf(start), substring(None) guard, __me__ dispatch; update CURRENT_TASK; selfhost smokes green for core cases
2025-09-21 06:45:21 +09:00
37f93d5630
golden: add for/foreach normalized AST and loop_nonreorder (skip-reorder); docs: MacroCtx section; demo macro (identity)
2025-09-20 09:19:28 +09:00
497da75f90
macroctx: pass ctx JSON (caps) to user macros; add demo macro; docs: MacroCtx section and sandbox Box API; golden for for/foreach normalized AST
2025-09-20 09:11:52 +09:00
8a84339ac2
core: for/foreach -> Loop normalization (always-on); LoopForm MVP-3 per-segment reorder; smokes stabilized (VM + LLVM PHI); docs updated (macro-system, loopform); quiet macro load logs
2025-09-20 08:39:40 +09:00
1805ab3df2
mir(hints): add JoinResult trace smoke; add assign_both_branches case; docs: trace usage in scope-hints; all smokes pass
2025-09-20 05:55:25 +09:00
765798a1ad
llvm(smoke): add match literal_three_arms; guard mock cases; all PHI hygiene smokes passing or skipped appropriately
2025-09-20 05:47:54 +09:00
7cd04e5942
macro(match): add golden for type-guard minimal (no Box); script to validate; all pass
2025-09-20 05:40:07 +09:00
5a2f04be95
macro(match): add guard-literal-OR smoke (AST no PeekExpr + VM output); stabilize smoke robustness; LLVM PHI hygiene now passing for assign/print/match_literal
2025-09-20 05:34:23 +09:00
14122c1e55
llvm(smoke): make PHI hygiene robust; sanitize empty PHI via env; adjust tests to statement-if; allow non-zero exit; compute empty PHI safely
2025-09-20 05:21:09 +09:00
166c374eec
macro(if/match): stabilize PeekExpr→If normalization via internal-child; default runner off; propagate child stderr; fix JsonBuilder local_decl; add scope-hints doc; extend PHI smoke; golden for match literal passes
2025-09-20 05:00:31 +09:00
8cb93b9f1f
tests(macro): inline samples into new directory hierarchy and drop legacy macro_golden_* sources
2025-09-20 03:37:20 +09:00
3c1486e411
tests(macro): organize under apps/tests/macro/{if,loopform,collections,types,strings,identity,test_runner} with thin include wrappers; update all golden/smoke scripts and docs to new paths
2025-09-20 02:20:02 +09:00
ec7d8ab726
llvm: extend If PHI hygiene smoke with multi-branch + guard chain case
2025-09-20 02:02:08 +09:00
a5a57e3d8b
macro(if normalize): add return-if golden; llvm: extend PHI hygiene smoke to if-return and type_is cases
2025-09-20 01:55:45 +09:00
9b9080d0a3
macro/pattern: add type_is basic golden (MethodCall .is → MIR TypeOp mapping); docs: AST JSON v0 note for is/as mapping
2025-09-20 01:51:55 +09:00
126cf18e82
macro(if normalize): switch to ControlFlowBuilder for If stmt construction; llvm: add PHI hygiene smoke for If cases
2025-09-20 01:30:15 +09:00
4229e4259e
macro(if normalize): add print-if normalization golden and runner
2025-09-20 01:29:02 +09:00
b7975c80db
macro(if/match normalize): implement If-expression normalization for common statement contexts (Assignment/Return/Print); add golden (if-assign) and JSON builder helpers (print, return)
2025-09-20 01:22:55 +09:00
7d22a931be
macro libs: add ControlFlowBuilder (if/match normalization helpers) and PatternBuilder (eq/or/and/type_is/default) for compile-time AST building
2025-09-20 01:19:50 +09:00
9999c7c456
llvm: add LoopForm PHI hygiene smoke (no empty PHI); docs: MIR hints (zero-cost); macros: scaffold If/Match normalize (identity)
2025-09-20 01:06:54 +09:00
02c8244964
scopebox: add design guide; scaffold no-op scope/defer macro; add MIR hint plan to CURRENT_TASK
2025-09-20 00:59:50 +09:00
b7e5b1e39c
macro(loopform mvp-2): gate normalization to <=2 updated vars and no break/continue; add loop_two_vars golden and selfhost preexpand smoke
2025-09-20 00:40:05 +09:00
65227cb56f
loopform: add loop_simple golden and test; prepare while normalization pathway via LoopNormalize + JsonBuilder
2025-09-19 23:18:07 +09:00
0c09460286
loopform: MVP normalization in LoopNormalize macro (canonicalize Loop via JsonBuilder); docs touch
2025-09-19 23:15:35 +09:00
1d309283b6
jsonbuilder: add apps/lib/json_builder.nyash and docs; wire loop_normalize_macro to prepare for usage; prefer Nyash runner route
2025-09-19 23:06:28 +09:00
9d40e9137a
macro(ast-json): add Loop/Break/Continue to AST JSON v0; add loop_normalize_macro (MVP identity) and loopform smoke; docs update
2025-09-19 22:47:12 +09:00
da32455afc
freeze: macro platform complete; default ON with profiles; env consolidation; docs + smokes\n\n- Profiles: --profile {lite|dev|ci|strict} (dev-like default for macros)\n- Macro paths: prefer NYASH_MACRO_PATHS (legacy envs deprecated with warnings)\n- Selfhost pre-expand: auto mode, PyVM-only, add smokes (array/map)\n- Docs: user-macros updated; new macro-profiles guide; AGENTS freeze note; CURRENT_TASK freeze\n- Compat: non-breaking; legacy envs print deprecation notices\n
2025-09-19 22:27:59 +09:00
7dfd55bfdb
pyvm: implement TypeOp(check) + strict match-guard smokes; parser: guard support in match; llvm: PHI wiring at block head + incoming normalization; docs: AGENTS LLVM/PHI + guard policy; add tests; plan: refactor parse_box_declaration + TODO triage + clone reduction + CLI split + LLVM builder split; update CURRENT_TASK.md
2025-09-19 10:52:57 +09:00
9142476484
parser(match): add MVP type patterns (IntegerBox(x)/StringBox(s)) via AST If-chain; keep literal-only path using PeekExpr; add smoke app (apps/tests/match_type_pattern_basic.nyash); build + stage-2 smokes green
2025-09-19 08:34:29 +09:00
a6f28a8980
parser(match): introduce expression (replaces syntax); keep AST PeekExpr lowering
...
- Tokenizer: add MATCH keyword; remove PEEK
- Parser: parse (MVP: literal patterns, block/expr arms); build PeekExpr AST for existing lowering
- Tests/Smokes: update peek samples to match; skip one return-value case pending richer arm parsing
Notes: MIR unchanged; existing PeekExpr lowerers continue to work.
2025-09-19 07:58:01 +09:00
5e818eeb7e
stage3: unify to cleanup; MIR return-defer; docs+smokes updated; LLVM(harness): finalize_phis ownership, ret.py simplified, uses-predeclare; cleanup return override green; method-postfix cleanup return WIP (PHI head)
2025-09-19 02:07:38 +09:00