Phase番号再編成: プラグインBox統一化を10.1に昇格
- 革新的発見: 既存プラグインシステム(C ABI)でJIT→EXE実現可能 - Phase 10.1: プラグインBox統一化(新規) - Phase 10.5: Python統合(旧10.1を移動) - CURRENT_TASKを更新して新計画を反映 Everything is Box → Everything is Plugin への進化
This commit is contained in:
@ -1,22 +1,33 @@
|
|||||||
# 🎯 CURRENT TASK - 2025-08-29(Phase 10.1 キックオフ+リファクタ)
|
# 🎯 CURRENT TASK - 2025-08-29(Phase 10.1 革新的転換)
|
||||||
|
|
||||||
Phase 10.10 は完了(DoD確認済)。Phase 10.1 に入る前に、JIT Lower 周辺の分割リファクタを小刻みに完了させ、スモークを維持したまま移行します。
|
Phase 10.10 は完了(DoD確認済)。**重大な発見**:プラグインシステムを活用したJIT→EXE実現の道を発見!
|
||||||
|
|
||||||
|
## 🚀 革新的発見:プラグインBox統一化
|
||||||
|
|
||||||
|
### 核心的洞察
|
||||||
|
- 既存のプラグインシステム(BID-FFI)がすでに**完全なC ABI**を持っている
|
||||||
|
- すべてのBoxをプラグイン化すれば、JIT→EXEが自然に実現可能
|
||||||
|
- "Everything is Box" → "Everything is Plugin" への進化
|
||||||
|
|
||||||
## ⏱️ 今日のサマリ
|
## ⏱️ 今日のサマリ
|
||||||
- 目的: 10.1 着手前のリファクタ(機能差分なし)を完了し、Week1を開始する。
|
- 発見: プラグインBox経由でのJIT→EXE実現可能性
|
||||||
- スコープ: `src/jit/lower/core.rs / builder.rs` の整理のみ。挙動変更なし、ビルドとスモークは常にGreenを維持。
|
- 決定: Phase 10.1を「プラグインBox統一化」に変更
|
||||||
|
- 移動: 旧Phase 10.1(Python統合)→ Phase 10.5へ
|
||||||
|
|
||||||
## 現在地(Done / Doing / Next)
|
## 現在地(Done / Doing / Next)
|
||||||
- ✅ Done(Phase 10.10)
|
- ✅ Done(Phase 10.10)
|
||||||
- GC Switchable Runtime(GcConfigBox)/ Unified Debug(DebugConfigBox)
|
- GC Switchable Runtime(GcConfigBox)/ Unified Debug(DebugConfigBox)
|
||||||
- JitPolicyBox(allowlist/presets)/ HostCallのRO運用(events連携)
|
- JitPolicyBox(allowlist/presets)/ HostCallのRO運用(events連携)
|
||||||
- CIスモーク導入(runtime/compile-events)/ 代表サンプル整備
|
- CIスモーク導入(runtime/compile-events)/ 代表サンプル整備
|
||||||
- 🔧 Doing(Refactor before 10.1)
|
- 🔧 Doing(Phase 10.1 新計画)
|
||||||
- `extern_thunks.rs` 抽出済(builder → `src/jit/lower/extern_thunks.rs`)
|
- ArrayBoxのプラグイン化PoC開始
|
||||||
- `cfg_dot.rs` 抽出済(core → `src/jit/lower/cfg_dot.rs`)
|
- JIT lowering層の統一設計
|
||||||
- ⏭️ Next(Phase 10.1 Kickoff)
|
- リファクタリング作業は継続(core_hostcall.rs完了)
|
||||||
- Week1開始(Python統合の環境・入り口整備)
|
- ⏭️ Next(Phase 10.1 実装)
|
||||||
- 10.10の回帰はCIスモークで継続監視
|
- Week1: ArrayBoxプラグイン化と性能測定
|
||||||
|
- Week2: 主要ビルトインBoxの移行
|
||||||
|
- Week3: スタティックリンク基盤構築
|
||||||
|
- Week4: EXE生成実証
|
||||||
|
|
||||||
## リファクタリング計画(機能差分なし)
|
## リファクタリング計画(機能差分なし)
|
||||||
1) core_hostcall 分割(イベントlower+emit_host_call周辺)
|
1) core_hostcall 分割(イベントlower+emit_host_call周辺)
|
||||||
@ -36,13 +47,17 @@ Phase 10.10 は完了(DoD確認済)。Phase 10.1 に入る前に、JIT Lower
|
|||||||
- ログ/イベント出力がリファクタ前と一致(体感差分なし)
|
- ログ/イベント出力がリファクタ前と一致(体感差分なし)
|
||||||
- `core.rs`/`builder.rs` の行数削減(目安 < 1000)
|
- `core.rs`/`builder.rs` の行数削減(目安 < 1000)
|
||||||
|
|
||||||
## Phase 10.1 キックオフ
|
## Phase 10.1 新計画:プラグインBox統一化
|
||||||
- 参照: `docs/development/roadmap/phases/phase-10.1/`
|
- 参照: `docs/development/roadmap/phases/phase-10.1/` (新計画)
|
||||||
|
- 詳細: `docs/ideas/new-features/2025-08-28-jit-exe-via-plugin-unification.md`
|
||||||
- Week1(概要)
|
- Week1(概要)
|
||||||
- 10.1a: 計画再確認(I/O境界・GIL/FFI方針)
|
- ArrayBoxプラグイン実装とテスト
|
||||||
- 10.1b: 環境設定(最小ブリッジ・検証手順)
|
- JIT→Plugin呼び出しパス確立
|
||||||
- 10.1c: パーサー統合の入口作成(Box-Firstで薄く)
|
- パフォーマンス測定と最適化
|
||||||
- 10.1d: Core最小経路(Phase 1機能)
|
|
||||||
|
## Phase 10.5(旧10.1):Python統合
|
||||||
|
- 参照: `docs/development/roadmap/phases/phase-10.5/` (移動済み)
|
||||||
|
- ChatGPT5の当初計画を後段フェーズへ
|
||||||
|
|
||||||
## すぐ試せるコマンド(現状維持の確認)
|
## すぐ試せるコマンド(現状維持の確認)
|
||||||
```bash
|
```bash
|
||||||
@ -67,8 +82,10 @@ NYASH_JIT_EVENTS_COMPILE=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS_PATH=events.jso
|
|||||||
```
|
```
|
||||||
|
|
||||||
## 参考リンク
|
## 参考リンク
|
||||||
- Phase 10.1: `docs/development/roadmap/phases/phase-10.1/README.md`
|
- Phase 10.1(新): `docs/development/roadmap/phases/phase-10.1/README.md` - プラグインBox統一化
|
||||||
|
- Phase 10.5(旧10.1): `docs/development/roadmap/phases/phase-10.5/README.md` - Python統合
|
||||||
- Phase 10.10: `docs/development/roadmap/phases/phase-10/phase_10_10/README.md`
|
- Phase 10.10: `docs/development/roadmap/phases/phase-10/phase_10_10/README.md`
|
||||||
|
- プラグインAPI: `src/bid/plugin_api.rs`
|
||||||
- MIR命令セット: `docs/reference/mir/INSTRUCTION_SET.md`
|
- MIR命令セット: `docs/reference/mir/INSTRUCTION_SET.md`
|
||||||
|
|
||||||
## Checkpoint(再起動用メモ)
|
## Checkpoint(再起動用メモ)
|
||||||
|
|||||||
@ -1,79 +1,93 @@
|
|||||||
# Phase 10.1 - PythonParserBox実装
|
# Phase 10.1: JIT→EXE via Plugin Box Unification
|
||||||
|
|
||||||
見ただけで実装手順が分かる!順番通りに進めてください。
|
## 🎯 革新的発見:すべてはプラグインになる
|
||||||
|
|
||||||
## 📂 サブフェーズ構成(順番に実行)
|
### 核心的洞察
|
||||||
|
既存のプラグインシステム(BID-FFI)がすでに完全なC ABIを持っている。
|
||||||
|
これを活用することで、JIT→EXE変換が現実的に可能。
|
||||||
|
|
||||||
### 📋 Phase 10.1a - 計画と設計
|
## 📊 フェーズ概要
|
||||||
最初にここから!全体像を理解する。
|
|
||||||
- 統合実装計画を読む
|
|
||||||
- エキスパート評価を確認
|
|
||||||
- 5つの核心戦略を把握
|
|
||||||
|
|
||||||
### ⚙️ Phase 10.1b - 環境設定
|
### 目標
|
||||||
開発環境を整える。
|
- ビルトインBoxをプラグイン化してC ABI統一
|
||||||
- Python 3.11.9をインストール
|
- JITから統一されたプラグインAPIを呼び出し
|
||||||
- Cargo.tomlに依存関係追加
|
- スタティックリンクによるスタンドアロンEXE生成
|
||||||
- ディレクトリ構造準備
|
|
||||||
|
|
||||||
### 🔧 Phase 10.1c - パーサー統合
|
### 背景
|
||||||
CPythonパーサーをNyashに統合。
|
```
|
||||||
- PythonParserBox実装
|
現在の構造:
|
||||||
- GIL管理の実装
|
- JIT → HostCall → Rustビルトイン(複雑)
|
||||||
- JSON中間表現への変換
|
- JIT → PluginInvoke → プラグインBox(C FFI)
|
||||||
|
|
||||||
### 💻 Phase 10.1d - Core実装
|
統一後:
|
||||||
基本的なPython構文の変換。
|
- JIT → PluginInvoke → すべてのBox(統一!)
|
||||||
- Phase 1機能(def/if/for/while)
|
- EXE → PluginInvoke → スタティックリンクされたBox
|
||||||
- 意味論の正確な実装
|
```
|
||||||
- 70%コンパイル率達成
|
|
||||||
|
|
||||||
### 🔄 Phase 10.1e - トランスパイラー
|
## 🚀 実装計画
|
||||||
Python→Nyashソース変換。
|
|
||||||
- AST→Nyashソース生成
|
|
||||||
- フォーマッター実装
|
|
||||||
- コマンドラインツール
|
|
||||||
|
|
||||||
### 🧪 Phase 10.1f - テスト
|
### Week 1: ArrayBoxプラグイン化PoC
|
||||||
Differential Testingでバグ発見。
|
- ArrayBoxをプラグインとして再実装
|
||||||
- CPython vs Nyash比較
|
- JITからのプラグイン呼び出しテスト
|
||||||
- ベンチマーク実行
|
- パフォーマンス測定(HostCall vs Plugin)
|
||||||
- バグ修正とCI統合
|
|
||||||
|
|
||||||
### 📚 Phase 10.1g - ドキュメント
|
### Week 2: 主要Box移行
|
||||||
使い方を文書化してリリース。
|
- StringBox、IntegerBox、BoolBoxのプラグイン化
|
||||||
- ユーザーガイド作成
|
- JIT lowering層の統一(plugin_invoke経由)
|
||||||
- APIリファレンス
|
- 既存HostCallとの共存メカニズム
|
||||||
- サンプルプロジェクト
|
|
||||||
|
|
||||||
## 🎯 各フェーズの目安時間
|
### Week 3: 静的リンク基盤
|
||||||
|
- プラグインの`.a`ライブラリビルド
|
||||||
|
- 最小ランタイム(nyash-runtime)設計
|
||||||
|
- リンカースクリプト作成
|
||||||
|
|
||||||
| フェーズ | 内容 | 目安時間 |
|
### Week 4: EXE生成実証
|
||||||
|---------|------|----------|
|
- Hello Worldレベルのスタンドアロン実行
|
||||||
| 10.1a | 計画理解 | 2-3時間 |
|
- Linux/macOSでの動作確認
|
||||||
| 10.1b | 環境設定 | 1-2時間 |
|
- デバッグ情報とunwind対応
|
||||||
| 10.1c | パーサー統合 | 3-5日 |
|
|
||||||
| 10.1d | Core実装 | 1-2週間 |
|
|
||||||
| 10.1e | トランスパイラー | 3-5日 |
|
|
||||||
| 10.1f | テスト | 1週間 |
|
|
||||||
| 10.1g | ドキュメント | 3-5日 |
|
|
||||||
|
|
||||||
**合計**: 約1ヶ月
|
## 📁 ディレクトリ構造(予定)
|
||||||
|
|
||||||
## 🌟 最終目標
|
```
|
||||||
|
plugins/
|
||||||
|
├── nyash-core-boxes/ # ビルトインBox群
|
||||||
|
│ ├── nyash-array-plugin/
|
||||||
|
│ ├── nyash-string-plugin/
|
||||||
|
│ └── nyash-integer-plugin/
|
||||||
|
├── nyash-runtime-minimal/ # 最小ランタイム
|
||||||
|
└── existing/ # 既存プラグイン
|
||||||
|
├── nyash-file-plugin/
|
||||||
|
└── nyash-net-plugin/
|
||||||
|
```
|
||||||
|
|
||||||
- **70%以上**の関数がコンパイル可能
|
## 🔗 関連資料
|
||||||
- **2-10倍**の性能向上
|
|
||||||
- **10件以上**のNyashバグ発見
|
|
||||||
- **実用的な**Python→Nyash移行ツール
|
|
||||||
|
|
||||||
## 💡 Tips
|
- [革新的アプローチ詳細](../../../ideas/new-features/2025-08-28-jit-exe-via-plugin-unification.md)
|
||||||
|
- [プラグインAPI仕様](../../../../reference/plugin-system/)
|
||||||
|
- [Phase 10.5: Python統合計画](../phase-10.5/) (旧10.1)
|
||||||
|
- [Phase 10.10: 前段階の成果](../phase-10/phase_10_10/)
|
||||||
|
|
||||||
- 各フェーズのREADME.mdを必ず読む
|
## ⚡ 成功指標
|
||||||
- 完了条件をチェックしながら進める
|
|
||||||
- テレメトリーで進捗を確認
|
1. **技術的検証**
|
||||||
- 困ったらarchive/の資料も参照
|
- ArrayBoxがプラグインとして動作
|
||||||
|
- JITからの呼び出し成功
|
||||||
|
- 性能劣化10%以内
|
||||||
|
|
||||||
|
2. **統合達成**
|
||||||
|
- 5つ以上のビルトインBoxがプラグイン化
|
||||||
|
- JIT lowering層の完全統一
|
||||||
|
|
||||||
|
3. **EXE生成**
|
||||||
|
- スタンドアロン実行ファイル生成
|
||||||
|
- 基本的なNyashプログラムの動作
|
||||||
|
|
||||||
|
## 🎉 期待される成果
|
||||||
|
|
||||||
|
- **Everything is Plugin** - 新たな設計哲学の確立
|
||||||
|
- 自己ホスティングへの現実的な道筋
|
||||||
|
- プラグインエコシステムの拡大可能性
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**さあ、Phase 10.1a から始めましょう!**
|
*"Everything is Box → Everything is Plugin → Everything is Possible"*
|
||||||
80
docs/development/roadmap/phases/phase-10.5/README.md
Normal file
80
docs/development/roadmap/phases/phase-10.5/README.md
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Phase 10.5 - PythonParserBox実装
|
||||||
|
*(旧Phase 10.1 - プラグインBox統一化の発見により番号変更)*
|
||||||
|
|
||||||
|
見ただけで実装手順が分かる!順番通りに進めてください。
|
||||||
|
|
||||||
|
## 📂 サブフェーズ構成(順番に実行)
|
||||||
|
|
||||||
|
### 📋 Phase 10.1a - 計画と設計
|
||||||
|
最初にここから!全体像を理解する。
|
||||||
|
- 統合実装計画を読む
|
||||||
|
- エキスパート評価を確認
|
||||||
|
- 5つの核心戦略を把握
|
||||||
|
|
||||||
|
### ⚙️ Phase 10.1b - 環境設定
|
||||||
|
開発環境を整える。
|
||||||
|
- Python 3.11.9をインストール
|
||||||
|
- Cargo.tomlに依存関係追加
|
||||||
|
- ディレクトリ構造準備
|
||||||
|
|
||||||
|
### 🔧 Phase 10.1c - パーサー統合
|
||||||
|
CPythonパーサーをNyashに統合。
|
||||||
|
- PythonParserBox実装
|
||||||
|
- GIL管理の実装
|
||||||
|
- JSON中間表現への変換
|
||||||
|
|
||||||
|
### 💻 Phase 10.1d - Core実装
|
||||||
|
基本的なPython構文の変換。
|
||||||
|
- Phase 1機能(def/if/for/while)
|
||||||
|
- 意味論の正確な実装
|
||||||
|
- 70%コンパイル率達成
|
||||||
|
|
||||||
|
### 🔄 Phase 10.1e - トランスパイラー
|
||||||
|
Python→Nyashソース変換。
|
||||||
|
- AST→Nyashソース生成
|
||||||
|
- フォーマッター実装
|
||||||
|
- コマンドラインツール
|
||||||
|
|
||||||
|
### 🧪 Phase 10.1f - テスト
|
||||||
|
Differential Testingでバグ発見。
|
||||||
|
- CPython vs Nyash比較
|
||||||
|
- ベンチマーク実行
|
||||||
|
- バグ修正とCI統合
|
||||||
|
|
||||||
|
### 📚 Phase 10.1g - ドキュメント
|
||||||
|
使い方を文書化してリリース。
|
||||||
|
- ユーザーガイド作成
|
||||||
|
- APIリファレンス
|
||||||
|
- サンプルプロジェクト
|
||||||
|
|
||||||
|
## 🎯 各フェーズの目安時間
|
||||||
|
|
||||||
|
| フェーズ | 内容 | 目安時間 |
|
||||||
|
|---------|------|----------|
|
||||||
|
| 10.1a | 計画理解 | 2-3時間 |
|
||||||
|
| 10.1b | 環境設定 | 1-2時間 |
|
||||||
|
| 10.1c | パーサー統合 | 3-5日 |
|
||||||
|
| 10.1d | Core実装 | 1-2週間 |
|
||||||
|
| 10.1e | トランスパイラー | 3-5日 |
|
||||||
|
| 10.1f | テスト | 1週間 |
|
||||||
|
| 10.1g | ドキュメント | 3-5日 |
|
||||||
|
|
||||||
|
**合計**: 約1ヶ月
|
||||||
|
|
||||||
|
## 🌟 最終目標
|
||||||
|
|
||||||
|
- **70%以上**の関数がコンパイル可能
|
||||||
|
- **2-10倍**の性能向上
|
||||||
|
- **10件以上**のNyashバグ発見
|
||||||
|
- **実用的な**Python→Nyash移行ツール
|
||||||
|
|
||||||
|
## 💡 Tips
|
||||||
|
|
||||||
|
- 各フェーズのREADME.mdを必ず読む
|
||||||
|
- 完了条件をチェックしながら進める
|
||||||
|
- テレメトリーで進捗を確認
|
||||||
|
- 困ったらarchive/の資料も参照
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**さあ、Phase 10.1a から始めましょう!**
|
||||||
Reference in New Issue
Block a user