docs: update CURRENT_TASK with Box Theory PHI plan (defer/finalize) and MIR v0.5 type meta; add parity tooling and PyVM scaffolding
impl(pyvm/llvmlite): - add tools/parity.sh; tools/pyvm_runner.py; src/llvm_py/pyvm/* - emit string const as handle type in MIR JSON; add dst_type hints - unify '+' to concat_hh with from_i64/from_i8_string bridges; console print via to_i8p_h - add runtime bridges: nyash.box.from_i64, nyash.string.to_i8p_h tests: - add apps/tests/min_str_cat_loop (minimal repro for string cat loop)
This commit is contained in:
@ -14,26 +14,26 @@ MIR 13命令の美しさを最大限に活かし、外部コンパイラ依存
|
||||
4. **エコシステムの自立**: Nyashだけで完結する開発環境
|
||||
5. **劇的なコード圧縮**: 75%削減で保守性・可読性の革命
|
||||
|
||||
## 🚀 実装戦略(2025年9月更新)
|
||||
## 🚀 実装戦略(2025年9月更新・改定)
|
||||
|
||||
### Phase 15.2: LLVM層の独立化(実装中)
|
||||
- **Python/llvmlite実装を正式採用**(開発速度10倍、~2400行)
|
||||
- nyash-llvm-compiler crateの分離(Rust版も継続)
|
||||
- MIR JSON/バイナリ入力 → ネイティブEXE出力
|
||||
- プラグイン全方向ビルド戦略(.so/.o/.a同時生成)
|
||||
- 独立したツールとして配布可能
|
||||
### Phase 15.2: LLVM(llvmlite)安定化 + PyVM導入
|
||||
- JIT/Cranelift は一時停止(古い/非対応)。Rust/inkwell は参照のみ。
|
||||
- 既定のコンパイル経路は **Python/llvmlite**(harness)のみ
|
||||
- MIR(JSON) → LLVM IR → .o → NyRTリンク → EXE
|
||||
- Resolver-only / Sealed SSA / 文字列ハンドル不変 を強化
|
||||
- 新規: **PyVM(Python MIR VM)** を導入し、2本目の実行経路を確保
|
||||
- 最小命令: const/binop/compare/phi/branch/jump/ret + 最小 boxcall(Console/File/Path/String)
|
||||
- ランナー統合: `NYASH_VM_USE_PY=1` で MIR(JSON) を PyVM に渡して実行
|
||||
- 代表スモーク(esc_dirname_smoke / dep_tree_min_string)で llvmlite とパリティ確認
|
||||
|
||||
### Phase 15.3: Nyashコンパイラ実装
|
||||
- NyashでNyashパーサー実装(800行目標)
|
||||
- AST→MIR変換(2500行目標)
|
||||
- **循環依存なし**:nyrtがStringBox/ArrayBoxをC ABI経由で提供
|
||||
- ブートストラップでセルフホスティング達成!
|
||||
### Phase 15.3: NyashコンパイラMVP(後段)
|
||||
- PyVM 安定後、Nyash製パーサ/レクサ(サブセット)と MIR ビルダを段階導入
|
||||
- フラグでRustフォールバックと併存(例: `NYASH_USE_NY_COMPILER=1`)
|
||||
- JIT不要、PyVM/llvmlite のパリティで正しさを担保
|
||||
|
||||
### Phase 15.4: VM層のNyash化(革新的)
|
||||
- MIR解釈エンジンをNyashで実装(~5000行予想)
|
||||
- 動的ディスパッチ(MapBox)で13命令処理
|
||||
- コンパイル不要の即座実行
|
||||
- デバッグ・開発効率の劇的向上
|
||||
### Phase 15.4: VM層のNyash化(PyVMからの置換)
|
||||
- PyVM を足場に、VMコアを Nyash 実装へ段階移植(命令サブセットから)
|
||||
- 動的ディスパッチで13命令処理を目標に拡張
|
||||
|
||||
詳細:[セルフホスティング戦略 2025年9月版](implementation/self-hosting-strategy-2025-09.md)
|
||||
|
||||
@ -71,7 +71,7 @@ MIR 13命令の美しさを最大限に活かし、外部コンパイラ依存
|
||||
この究極のシンプルさにより、直接x86変換も現実的に!
|
||||
|
||||
### バックエンドの選択肢
|
||||
#### 1. Cranelift + lld内蔵(ChatGPT5推奨)
|
||||
#### 1. Cranelift + lld内蔵(保留)
|
||||
- **軽量**: 3-5MB程度(LLVMの1/10以下)
|
||||
- **JIT特化**: メモリ上での動的コンパイル
|
||||
- **Rust統合**: 静的リンクで配布容易
|
||||
@ -173,18 +173,15 @@ box TemplateStitcher {
|
||||
|
||||
## 🔗 EXEファイル生成・リンク戦略
|
||||
|
||||
### 統合ツールチェーン
|
||||
### 統合ツールチェーン(現状)
|
||||
```bash
|
||||
# Cranelift版(一時停止中)
|
||||
nyash build main.ny --backend=cranelift --target=x86_64-pc-windows-msvc
|
||||
|
||||
# LLVM版(ChatGPT5実装中)
|
||||
nyash build main.ny --backend=llvm --emit exe -o program.exe
|
||||
nyash build main.ny --backend=llvm --emit exe -o program.exe # llvmlite/harness 経路
|
||||
NYASH_VM_USE_PY=1 nyash run main.ny --backend=vm # PyVM(MIR JSON を実行)
|
||||
```
|
||||
|
||||
### 実装戦略
|
||||
|
||||
#### LLVM バックエンド(優先)
|
||||
#### LLVM バックエンド(優先・llvmlite)
|
||||
1. **MIR→LLVM IR**: MIR13をLLVM IRに変換(✅ 実装済み)
|
||||
2. **LLVM IR→Object**: ネイティブオブジェクトファイル生成(✅ 実装済み)
|
||||
3. **Python/llvmlite実装**: Resolver patternでSSA安全性確保(✅ 実証済み)
|
||||
@ -233,10 +230,10 @@ ny_free_buf(buffer)
|
||||
## 📅 実施時期(修正版)
|
||||
|
||||
- **現在進行中**(2025年9月)
|
||||
- Python/llvmlite実装でブレークスルー
|
||||
- dep_tree_min_string.nyashオブジェクト生成成功!
|
||||
- **Phase 15.2**: LLVM独立化(2025年9-10月完成予定)
|
||||
- **Phase 15.3**: Nyashコンパイラ(2025年11-12月)
|
||||
- Python/llvmlite(既定)/Craneliftは停止
|
||||
- PyVM(Python MIR VM)導入・代表スモークで llvmlite とパリティ確認
|
||||
- **Phase 15.2**: llvmlite安定化 + PyVM最小完成(2025年9-10月)
|
||||
- **Phase 15.3**: NyashコンパイラMVP(2025年11-12月)
|
||||
- **Phase 15.4**: VM層Nyash化(2026年1-3月)
|
||||
- **Phase 15.5**: ABI移行(LLVM完成後、必要に応じて)
|
||||
|
||||
@ -277,4 +274,4 @@ ny_free_buf(buffer)
|
||||
- ✅ LLVM dominance違反解決(Resolver pattern)
|
||||
- 🚀 Python/llvmliteでEXE生成パイプライン完成
|
||||
- 📝 nyash-llvm-compiler分離設計
|
||||
- 📝 NyashパーサーMVP実装開始
|
||||
- 📝 NyashパーサーMVP実装開始
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
# Phase 15 推奨進行順(JIT優先・自己ホスティング最小)
|
||||
# Phase 15 推奨進行順(llvmlite+PyVM 優先・自己ホスティング最小)
|
||||
|
||||
更新日: 2025-09-05
|
||||
|
||||
## 方針(原則)
|
||||
|
||||
- JITオンリー(Cranelift)で前進。LLVM/AOT・lld系は後段にスライド。
|
||||
- JIT/Cranelift は停止。LLVM(llvmlite)と PyVM の2経路で前進。
|
||||
- 最小自己ホスト体験を早期に成立 → ドキュメント/スモーク/CIを先に固める。
|
||||
- using(名前空間)はゲート付きで段階導入。NyModulesとny_pluginsの基盤を強化。
|
||||
- tmux + codex-async を使い、常時2本並走で小粒に積み上げる。
|
||||
@ -25,18 +25,17 @@
|
||||
**完了基準:**
|
||||
- env.modules.get("acme.logger") などが取得可能、LIST_ONLY/Fail-continue維持、予約拒否ログが出る。
|
||||
|
||||
### 2) 最小コンパイラ経路(JIT)
|
||||
### 2) 最小VM(PyVM)
|
||||
|
||||
**要点:**
|
||||
- パーサ/レクサのサブセット: ident/literals/let/call/return/if/block
|
||||
- Nyash から呼べる MIR ビルダ(小さなサブセット)
|
||||
- VM/JIT ブリッジを通して apps/selfhost-minimal が走る
|
||||
- MIR(JSON) を Python VM(PyVM)で実行。最小命令 + 最小 boxcall(Console/File/Path/String)
|
||||
- ランナー統合(`NYASH_VM_USE_PY=1`)→ 代表スモークが llvmlite と一致
|
||||
|
||||
**スモーク/CI:**
|
||||
- tools/jit_smoke.sh, tools/selfhost_vm_smoke.sh
|
||||
- tools/compare_harness_on_off.sh(ハーネス)、compare_vm_vs_harness.sh(PyVM vs llvmlite)
|
||||
|
||||
**完了基準:**
|
||||
- ./target/release/nyash --backend vm apps/selfhost-minimal/main.nyash が安定実行し、CIでJITスモーク合格。
|
||||
- esc_dirname_smoke / dep_tree_min_string が PyVM と llvmlite で一致。
|
||||
|
||||
### 3) using(ゲート付き)設計・実装(15.2/15.3)
|
||||
|
||||
@ -145,4 +144,4 @@ cargo build --release --features cranelift-jit
|
||||
|
||||
## 備考
|
||||
|
||||
本シーケンスは `docs/development/roadmap/phases/phase-15/self-hosting-plan.txt` を尊重しつつ、JIT最小体験を優先させるため順序を最適化(LLVM/lld と YAML自動生成は後段へスライド)。進捗に応じて適宜見直し、CI/スモークで常時検証する。
|
||||
本シーケンスは `docs/development/roadmap/phases/phase-15/self-hosting-plan.txt` を尊重しつつ、JIT最小体験を優先させるため順序を最適化(LLVM/lld と YAML自動生成は後段へスライド)。進捗に応じて適宜見直し、CI/スモークで常時検証する。
|
||||
|
||||
Reference in New Issue
Block a user