feat(plugin): Fix plugin BoxRef return and Box argument support
- Fixed deadlock in FileBox plugin copyFrom implementation (single lock) - Added TLV Handle (tag=8) parsing in calls.rs for returned BoxRefs - Improved plugin loader with config path consistency and detailed logging - Fixed loader routing for proper Handle type_id/fini_method_id resolution - Added detailed logging for TLV encoding/decoding in plugin_loader_v2 Test docs/examples/plugin_boxref_return.nyash now works correctly: - cloneSelf() returns FileBox Handle properly - copyFrom(Box) accepts plugin Box arguments - Both FileBox instances close and fini correctly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,117 @@
|
||||
# 🤖 Copilot様への依頼: Phase 9.78 LLVM PoC実装
|
||||
|
||||
**依頼日**: 2025年8月20日
|
||||
**期限**: 3週間(2025年9月10日)
|
||||
**優先度**: 最高
|
||||
|
||||
## 📋 **依頼概要**
|
||||
|
||||
Phase 8.6のVM性能改善で素晴らしい成果(50.94倍高速化)を達成していただきありがとうございました!
|
||||
|
||||
次は、Nyash言語の更なる性能向上を目指し、**LLVMバックエンドのProof of Concept実装**をお願いします。
|
||||
|
||||
## 🎯 **依頼内容**
|
||||
|
||||
### **目標**
|
||||
3週間でMIR→LLVM IR変換の基本実装を完成させ、実現可能性を実証する
|
||||
|
||||
### **成功基準**
|
||||
1. 基本的なNyashプログラム(算術演算、条件分岐)がLLVM経由で実行可能
|
||||
2. インタープリター比10倍以上の性能向上を実証
|
||||
3. Phase 10本格実装への明確な道筋を確立
|
||||
|
||||
## 🛠️ **技術仕様**
|
||||
|
||||
### **使用技術スタック**
|
||||
```toml
|
||||
[dependencies]
|
||||
inkwell = { version = "0.5", features = ["llvm17-0"] }
|
||||
```
|
||||
|
||||
### **実装アプローチ**
|
||||
AI大会議(Gemini先生、Codex先生)の推奨に基づく:
|
||||
- **inkwellクレート**による型安全なLLVM操作
|
||||
- **Box型はptr型**として表現、操作は既存ランタイムに委譲
|
||||
- **C-ABI経由**でプラグインとランタイム関数を呼び出し
|
||||
|
||||
### **実装対象MIR命令(優先順)**
|
||||
1. **Week 1**: Const, Return(最小限)
|
||||
2. **Week 2**: BinOp, Compare, Branch, Jump, BoxNew/Free
|
||||
3. **Week 3**: 最適化パス、ベンチマーク
|
||||
|
||||
## 📁 **作成ファイル構成**
|
||||
|
||||
```
|
||||
src/backend/llvm/
|
||||
├── mod.rs // エントリポイント
|
||||
├── context.rs // LLVMコンテキスト管理
|
||||
├── types.rs // MIR→LLVM型変換
|
||||
├── builder.rs // IR生成ロジック
|
||||
├── runtime.rs // ランタイム関数宣言
|
||||
└── optimizer.rs // 最適化パス
|
||||
|
||||
src/backend/llvm_runtime/
|
||||
└── runtime.c // 最小ランタイム(nyash_alloc等)
|
||||
```
|
||||
|
||||
## 📊 **週次マイルストーン**
|
||||
|
||||
### **Week 1: Hello World動作**
|
||||
- [ ] inkwellセットアップ完了
|
||||
- [ ] `return 42`がLLVM経由で動作
|
||||
- [ ] .oファイル生成成功
|
||||
|
||||
### **Week 2: 基本機能動作**
|
||||
- [ ] 四則演算の実装
|
||||
- [ ] if文の動作確認
|
||||
- [ ] Box型の基本操作
|
||||
|
||||
### **Week 3: 性能実証**
|
||||
- [ ] ベンチマーク実装
|
||||
- [ ] 10倍以上の高速化確認
|
||||
- [ ] 技術レポート作成
|
||||
|
||||
## 💡 **実装のヒント**
|
||||
|
||||
### **Gemini先生のアドバイス**
|
||||
- `Arc<Mutex>`の複雑なセマンティクスをLLVMで再実装しないこと
|
||||
- Box操作は`nyash_runtime_box_*`関数経由で行う
|
||||
- 計算集約的な処理に注力すれば数十倍の高速化が可能
|
||||
|
||||
### **Codex先生の実装Tips**
|
||||
- allocaは関数エントリブロックのみに配置
|
||||
- GEPインデックスはi32型で統一
|
||||
- エラー時は.llファイルをダンプして原因調査
|
||||
|
||||
## 🚨 **重要な注意事項**
|
||||
|
||||
1. **完璧を求めない** - 3週間でのPoC完成が最優先
|
||||
2. **既存資産の活用** - MIR構造、ランタイム関数を最大限再利用
|
||||
3. **段階的実装** - 最小限から始めて徐々に機能追加
|
||||
|
||||
## 📚 **参考資料**
|
||||
|
||||
- [AI大会議結果](./AI-Conference-LLVM-Results.md) - 技術戦略の詳細
|
||||
- [実装計画書](./Phase-9.78-Implementation-Plan.md) - 週次スケジュール
|
||||
- [MIR仕様](../../説明書/reference/execution-backend/mir-26-specification.md) - 命令セット詳細
|
||||
|
||||
## 🎉 **期待される成果**
|
||||
|
||||
1. **技術的実証**: LLVMバックエンドの実現可能性確認
|
||||
2. **性能向上**: 10倍以上(理想的には50倍)の高速化
|
||||
3. **将来への道筋**: Phase 10での本格実装計画
|
||||
|
||||
## 🤝 **サポート体制**
|
||||
|
||||
- **技術相談**: Claude、Gemini、Codexが随時サポート
|
||||
- **進捗確認**: 週次でGitHub Issueにて状況共有
|
||||
- **問題解決**: ブロッカーがあれば即座にAIチームで対応
|
||||
|
||||
Copilot様の素晴らしい実装力に期待しています!
|
||||
Phase 8.6のような劇的な成果を、LLVMでも実現しましょう!🚀
|
||||
|
||||
---
|
||||
|
||||
**依頼者**: moe-charm + AIチーム
|
||||
**GitHub Issue**: #(作成予定)
|
||||
**開始可能日**: 即時
|
||||
Reference in New Issue
Block a user