Files
hakorune/docs/CURRENT_TASK.md
Moe Charm c2af6c9987 docs: Add Phase 9.78 Unified BoxFactory Architecture design
- Add comprehensive design discussion with Gemini about unified BoxFactory
- Define Phase 9.78 implementation plan with 6 sub-phases (9.78a-f)
- Include clone_box/share_box semantics clarification and fixes
- Update CURRENT_TASK.md with specific misimplementation details
- Archive Gemini's deep technical analysis endorsing the approach

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 16:21:34 +09:00

158 lines
5.1 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-19 更新)
## ✅ 完了: ビルド時間劇的改善成功!
### 🎉 達成結果
**ビルド時間: 4分 → 43秒 (5.6倍高速化!)**
#### 実装内容
1. **✅ wasmtime分離完了** - `wasm-backend` feature flag実装
- `Cargo.toml`: wasmtime/wabtをoptional化
- `src/backend/mod.rs`: 条件付きコンパイル追加
- `src/runner.rs`: feature未有効時の適切なエラー表示
- `src/benchmarks.rs`: WASM関連を条件付き化
2. **✅ ビルドエラー修正完了**
- benchmarks.rs内の条件付きコンパイル対応
- すべてのビルドパターンで正常動作確認済み
### 📊 新しいビルドコマンド
```bash
# 高速ビルド(通常開発用): ~43秒
cargo build --release -j32
# WASM機能付きビルド必要時のみ: ~4分
cargo build --release -j32 --features wasm-backend
```
---
## 🎯 次の優先事項
### 1. 統合Box管理システムの設計最優先🆕
- **目標**: ビルトイン・ユーザー定義・プラグインBoxの統一管理
- **現状の問題**:
- ビルトインBox: 直接`Box<dyn NyashBox>`生成
- ユーザー定義Box: `InstanceBox`経由
- プラグインBox: BIDシステム経由
- **提案**: 統合BoxFactory/BoxRegistryシステム
- **期待効果**:
- フロー簡略化(すべて同じインターフェース)
- WASMビルド時の除外が容易feature分岐統一
- 将来の拡張性向上
### 2. nekocodeでソースコードダイエット
- **目標**: 3.3MB → 2MB以下
- **手法**: 未使用コード・重複実装の削除
- **ツール**: nekocodeによる分析改善待ち
- **期待効果**: さらなるビルド時間短縮+保守性向上
### 3. clone_box/share_box使用方法統一
- **問題**: Arc<dyn NyashBox>のシェアリング戦略が不統一
- **具体的な誤実装**:
- `channel_box.rs`: share_boxがclone_boxを呼んでいる仮実装
- `plugin_box_legacy.rs`: 同様の誤実装
- **正しいセマンティクス**:
- `clone_box`: 新しいインスタンス生成深いコピー、新しいID
- `share_box`: 同じインスタンスへの参照共有同じID、Arc参照
- **影響**: メモリ効率・パフォーマンス・セマンティクスの一貫性
- **修正範囲**: 全Box型の実装確認と統一Phase 9.78fで対応)
---
## 💡 統合Box管理システム設計案
### 🎯 **深く考えた結果: BoxFactory統一アーキテクチャ**
```rust
// 統合BoxFactoryトレイト
pub trait BoxFactory {
fn create_box(&self, name: &str, args: &[Box<dyn NyashBox>]) -> Result<Box<dyn NyashBox>, RuntimeError>;
fn is_available(&self) -> bool;
fn box_types(&self) -> Vec<&str>;
}
// 実装例
struct BuiltinBoxFactory; // StringBox, IntegerBox等
struct UserBoxFactory; // InstanceBox経由
struct PluginBoxFactory; // BID/FFI経由
// 統合レジストリ
struct UnifiedBoxRegistry {
factories: Vec<Box<dyn BoxFactory>>,
}
```
### 📊 **利点**
1. **統一インターフェース**: `new StringBox()``new MyBox()`も同じ処理フロー
2. **条件付きコンパイル簡単**:
```rust
#[cfg(not(target_arch = "wasm32"))]
registry.add_factory(Box::new(PluginBoxFactory));
```
3. **優先順位制御**: ビルトイン→ユーザー定義→プラグインの順で検索
4. **エラーハンドリング統一**: すべて同じエラー型で処理
### 🚀 **実装ステップ**
1. BoxFactoryトレイト定義
2. 各種Factory実装Builtin/User/Plugin
3. UnifiedBoxRegistry実装
4. objects.rsのcreate_object統合
5. WASM向けfeature分岐追加
---
## 🎉 本日の成果: FileBox v2完全動作
### 📍 達成事項
1. **✅ TLVエンコーディング修正**
- プラグインが期待する正確な形式に修正
- Header: version(2) + argc(2)
- Entry: tag(1) + reserved(1) + size(2) + data
2. **✅ 重複実装削除**
- method_dispatch.rs削除-494行
- calls.rsが実際の実装
3. **✅ FileBox全機能テスト成功**
- open/read/write/close全て正常動作
- 実ファイルI/O確認済み
### 🔥 重要な教訓
**「深く考える」の重要性**
- コードフローを正確に追跡
- 推測でなく実際の実行パスを確認
- レガシーコードを放置しない
---
## 📋 技術メモ
### wasmtime使用箇所
```
src/backend/wasm/mod.rs
src/backend/wasm/host.rs
src/backend/wasm/runtime.rs
src/backend/aot/compiler.rs
src/backend/aot/mod.rs
src/backend/aot/executable.rs
src/backend/aot/config.rs
```
### ビルド時間計測コマンド
```bash
time cargo clean && time cargo build --release -j32
```
### プロジェクトサイズ調査結果 🆕
- **実際のプロジェクトサイズ**: 約3GB3.3MBは誤解)
- **内訳**:
- `target/`: 1.3GB(ビルド生成物)
- `development/`: 1.2GB(開発ファイル)
- `src/`: 2.2MB(実際のソースコード)
- **削除可能**: 約2.3GBtarget関連
---
**最終更新**: 2025年8月19日
**次回: 統合Box管理システムで革命を**