|
|
fcf28be8f9
|
Migrate selfhost scripts to lang compiler entry; remove residual apps/selfhost-compiler usage in tools; accept optional emission
|
2025-11-01 18:53:15 +09:00 |
|
|
|
c0978634d9
|
feat: using system完全実装+旧スモークテストアーカイブ完了
✅ using nyashstd完全動作(ChatGPT実装)
- builtin:nyashstd自動解決
- 環境変数不要でデフォルト有効
- console.log等の基本機能完備
✅ Fixture plugin追加(テスト用最小構成)
✅ v2スモークテスト構造への移行
✅ 旧tools/test/smoke/削除(100+ファイル)
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-09-24 21:45:27 +09:00 |
|
|
|
95382bcaab
|
feat: Phase 2.2 LLVM静的プラグイン検証完了!nyrt設計真実解明
✅ **Phase 2.2達成項目**:
- LLVMスモークテスト完全成功(1648バイト生成)
- プラグイン統合動作確認(StringBox/IntegerBox@LLVM)
- 静的コンパイル核心技術実証(MIR→LLVM→オブジェクト)
- Everything is Plugin革命のLLVM対応確認
🔍 **Task先生nyrt調査成果**:
- nyrt正体解明:AOT/LLVMランタイム必須インフラ
- 機能分類:58%必須(ハンドル・GC・エントリー)42%代替可能
- 設計一貫性:75%達成(Box操作完全プラグイン化)
- 削減戦略:Phase A実装で26個関数→プラグイン統合(42%削減)
🎯 **Everything is Plugin完全実現への道筋**:
- 現状:プラグインファクトリー(StrictPluginFirst)完全動作
- 課題:nyrt中央集権 vs プラグイン哲学の矛盾
- 解決:Hybrid Plugin Architecture推進
- 目標:String/Box API→プラグイン統合で設計一貫性完成
📊 **技術的成果**:
- LLVM static plugin integration: ✅ 完全動作
- Plugin priority system: ✅ 完全動作
- Object code generation: ✅ 実証済み
- nyrt architectural analysis: ✅ 完全解明
🚀 **Phase 15.5革命基盤確立**: プラグイン優先アーキテクチャ実用化完了
次段階Phase 2.3でビルトインBox段階削除+nyrt Plugin統合推進へ
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-09-24 12:22:08 +09:00 |
|
|
|
b573c3e5b8
|
feat: LLVM_SYS_180_PREFIX環境変数削除完了!llvm-harness経路でRust LLVMバインディング不要化達成
🚀 Phase 15.5 MIR Call統一革命 - LLVM環境変数削除フェーズ完了
## ✅ 完了内容
- **条件分岐実装**: llvm-harness(デフォルト)はLLVM_SYS_180_PREFIX不要
- **後方互換性維持**: llvm-inkwell-legacy使用時はLLVM_SYS_180_PREFIX必要
- **全ツール統一**: 12個のビルドスクリプト・テストスクリプトを一括更新
- **ドキュメント更新**: ENV_VARS.mdでLLVM feature選択方法を明記
## 🛠️ 更新ファイル
- **コアビルド**: src/runner/build.rs, tools/build_llvm.sh, build_llvm.sh
- **スモークテスト**: tools/llvm_smoke.sh, tools/test/smoke/llvm/ir_phi_empty_check.sh
- **CI設定**: .github/workflows/min-gate.yml
- **Windows版**: build_llvm_wsl.sh, build_llvm_wsl_msvc.sh (cross-compilation)
- **開発ツール**: tools/build_compiler_exe.sh, tools/ny_mir_builder.sh
- **ドキュメント**: docs/development/runtime/ENV_VARS.md
## ⚡ 技術的成果
- **環境変数削減**: LLVM_SYS_180_PREFIX → 条件付き使用のみ
- **Python LLVM統合**: llvmliteハーネス経路でRust LLVM依存完全除去
- **ビルド簡略化**: デフォルトでllvm-config-18のみ必要
- **動作確認**: tools/llvm_smoke.sh成功 (1648バイト.oファイル生成)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-09-24 03:28:24 +09:00 |
|
|
|
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 |
|
|
|
39f47cd628
|
Add Rust ownership fusion theory and fix smoke test paths
🦀📦 Added Rust×Nyash ownership fusion design (Phase 17+ candidate)
- Comprehensive ownership integration proposal with tags + borrowing tokens
- 3-tier safety levels (Safe/Unsafe/FFI) with opt-in adoption
- Complete link integration across roadmap and docs
🔧 Fixed smoke test path resolution
- Corrected ROOT_DIR calculation in selfhost smoke tests
- Updated scopebox_identity_smoke.sh, loopform_identity_smoke.sh, selfhost_runner_smoke.sh
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-09-22 23:25:35 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
f50f79994f
|
loopform(hints): detect up to 2 assigned vars in loop body (no break/continue) and emit LoopCarrier hint; add smoke for two-vars case
|
2025-09-20 06:24:33 +09:00 |
|
|
|
fc20d0061b
|
llvm(smoke): add assign_both_branches; expand SKIP guard for mock IR cases; all LLVM PHI smokes pass/skip
|
2025-09-20 06:03:02 +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 |
|
|
|
a811857cc8
|
mir(hints): add runtime tracing via NYASH_MIR_TRACE_HINTS; wire scope enter/leave at function entry/exit; add smoke to validate trace
|
2025-09-20 05:50:45 +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 |
|
|
|
d27ca541d8
|
mir(hints): wire scope_enter/leave at function entry/exit; llvm(smoke): add guard-literal-or case with skip when mock; all smokes/goldens passing
|
2025-09-20 05:44:57 +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 |
|
|
|
3ee54470a5
|
macro(match): add golden for guard literal OR; add smoke; update CURRENT_TASK milestones
|
2025-09-20 05:36:25 +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 |
|
|
|
ff929aac5b
|
smoke(match): relax guard/type smoke to only assert no PeekExpr (ast_json for BoxDeclarations uses Unsupported wrapper)
|
2025-09-20 05:04:40 +09:00 |
|
|
|
c536b402a2
|
macro(match): add guard/type normalization smoke; update CURRENT_TASK progress
|
2025-09-20 05:01:58 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
9a0fe71215
|
docs: prefer Nyash runner route (self-hosting); switch to NYASH_MACRO_PATHS; deprecations noted; update smokes to new envs
|
2025-09-19 22:59:29 +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 |
|
|
|
5bb7f67c01
|
perf(typebox): reduce clones with Arc<str> for MethodSignature.name and TypeBox.methods keys; API kept stable. tools: add all-cases empty-PHI smoke runner. parser(box): extract birth_once cycle validation into helper
|
2025-09-19 12:13:43 +09:00 |
|
|
|
ef1f5206da
|
tools: add LLVM IR empty-PHI smoke checker; ensures every 'phi i64' has incoming list; used with NYASH_LLVM_DUMP_IR
|
2025-09-19 12:01:13 +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 |
|
|
|
951a050592
|
selfhost: introduce using-based imports for compiler/parser/tools; keep includes temporarily. llvm: add PHI wiring JSON trace + unit/integration tests; fast test suite extended. runner: split selfhost helpers, small cleanups.
|
2025-09-18 13:35:38 +09:00 |
|
|
|
3fe908eb0d
|
docs/runtime: externcall + println normalization; NyRT silent result flag; PyVM console warn/error/trace routing\nselfhost(M2): add MirEmitterBox (Return(Int)->const+ret) and --emit-mir switch; initial selfhost smoke\nrunner: child args/env hardening for selfhost (NYASH_NY_COMPILER_CHILD_ARGS under --; NYASH_JSON_ONLY=1, NYASH_VM_USE_PY=1, NYASH_DISABLE_PLUGINS=1); VM path strips using lines when NYASH_ENABLE_USING=1\nmeta: clarify PyVM/llvmlite as primary (vm/interpreter legacy OFF) in CURRENT_TASK.md; README links to externcall docs
|
2025-09-18 06:35:49 +09:00 |
|