Files
hakorune/docs/CURRENT_TASK.md
Moe Charm cc8553380c feat: Add multi-box plugin support (v2) with test implementation
- Extend plugin-tester to support multi-box plugins with v2 API
- Add nyash_plugin_get_box_count/get_box_info/get_type_id functions
- Create test multi-box plugin providing TestBoxA and TestBoxB
- Update plugin-system.md documentation for v2 format
- Add nyash.toml v2 specification for multi-box support
- Successfully tested multi-box plugin lifecycle and type resolution

This enables one plugin to provide multiple Box types, solving the
dependency issue where HTTPServerBox needs SocketBox.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 01:13:48 +09:00

218 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎯 現在のタスク (2025-08-18 更新)
## ✅ **SSA形式ループ実装 - 完了!** ✅
### 🎉 **最終完了報告**2025-08-18
- ✅ MIRビルダーでphi nodeを正しく生成するループ実装完了
- ✅ sealed/unsealedブロック概念を導入
- ✅ ループビルダーを別ファイルloop_builder.rsに分離
-**VMのphi命令実装を完全修正**
- 問題Phi nodeのキャッシュが古い値を返していた
- 解決vm_phi.rsモジュールを作成し、キャッシュを無効化
### 🎊 **修正内容と成果**
1. **根本原因**
- Phi nodeが初回実行時の値をキャッシュし、2回目以降は古い値を返していた
- ループ変数が更新されず、無限ループが発生
2. **解決策**
- vm_phi.rsモジュールでループ実行ロジックを分離MIRのloop_builder.rsと同様の設計
- Phi nodeのキャッシュを無効化し、毎回正しい値を計算
- previous_blockの追跡とデバッグログで問題を特定
3. **動作確認**
```
Before loop: i = 1
In loop: i = 1
After increment: i = 2
In loop: i = 2
After increment: i = 3
In loop: i = 3
After increment: i = 4
After loop: i = 4
```
完璧に動作SSA形式のループがVMで正しく実行されています。
## 🎊 **Phase 9.75g-0 BID-FFI Plugin System - 完全完了!** 🎊
### ✅ **最終完了項目**2025-08-19
- ✅ plugin-tester型情報検証機能nyash.toml読み込み、型チェック
- ✅ plugin-tester重複メソッド名チェックNyash関数オーバーロード不採用対応
- ✅ Phase 9.75g-0完了ドキュメント作成200行包括的開発者ガイド
- ✅ セグフォルト修正HostVtable生存期間問題解決
- ✅ 型情報管理システム実装nyash.toml外部化、ハードコード完全削除
### 🚀 **革命的成果**
**NyashがプラグインでBox型を動的拡張可能に**
```nyash
// これが現実になった!
local file = new FileBox() // プラグイン提供
local db = new PostgreSQLBox() // 将来: プラグイン提供
local gpu = new CudaBox() // 将来: プラグイン提供
```
## ✅ **Phase 8.6 VM性能改善 - 完了!**
### 🎉 **VM性能改善 - 大成功報告!**
- **従来**: VMがインタープリターより0.9倍遅い(性能回帰)
- **🚀 最終達成**: **VM 50.94倍高速化達成!** 2025-08-20測定
- **期間**: 1日で完了2025-08-19
- **担当**: **Copilot**主導GitHub Issue #112, PR #113
### 📊 **技術詳細と成果**
- **MIR仕様**: **26命令**ExternCall含むで完全確定
- **VM実装**: 26命令MIR → バイトコード実行
- **改善内容**:
- Phase 1: デバッグ出力削除 → 18.84倍高速化
- Phase 3: メモリ最適化 → 22.80倍高速化
- 最終結果: **50.94倍高速化**
- **ベンチマーク結果** (2025-08-20):
- インタープリター: 78.66ms (1,271 ops/sec)
- VM: 1.54ms (64,761 ops/sec)
- **性能向上率: 50.94倍** 🚀
- **詳細**: `docs/予定/native-plan/issues/phase_8_6_vm_performance_improvement.md`
## 🚀 **Phase 9.78: LLVM PoC → Phase 9.8: BID Registry移行決定**
### **戦略的転換**2025-08-21
- ✅ LLVM PoC基盤完成MIR生成修正、モック実装
- ✅ Phase 9.8 BIDレジストリへの移行決定
- ✅ 重要な発見:**nyash.tomlが既に完璧な型情報を持っている**
- 🔄 新方針nyash.tomlを拡張してBID機能を統合
### **技術的成果**
- **モックLLVM統合**: `--backend llvm`オプション動作確認
- **アーキテクチャ実証**: MIR → LLVM変換パス確立
- **CI/CD対応**: 外部依存なしでテスト可能
### **革命的Windows戦略**
- **1回のIR生成で全OS対応**: Bitcodeキャッシュ戦略
- **PAL設計**: Platform Abstraction Layer構想
- **将来: APE単一バイナリ**: 小規模ツール向け
## 📦 **Phase 9.8: BID Registry + Code Generation - 開始!**
### **革命的発見nyash.toml活用戦略**2025-08-21
既存のnyash.tomlに必要な型情報がほぼ完備されていることが判明
#### 現在のnyash.toml
```toml
[plugins.FileBox.methods]
read = { args = [] }
write = { args = [{ from = "string", to = "bytes" }] }
open = { args = [
{ name = "path", from = "string", to = "string" },
{ name = "mode", from = "string", to = "string" }
] }
```
#### 拡張案Phase 9.8 + 9.9統合)
```toml
[plugins.FileBox.methods]
read = {
args = [],
returns = "string",
permissions = ["storage:read"],
effects = ["io"],
description = "Read file contents"
}
```
### **実装方針**
1. nyash.tomlを段階的に拡張後方互換維持
2. 拡張されたnyash.tomlから各バックエンド用コード生成
3. BID YAMLは大規模プラグイン用のオプションとして提供
### **🌟 重要な戦略的決定**
- **BID実装方針**: nyash.toml拡張を優先新規YAML不要
- **Phase 9.8 + 9.9統合**: FileBoxがVMで権限制御付きで動作することをゴールに
- **優先順位**: VM性能完了 → BIDレジストリ → 権限モデル → LLVM本格実装
### **最終目標**
- **インタープリター併用戦略**: 開発時(即時実行)+ 本番時AOT高性能
- **4バックエンド対応**: Interpreter/VM/WASM/AOT
- **プラグインエコシステム**: 無限拡張可能なBox型システム
## 📚 **参考資料**
### **BID-FFI Plugin System完全ドキュメント**
- [Phase 9.75g-0完了ドキュメント](Phase-9.75g-0-BID-FFI-Developer-Guide.md) - 包括的開発者ガイド
- [ffi-abi-specification.md](../説明書/reference/plugin-system/ffi-abi-specification.md) - BID-1技術仕様
- [plugin-tester使用例](../tools/plugin-tester/) - プラグイン診断ツール
### **VM性能改善関連**
- [phase_8_6_vm_performance_improvement.md](../予定/native-plan/issues/phase_8_6_vm_performance_improvement.md) - 詳細技術分析
- [copilot_issues.txt](../予定/native-plan/copilot_issues.txt) - 全体開発計画
## 🔧 **現在進行中マルチBox型プラグイン対応**2025-08-18開始
### **目的**
- **依存関係の解決**: HTTPServerBoxとSocketBoxを同一プラグインに
- **効率的な配布**: 関連Box群を1つのライブラリで提供
- **ビルド時間短縮**: 3分 → 30秒以下
### **nyash.toml v2設計**
```toml
[plugins.libraries]
"nyash-network" = {
plugin_path = "libnyash_network.so",
provides = ["SocketBox", "HTTPServerBox", "HTTPRequestBox", "HTTPResponseBox", "HttpClientBox"]
}
```
### **実装フェーズ**
1. **Phase 1**: plugin-tester拡張進行中
- 複数Box型の検出機能
- 各Box型のメソッド検証
2. **Phase 2**: テストプラグイン作成
- 簡単な複数Box型プラグイン
- FFI実装確認
3. **Phase 3**: Nyash本体対応
- nyash.toml v2パーサー
- マルチBox型ローダー
### **進捗状況**
- ✅ nyash.toml v2仕様策定完了
- ✅ plugin-system.mdドキュメント更新
- 🔄 plugin-tester拡張作業開始
## 📋 **今日の重要決定事項2025年8月18日**
### **1. CopilotのPR管理戦略**
- ✅ 大規模変更1,735行を含むPR #117をrevert
- ✅ 必要な新規ファイルのみ選択的に抽出・保存
- ✅ cli.rs/runner.rsへの大幅変更は取り込まない方針
### **2. Copilot成果物の保存**
- **BID変換部分**: `src/bid-converter-copilot/` TLV、型変換
- **コード生成部分**: `src/bid-codegen-from-copilot/` (各言語向け生成)
- **活用方針**: 将来的にnyash2.toml実装時に参考資料として使用
### **3. 開発優先順位の明確化**
```
1. 🔄 ビルトインBoxプラグイン化HttpBox系から開始
2. → Phase 9.8 BIDレジストリnyash.toml拡張方式
3. → Phase 9.9 権限モデルFileBoxで実証
4. → Phase 10 LLVM本格実装将来検討
```
### **4. 選択的pull戦略の確立**
- **原則**: 必要な機能だけを取り込む
- **判断基準**: 現在の目標との関連性、複雑性、保守性
- **実践**: 新規ファイルは別フォルダに保存、既存ファイルの大幅変更は慎重に
---
**最終更新**: 2025年8月18日
**次回レビュー**: マルチBox型プラグイン対応完了時
**開発状況**: nyash.toml v2マルチBox型対応開始
### 🎯 **次のアクション**
1. plugin-testerを複数Box型対応に拡張
2. 簡単な複数Box型プラグインのテスト作成
3. Nyash本体のローダーを複数Box型対応に拡張
4. 複数Box型の読み込みテスト実施