4167491e92
docs: JIT→EXE実現のための革新的アプローチを文書化
...
- プラグインBox統一化によるC ABI活用案
- すべてのBoxをプラグイン化する提案
- 既存のBID-FFIシステムを再利用
- Gemini/Codex先生の技術的助言も統合
関連: Phase 10.x, 自己ホスティング計画
2025-08-29 03:28:42 +09:00
91f2ee11d6
Phase 10.1 リファクタリング: JIT lowerモジュールの分割
...
- core_hostcall.rs: HostCall関連のlowering処理を分離(array_get/array_set/box_call)
- 1000行制限を守るための構造整理(機能差分なし)
- ChatGPT5によるAI協調開発対応のリファクタリング
変更内容:
- src/jit/lower/core_hostcall.rs を新規追加
- src/jit/lower/mod.rs にモジュール追加
- ビルドとスモークテスト確認済み
2025-08-29 02:47:55 +09:00
77816ab19f
fix(jit): リファクタリング後のビルドエラーを修正
...
- extern_thunks.rsへの関数移動に伴うインポート追加
- 存在しない関数名の参照を削除(string_len_h等)
- 不要なインポートを削除(CallBoundaryBox, NyashRuntimeBuilder等)
- OpEffectのエイリアスを修正(Effect as OpEffect)
ChatGPT5さんのリファクタリング作業の続き。ファイルサイズ削減(~1000行)により
AI連携が容易になりました。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-29 02:26:03 +09:00
3d5a8ccad5
docs: CURRENT_TASKにリファクタリング進捗を追加
...
- Phase 10.10締めの整備として大型ファイル分割作業を記録
- jit/lower/builder.rs → extern_thunks分離(980行に削減)
- jit/lower/core.rs → cfg_dot分離(1012行に削減)
- 他AI連携のため~1000行以内を目標に継続的リファクタリング
- 次のステップ: core_hostcall.rs、core_ops.rsへの段階的分離
ChatGPT5さんのリファクタリング作業記録
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-29 02:19:50 +09:00
770df1566c
feat(jit): CFG DOT出力機能を追加 (ChatGPT5実装)
...
- src/jit/lower/cfg_dot.rs: Control Flow GraphをGraphviz DOT形式で出力
- LowerCoreからdump_cfg_dot関数をエクスポート
- NYASH_JIT_DOT環境変数でCFG可視化が可能に
ChatGPT5さんによるリファクタリング作業の一環
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-29 02:12:48 +09:00
25fbebd650
docs: AOT/ネイティブコンパイル情報をexecution-backends.mdに追加
...
- 4つ目の実行方式としてAOT(Ahead-of-Time)コンパイルを文書化
- MIR→WASM→.cwasm のコンパイルパイプラインを説明
- wasm-backend featureでのビルド方法を明記
- 現在の実装状況(完全なスタンドアロン実行ファイルはTODO)を記載
- CLAUDE.mdのWASM説明も3種類(Rust→WASM、Nyash→WASM、Nyash→AOT)に更新
- CURRENT_TASK.mdにPhase 10.9/10.10の完了項目を追加
ChatGPT5さんのAOT試行に対応した適切なドキュメント配置を実施
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-29 02:05:39 +09:00
d67f27f4b8
Phase 10.10: GC Switchable Runtime & Unified Debug System 実装完了
...
Phase 10.10の主要実装:
- GcConfigBox: GC設定の実行時制御(counting/trace/barrier_strict)
- DebugConfigBox: デバッグ設定の統一管理(JIT events/stats/dump/dot)
- メソッドディスパッチ: system_methods.rsで両Boxのメソッド実装
- CountingGC動作確認: write_barriers正常カウント(VM実行時)
技術的詳細:
- BoxCore/BoxBase統一アーキテクチャを活用
- setFlag/getFlag/apply/summaryメソッドで統一API提供
- 環境変数経由でVM/JITランタイムと連携
- GcConfigBox.apply()は次回実行から有効(ランタイム作成前に環境変数参照)
テスト済み:
- examples/gc_counting_demo.nyash: CountingGCの動作確認
- write_barriers=3でArray.push/set, Map.setを正しくカウント
- NYASH_GC_TRACE=1でGC統計出力確認
Box-First哲学の体現: 設定も制御も観測もすべてBox!
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-28 22:31:51 +09:00
4e1b595796
AI協調開発研究ドキュメントの完成と Phase 10.9-β 進捗
...
【AI協調開発研究】
- AI二重化モデルの学術論文draft完成(workshop_paper_draft.md)
- 「隠れた危機」分析とbirthの原則哲学化
- TyEnv「唯一の真実」協調会話を保存・研究資料に統合
- papers管理構造の整備(wip/under-review/published分離)
【Phase 10.9-β HostCall進捗】
- JitConfigBox: relax_numeric フラグ追加(i64→f64コアーション制御)
- HostcallRegistryBox: 署名検証・白黒リスト・コアーション対応
- JitHostcallRegistryBox: Nyash側レジストリ操作API
- Lower統合: env直読 → jit::config::current() 参照に統一
- 数値緩和設定: NYASH_JIT_HOSTCALL_RELAX_NUMERIC/Config.set_flag
【検証サンプル拡充】
- math.sin/cos/abs/min/max 関数スタイル(examples/jit_math_function_style_*.nyash)
- 境界ケース: 署名不一致・コアーション許可・mutating拒否サンプル
- E2E実証: String.length→allow, Array.push→fallback, math関数の署名一致観測
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-28 12:09:09 +09:00
e54561e69f
Phase 10.7 - JIT統計とイベント機能の完成
...
主要な実装:
- PHI(b1)統計追跡: phi_total_slots/phi_b1_slotsをJSON出力
- 関数単位統計API: JitStatsBox.perFunction()で詳細統計取得
- JITイベントシステム: compile/execute/fallback/trapをJSONL形式で記録
- Store/Load命令対応: ローカル変数を含む関数のJIT実行が可能に
新しいBox:
- JitStatsBox: JIT統計の取得
- JitConfigBox: JIT設定の管理(将来用)
- JitEventsBox: イベントのJSONL出力(将来用)
- JitPolicyBox: 実行ポリシー管理(将来用)
CLI拡張:
- --jit-exec, --jit-stats, --jit-dump等のフラグ追加
- --jit-directモードでの独立JIT実行
- NYASH_JIT_*環境変数によるきめ細かい制御
ドキュメント:
- Phase 10.7実装計画の詳細化
- Phase 10.9 (ビルトインBox JIT) の計画追加
- JIT統計JSONスキーマ v1の仕様化
ChatGPT5との共同開発により、JIT基盤が大幅に強化されました。
次はPhase 10.9でビルトインBoxのJIT対応を進め、
Python統合(Phase 10.1)への道を開きます。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-28 09:26:58 +09:00
99e59e24e2
LowerCore: stabilize minimal PHI by tracking Phi dst and pushing block param when that ValueId is requested; verified jit_phi_demo returns merged value under cranelift.
2025-08-27 17:58:50 +09:00
633a073a30
Phase 10.7 (NYASH_JIT_PHI_MIN=1): Minimal PHI support for single-diamond via block params; extend IRBuilder with block-param/jump-args APIs; implement in CraneliftBuilder; update LowerCore two-pass for PHI wiring.
2025-08-27 17:52:37 +09:00
6bfb38949c
JIT cond path: keep compare result as b1; br_if accepts b1 or i64 (!=0); add branch_return to benchmark suite.
2025-08-27 17:39:12 +09:00
a4ffc3b2aa
Docs: note Phase 10.7 JIT control-flow coverage and cranelift-jit feature in execution-backends.md.
2025-08-27 17:19:41 +09:00
d3e81dedb3
Phase 10.7: Implement Cranelift block wiring hooks (prepare/switch/seal, brif/jump) and integrate in LowerCore; build passes with cranelift-jit; JIT branch demo runs (no side-effects inline).
2025-08-27 17:18:09 +09:00
1b55233365
Implement Phase 10.7 control-flow hooks in CraneliftBuilder: block vectors, switch/seal, br_if/jump; adjust begin_function and emit sites to honor current block. (Feature-gated)
2025-08-27 17:14:37 +09:00
7dac50d139
Add examples/jit_branch_demo.nyash for Phase 10.7 validation.
2025-08-27 17:09:15 +09:00
e352168f81
Phase 10.7 scaffolding: IRBuilder control-flow APIs; LowerCore prepares block mapping and calls branch/jump hooks (no-op by default).
2025-08-27 17:08:49 +09:00
ddae7fe1fc
Phase 10_6b scheduler complete; 10_4 GC hooks + counting/strict tracing; 10_c minimal JIT path (i64/bool consts, binop/compare/return, hostcall opt-in); docs & examples; add Phase 10.7 roadmap (JIT branch wiring + minimal ABI).
2025-08-27 17:06:46 +09:00
de03514085
feat: Phase 10_b JIT implementation progress + academic paper ideas
...
Phase 10_b JIT Lower implementation:
- IRBuilder abstraction with NoopBuilder (emit counting) ✅
- CraneliftBuilder skeleton (feature `cranelift-jit`) ✅
- LowerCore implementation (Const/Copy/BinOp/Cmp/Branch/Ret) ✅
- Engine.compile with builder selection and JIT handle generation ✅
- JIT function table with stub functions ✅
- Basic i64 const/binop/ret emission for Cranelift
- VM execution path with NYASH_JIT_EXEC=1 support
Academic ideas and analysis:
- "Everything is Thread-Safe Box" concept
- "GC as debug tool" paradigm analysis
- GC switchable semantic equivalence documentation
- Gemini & Codex evaluation on academic paper potential
- Nyash academic papers potential themes
Current limitations:
- Return values limited to i64 (VMValue::Integer)
- Arguments not yet supported
- Compare/Branch emit not implemented
- Trap→VM fallback not implemented
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-27 03:16:57 +09:00
5f3cdc3020
fix: Add README.ja.md to root directory for GitHub
...
- Fixes 404 error when accessing Japanese documentation on GitHub
- Copied from docs/archive/README.ja.md
- Now both English and Japanese READMEs are available at root level
🇯🇵 日本語版READMEをルートディレクトリに追加して404エラーを解消
2025-08-27 01:14:55 +09:00
61800a37a7
feat: Phase 10 reorganization + GC switchable runtime + VM improvements
...
## 📚 Documentation Updates
- Phase 10 reorganized with comprehensive README
- Cranelift JIT as main implementation
- NEW: Phase 10.4 GC Switchable Runtime (world's first\!)
- Phase 10.5 Self-hosting (parallel)
- Application migration tests
- Phase 11 created for LLVM AOT research (deferred)
- Moved phase10_aot_scaffolding.md → Phase 11
- Moved phase_10_x_llvm_backend_skeleton.md → Phase 11
- Master roadmap updated with GC runtime feature
- Ideas: GC switchable language concept documented
## 🚀 VM Implementation Progress (by ChatGPT5)
- src/backend/vm.rs: Enhanced VM execution
- src/backend/vm_instructions.rs: Instruction improvements
- src/runtime/type_meta.rs: NEW - Type metadata system
- src/boxes/buffer/mod.rs: Buffer optimizations
- src/runtime/mod.rs & plugin_ffi_common.rs: Runtime enhancements
## 🌟 Revolutionary Feature: GC Switchable Runtime
- Development mode: GC on (convenience)
- Production mode: GC off (performance)
- Technical feasibility confirmed by Codex GPT-5
- Implementation plan: After Cranelift JIT
## 📋 Phase 10 Structure
Phase 10.0: Cranelift JIT foundation
Phase 10.1-10.3: JIT implementation & optimization
Phase 10.4: GC Switchable Runtime ← NEW\!
Phase 10.5: Self-hosting (String/Array/Map in Nyash)
Phase 10.9: Application migration tests
🤖 ChatGPT5 says: Ready for Phase 10\! どきどきにゃ!
2025-08-27 01:03:55 +09:00
e5515ea5e9
docs: Update Phase 9.79b progress - ChatGPT5's implementation advances
...
- Phase 9.79b.1: ✅ Minimal scope achieved (method_id introduction)
- Phase 9.79b.2: ✅ Minimum completed
- Universal fast-path thunks (toString/type/equals/clone)
- Monomorphic PIC with 8-hit threshold for promotion
- PluginBoxV2 fast-path with minimal TLV support
- Lazy seed/reservation for builtin/plugin/user slots
- Version-based cache invalidation framework
- Phase 9.79b.3: → In progress (TypeMeta/Thunk + Poly-PIC + Diagnostics)
🤖 ChatGPT5 is making solid progress on the unified box design implementation\!
2025-08-27 00:06:40 +09:00
edf5ccfcb4
Docs: Add phase_9_79b_3_vm_vtable_thunks_and_pic.md\n- Plan to formalize TypeMeta+Thunk and upgrade PIC to poly\n- Diagnostics, risks, milestones, exit criteria, and Phase 10 readiness
2025-08-27 00:03:48 +09:00
c0b70c0e4e
Plugin seeds: add FileBox minimal slots (open/read/write/close)\n- Enables method_id for common plugin calls when type known (new FileBox)
2025-08-26 23:07:43 +09:00
bd8a63911c
Slot registry: seed builtin method slots (ArrayBox/MapBox/IntegerBox/StringBox)\n- Lazy seeding in resolve_slot_by_type_name\n- Enables method_id for builtin calls when receiver type known
2025-08-26 22:52:42 +09:00
7ee922130f
VTable-like direct call via method_id for InstanceBox\n- Add vtable cache: (Type, slot, arity) -> function name\n- execute_boxcall uses vtable before PIC\n- Populate vtable cache on first InstanceBox method call when method_id present
2025-08-26 22:47:06 +09:00
90b9ab3a16
Docs: VM BoxCall vtable/PIC overview\n- VM_README: method_id slots, universal thunks, mono-PIC直呼び\n- Phase notes: progress includes direct-call and next steps
2025-08-26 22:37:15 +09:00
d46176de49
Builder: reserve slots for user-defined instance methods (start at 4)\n- Deterministic per-type slot assignment via sorted names\n- Enables method_id emission for user boxes when type known\n- Docs updated
2025-08-26 22:35:19 +09:00
2960a9b2f8
PIC direct-call: cache InstanceBox function name after threshold\n- Add boxcall_pic_funcname cache in VM\n- execute_boxcall uses cache for direct function calls\n- Threshold=8 hits per site\n- Update CURRENT_TASK
2025-08-26 22:11:17 +09:00
b2b82c9e81
P2PBox debug reply: avoid deep clone; send via shared transport to prevent bus endpoint override\n- Use Arc<RwLock<Box<dyn Transport>>> in spawned thread\n- Keeps original node endpoint intact
2025-08-26 21:35:32 +09:00
a1fcceb606
phase_9_79b_2: Docs/tests for universal thunks + PIC skeleton\n- Add VM test for type()/equals() fast-path\n- Update phase doc with progress notes
2025-08-26 21:12:32 +09:00
35049606f3
phase_9_79b_2 (PIC skeleton): Add monomorphic PIC hit counters\n- VM stores per-(receiver-type, method_id/name) hit counts\n- execute_boxcall records hits before dispatch\n- CURRENT_TASK updated
2025-08-26 20:59:37 +09:00
edbc38daad
phase_9_79b_2 (skeleton): VM BoxCall fast-path for universal slots\n- execute_boxcall now takes optional method_id\n- Fast-path thunks for toString/type/equals/clone\n- Dispatch updated; docs progress note in CURRENT_TASK
2025-08-26 20:56:06 +09:00
e21778c048
phase_9_79b_1: Add Unified Registry IDs + Builder Slotting\n- MIR BoxCall carries optional method_id (slot)\n- Slot registry with universal slots [0..3]\n- Builder resolves method_id when receiver type known\n- Printer shows method_id; backends updated\n- Update CURRENT_TASK + MIR spec note
2025-08-26 20:48:48 +09:00
6eda81f5db
feat: Major documentation reorganization and unified Box design updates
...
## Documentation & Organization
- Moved copilot_issues.txt → 00_MASTER_ROADMAP.md (phases folder)
- Created Phase 9.79b.1 & 9.79b.2 plans for unified Box implementation
- Updated unified-box-design-deep-analysis.md with ChatGPT5 insights
- Added P2P documentation and examples (ping-pong, self-ping)
## Code Updates
- P2PBox: Reverted to original error state for demonstration
- VM: Enhanced BoxCall dispatch for unified approach
- Updated box factory, interpreter calls, and transport layer
## Cleanup & Privacy
- Removed private/ and private_test/ from git tracking
- Added private folders to .gitignore for security
- Cleaned root directory: moved backups, removed temp files
- Moved consultation files to docs/archive/consultations/
## Other Improvements
- Added object literal syntax improvement idea
- Updated CLAUDE.md with master roadmap reference
- Updated CURRENT_TASK.md with latest progress
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-26 20:30:07 +09:00
22212aa314
refactor: Major interpreter modularization and P2PBox enhancements
...
Major Interpreter Refactoring:
- Split core.rs (373 lines removed) into focused modules
- Split expressions/calls.rs (460 lines removed) into cleaner structure
- Added new modules: calls.rs, errors.rs, eval.rs, methods_dispatch.rs, state.rs
- Improved separation of concerns across interpreter components
P2PBox Enhancements:
- Added on_once() for one-time event handlers
- Added off() for handler deregistration
- Implemented handler flags with AtomicBool for thread-safe management
- Added loopback testing cache (last_from, last_intent_name)
- Improved Arc-based state sharing for transport and handlers
Plugin Loader Unification (In Progress):
- Created plugin_loader_unified.rs skeleton
- Created plugin_ffi_common.rs for shared FFI utilities
- Migration plan documented (2400 lines → 1100 lines target)
MIR & VM Improvements:
- Enhanced modularized MIR builder structure
- Added BoxCall dispatch improvements
- Better separation in builder modules
Documentation Updates:
- Added Phase 9.79a unified box dispatch plan
- Created plugin loader migration plan
- Updated CURRENT_TASK.md with latest progress
All tests passing (180 tests) - ready for next phase of refactoring
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-26 19:13:57 +09:00
bec61e38c5
ResultBox migration complete: remove legacy box_trait::ResultBox
...
- Delete deprecated ResultBox implementation from box_trait.rs
- All code paths use boxes::result::NyashResultBox (aka boxes::ResultBox)
- Tests remain green (179)
- Mark phase 9.78h acceptance: ResultBox移行完了 as done
2025-08-26 06:52:35 +09:00
b0537a4e59
Verifier: enrich diagnostics with actionable hints
...
- Add hints for InvalidWeakRefSource/InvalidBarrierPointer/SuspiciousBarrierContext
under NYASH_DEBUG_VERIFIER. Keeps Phi/merge/dominator hints.
- All tests green (179).
2025-08-26 06:47:13 +09:00
bd6b0b1f8f
Snapshots: add loop_nested_if golden and wire into CI check
...
- New: docs/status/golden/loop_nested_if.mir.txt
- Update: tools/ci_check_golden.sh to include nested-if loop case
- Source: local_tests/loop_nested_if_test.nyash
2025-08-26 06:44:13 +09:00
f1a4a78379
Docs: mark PoC features as deprecated (unified ops are default)
...
- mir_typeop_poc / mir_refbarrier_unify_poc are no-op now; Builder emits
TypeOp/WeakRef/Barrier by default; Optimizer normalizes legacy ops.
- Update CURRENT_TASK and architecture/proposal docs accordingly.
2025-08-26 06:41:30 +09:00
e16c64f6ae
Cleanup: remove remaining cfg gating for mir_typeop_poc in builder binary-op compare pre-cast
...
- Always use TypeOp(Cast) for IntegerBox pre-normalization path.
- All tests remain green (179).
2025-08-26 06:38:15 +09:00
378a2bc174
LoopBuilder: bind variable_map to Phi result on seal
...
- After inserting Phi at loop header, update variable_map so that
subsequent uses (after the loop) refer to the Phi result instead of
the latch/body value. This fixes dominance issues in verifier.
- Add tests: loop phi normalization and loop+nested-if phi; both pass.
2025-08-26 06:35:39 +09:00
ea672eaa2c
Builder: emit unified MIR ops by default
...
- emit_type_check/emit_cast -> TypeOp(Check/Cast)
- emit_weak_new/emit_weak_load -> WeakRef(New/Load)
- emit_barrier_read/write -> Barrier(Read/Write)
This removes cfg gating in builder for unified ops; Optimizer still has
legacy normalization as a safety net. All tests green (177).
2025-08-26 06:31:21 +09:00
391a095f4c
Phase 9.78h: Stabilize MIR26 pipeline
...
- Add lib test to sync Core Instruction names with docs (INSTRUCTION_SET.md)
- Optimizer: Pass 0 normalizes legacy ops -> unified (TypeCheck/Cast->TypeOp,
WeakNew/WeakLoad->WeakRef, BarrierRead/Write->Barrier)
- Optimizer: diagnostics for legacy ops; forbid via NYASH_OPT_DIAG_FORBID_LEGACY=1
- Runner: treat diagnostics (unlowered/legacy) as fatal when enabled
- Printer: unify legacy print style to TypeOp/WeakRef/Barrier
- Verifier: treat Phi inputs correctly (skip merge/dominance violations for Phi)
- Docs: update PHI_NORMALIZATION_PLAN; CURRENT_TASK: add risk note for op duplication
- Misc: PHI debugging/logs kept stable; snapshots still green
2025-08-26 06:30:01 +09:00
ff53fc90b1
docs: fix VM_README link in CLAUDE.md to docs/VM_README.md
2025-08-26 05:51:59 +09:00
bf4b87526e
phase(9.78h): stabilize MIR/VM pipeline
...
- Add MIR26 doc≡code sync test (tests/mir_instruction_set_sync.rs)
- Quiet snapshots; filter plugin/net logs; golden all green
- Delegate VM phi selection to LoopExecutor (borrow-safe)
- ResultBox migration: remove legacy box_trait::ResultBox paths
- VM BoxRef arithmetic fallbacks via toString().parse::<i64>()
- Bridge BoxCall(InstanceBox) to Class.method/arity in VM
- Fix Effects purity (READ -> readonly, not pure)
- Mark Catch as CONTROL to prevent DCE; Try/Catch test green
- Add env-gated debug logs (effects, verifier, mir-printer, trycatch, ref, bin)
- Update CURRENT_TASK with progress and next steps
2025-08-26 05:49:23 +09:00
248c3ba183
vm: extract instruction dispatch into backend::dispatch::execute_instruction; route from vm.rs; keep behavior and env debug flags; moderate refactor
2025-08-26 04:50:04 +09:00
88318d439c
vm: introduce ExecutionFrame for current_block/pc/last_result; use control_flow::record_transition; keep behavior identical
2025-08-26 04:45:19 +09:00
0ac6e07eea
runner: refactor execute_file_mode into modes::common::run_file dispatcher; keep runner.rs thin; verify VM path
2025-08-26 04:42:52 +09:00
abdf9fb5cd
runner: move WASM/AOT and common interpreter execution into runner::modes; finalize mode split; keep demo helpers local
2025-08-26 04:39:16 +09:00