Files
hakorune/docs/CURRENT_TASK.md

158 lines
5.1 KiB
Markdown
Raw Normal View History

# 🎯 現在のタスク (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管理システムで革命を**