feat(phase91): PluginHost/CoreServices skeleton complete
Phase 91 完了: Ring1-Core 構造の明確化 **実装内容**: - CoreServices 定義(6つの Service trait) - StringService, IntegerService, BoolService - ArrayService, MapService, ConsoleService - PluginHost 構造体(Ring0 ⇔ CoreServices 橋渡し) - NyashPlugin trait(プラグインシステム標準IF) - PluginRegistry skeleton **Phase 87 整合性**: - CoreServices は core_required (6個) を完全カバー - String, Integer, Bool, Array, Map, Console - CoreBoxId との対応表をドキュメント化 **設計原則確立**: - Ring1-Core 構造明確化 - core_required は必ず揃う(型レベル保証) - Fail-Fast 設計(ensure_initialized) - 既存影響ゼロ(新規ファイルのみ) **テスト結果**: - 5件追加(全て合格) - ビルド成功 - 既存テストに影響なし **次のステップ**: Phase 92 (UnifiedBoxRegistry との統合) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -239,3 +239,127 @@ Phase 85 の調査結果を完全反映:
|
||||
|
||||
すべて1ファイルで完結するため、Phase 84-4-B のような分散ハードコード問題は完全解消。
|
||||
|
||||
---
|
||||
|
||||
## 6. CoreBoxCategory enum(Phase 87)
|
||||
|
||||
### 6.1 役割
|
||||
|
||||
CoreBoxId の分類を型安全に表現する enum。Phase 85 調査結果を完全に反映。
|
||||
|
||||
```rust
|
||||
pub enum CoreBoxCategory {
|
||||
CoreRequired, // 必須: 起動時に全て揃っていなければならない (6個)
|
||||
CoreOptional, // オプション: 無くても起動できるが、標準機能として提供 (9個)
|
||||
Special, // 特殊: 言語実装に直結(Function/Result/Method/Missing)
|
||||
}
|
||||
```
|
||||
|
||||
### 6.2 Phase 85 対応表
|
||||
|
||||
| Category | 個数 | Box 一覧 |
|
||||
|----------|------|---------|
|
||||
| CoreRequired | 6 | String, Integer, Bool, Array, Map, Console |
|
||||
| CoreOptional | 9 | Float, Null, File, Path, Regex, Math, Time, Json, Toml |
|
||||
| Special | 4 | Function, Result, Method, Missing |
|
||||
|
||||
### 6.3 実装効果
|
||||
|
||||
- **is_core_required() の簡略化**: `category() == CoreBoxCategory::CoreRequired`
|
||||
- **Phase 92 CoreServices 設計**: core_required (6個) のみを CoreServices に含める根拠
|
||||
- **型安全な分類**: 文字列比較 → enum 比較で完全型安全
|
||||
|
||||
---
|
||||
|
||||
## 7. Phase 87 完了チェックリスト
|
||||
|
||||
### 7.1 実装完了 ✅
|
||||
|
||||
- [x] CoreBoxId enum 定義(19個)
|
||||
- [x] CoreMethodId enum 定義(30個)
|
||||
- [x] CoreBoxCategory enum 定義(3カテゴリ)
|
||||
- [x] is_reserved_type() リファクタリング
|
||||
- [x] infer_boxcall_return_type() リファクタリング(67%削減)
|
||||
- [x] テスト 11件追加
|
||||
- [x] Phase 85 調査結果の完全反映
|
||||
|
||||
### 7.2 Phase 92 への橋渡し準備 ✅
|
||||
|
||||
- [x] core_required (6個) の確定
|
||||
- [x] CoreBoxCategory による分類体系確立
|
||||
- [x] SSOT(Single Source of Truth)確立
|
||||
|
||||
### 7.3 今後の展開
|
||||
|
||||
Phase 92 では、CoreServices の実装時に CoreBoxCategory::CoreRequired (6個) のみを対象とすることで、**「core_required は必ず揃う」**という設計原則を型レベルで保証する。
|
||||
|
||||
---
|
||||
|
||||
## 8. Phase 91: PluginHost/CoreServices 実装(2025-12-03)
|
||||
|
||||
### 8.1 PluginHost アーキテクチャ
|
||||
|
||||
**構造**:
|
||||
```rust
|
||||
pub struct PluginHost {
|
||||
pub ring0: Arc<Ring0Context>, // Phase 88-90 実装済み
|
||||
pub core: CoreServices, // Phase 91 skeleton
|
||||
pub optional: HashMap<String, Arc<dyn Any>>,
|
||||
}
|
||||
```
|
||||
|
||||
**役割**:
|
||||
- Ring0Context(OS API)と CoreServices(Box 実装)の橋渡し
|
||||
- core_required Box の初期化保証
|
||||
- optional/user プラグインの管理
|
||||
|
||||
### 8.2 CoreServices: Ring1-Core の顔
|
||||
|
||||
**定義**:
|
||||
```rust
|
||||
pub struct CoreServices {
|
||||
pub string: Arc<dyn StringService>,
|
||||
pub integer: Arc<dyn IntegerService>,
|
||||
pub bool: Arc<dyn BoolService>,
|
||||
pub array: Arc<dyn ArrayService>,
|
||||
pub map: Arc<dyn MapService>,
|
||||
pub console: Arc<dyn ConsoleService>,
|
||||
}
|
||||
```
|
||||
|
||||
**Phase 87 CoreBoxId との対応**:
|
||||
|
||||
| CoreBoxId | CoreBoxCategory | CoreServices | 実装状況 |
|
||||
|-----------|----------------|--------------|---------|
|
||||
| String | CoreRequired | ✅ string | Phase 91 skeleton |
|
||||
| Integer | CoreRequired | ✅ integer | Phase 91 skeleton |
|
||||
| Bool | CoreRequired | ✅ bool | Phase 91 skeleton |
|
||||
| Array | CoreRequired | ✅ array | Phase 91 skeleton |
|
||||
| Map | CoreRequired | ✅ map | Phase 91 skeleton |
|
||||
| Console | CoreRequired | ✅ console | Phase 91 skeleton |
|
||||
|
||||
**設計原則**:
|
||||
- core_required (6個) は全て CoreServices に含まれる
|
||||
- 起動時に全フィールドが初期化されていなければ panic
|
||||
- Phase 92 で UnifiedBoxRegistry から自動生成予定
|
||||
|
||||
### 8.3 NyashPlugin trait
|
||||
|
||||
**定義**:
|
||||
```rust
|
||||
pub trait NyashPlugin: Send + Sync {
|
||||
fn descriptor(&self) -> PluginDescriptor;
|
||||
fn register(&self, host: &mut PluginRegistry);
|
||||
}
|
||||
```
|
||||
|
||||
**用途**:
|
||||
- プラグインの基本情報(名前、バージョン、capabilities)
|
||||
- Phase 92 以降で既存プラグインシステムと統合予定
|
||||
|
||||
### 8.4 Phase 92 以降の計画
|
||||
|
||||
- UnifiedBoxRegistry から CoreServices への自動変換
|
||||
- PluginHost.optional への optional/user プラグイン登録
|
||||
- 既存 Box 実装と Service trait の接続
|
||||
|
||||
|
||||
Reference in New Issue
Block a user