- 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>
77 lines
2.9 KiB
Plaintext
77 lines
2.9 KiB
Plaintext
Nyashプログラミング言語のBox型アーキテクチャ設計について深い技術相談です。
|
||
|
||
【現在の状況】
|
||
- Rust実装のプログラミング言語Nyash開発中
|
||
- "Everything is Box"哲学:全データがBoxオブジェクト
|
||
- 現在16種類のBox型実装済み(StringBox, IntegerBox, P2PBox等)
|
||
- Arc<Mutex>統一パターンでスレッドセーフ性確保
|
||
|
||
【現在のアーキテクチャ問題】
|
||
現在、全Box型をtype aliasで統一しているが、実装で型エラー地獄が発生:
|
||
|
||
```rust
|
||
// 現在の問題のある設計
|
||
type StringBox = Arc<Mutex<StringBoxData>>;
|
||
type IntegerBox = Arc<Mutex<IntegerBoxData>>;
|
||
type P2PBox = Arc<Mutex<P2PBoxData>>;
|
||
|
||
// 問題:型エイリアス複雑化、trait object Debug実装困難
|
||
// 結果:Copilot実装で型エラー多発、開発効率低下
|
||
```
|
||
|
||
【検討中のシンプル設計】
|
||
newtype patternによるシンプル化:
|
||
|
||
```rust
|
||
// 案1: newtype pattern
|
||
struct StringBox(Arc<Mutex<StringBoxData>>);
|
||
struct IntegerBox(Arc<Mutex<IntegerBoxData>>);
|
||
struct P2PBox(Arc<Mutex<P2PBoxData>>);
|
||
|
||
// 案2: 生構造体(必要時のみArc化)
|
||
struct StringBox { data: String }
|
||
struct IntegerBox { value: i64 }
|
||
// 共有が必要な時だけArc::new()で包む
|
||
```
|
||
|
||
【技術的検討ポイント】
|
||
|
||
1. **型安全性とシンプルさのバランス**
|
||
- type alias vs newtype vs 生構造体
|
||
- コンパイル時エラー検出 vs 実装しやすさ
|
||
|
||
2. **スレッドセーフ性の要件**
|
||
- 全Box型で並行処理が必要か?
|
||
- StringBox等の基本型にもMutex必要?
|
||
- 必要な時だけArc<Mutex>化する方が良い?
|
||
|
||
3. **拡張性・保守性**
|
||
- 新Box型追加時の実装コスト
|
||
- エラーメッセージの分かりやすさ
|
||
- 他開発者(AI含む)の理解しやすさ
|
||
|
||
4. **パフォーマンス**
|
||
- Arc<Mutex>のオーバーヘッド
|
||
- ゼロコスト抽象化の実現可能性
|
||
- メモリ使用量の最適化
|
||
|
||
5. **現実的な実装戦略**
|
||
- 段階的移行 vs 一括変更
|
||
- 既存コードとの互換性
|
||
- 開発スピード重視 vs 理想設計重視
|
||
|
||
【具体的相談事項】
|
||
1. type alias vs newtype vs 生構造体、どの設計が最適?
|
||
2. 全Box型に一律Arc<Mutex>は過剰?必要な箇所のみの方が良い?
|
||
3. Rust専門家から見て推奨されるBox型統一アーキテクチャは?
|
||
4. プログラミング言語実装において、型システムのベストプラクティスは?
|
||
5. 実装効率と設計美学のバランスをどう取るべき?
|
||
|
||
【制約条件】
|
||
- Rust実装必須
|
||
- Everything is Box哲学維持
|
||
- スレッドセーフ性確保
|
||
- 16種類+今後追加予定のBox型すべてで統一
|
||
- 実装・保守の現実性重視
|
||
|
||
プログラミング言語設計・Rust専門家の視点から、実装可能で美しく、長期保守に適したアーキテクチャ設計を提案してください。 |