Files
hakorune/docs/development/strategies/builtin-box-removal-strategy.md

96 lines
2.4 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.

# BuiltinBoxFactory段階削除戦略
> **Phase 15.5 "Everything is Plugin" への道**
> 作成日: 2025-09-24
> 戦略者: codex
## 🎯 目標
BuiltinBoxFactoryと`builtin_impls/`を安全に段階削除し、すべてをプラグインに移行する。
## 📊 現状分析
### 削除対象
- `src/box_factory/builtin.rs`: BuiltinBoxFactory実装
- `src/box_factory/builtin_impls/`: 8ファイル、32KB
- string_box.rs
- integer_box.rs
- bool_box.rs
- array_box.rs
- map_box.rs
- console_box.rs
- null_box.rs
- mod.rs
### 参照箇所
- `src/runtime/unified_registry.rs`: BuiltinBoxFactory登録2箇所
- `src/runtime/nyash_runtime.rs`: BuiltinBoxFactory登録1箇所
## 🚀 段階削除戦略
### Phase 1: 機能ゲート厳格化(現在)
```rust
// 現状plugins-onlyでのみ無効化
#[cfg(not(feature = "plugins-only"))]
{
registry.register(Arc::new(BuiltinBoxFactory::new()));
}
```
### Phase 2: Opt-in化次回
```rust
// 将来builtin-coreでのみ有効化
#[cfg(feature = "builtin-core")]
{
registry.register(Arc::new(BuiltinBoxFactory::new()));
}
```
### Phase 3: 個別Box削除順序
1. **StringBox**: プラグイン版が安定動作確認後
2. **IntegerBox**: 同上
3. **BoolBox**: シンプルなので早期削除可
4. **ArrayBox**: 依存関係確認後
5. **MapBox**: 最後に削除
6. **ConsoleBox**: print依存の最後
7. **NullBox**: 影響最小、いつでも削除可
## ✅ 検証項目(各段階)
### ビルド検証
```bash
cargo check --features llvm
cargo check --features plugins-only
```
### スモークテスト
```bash
# プラグインで基本動作確認
./target/release/nyash test_plugin_basic.hako
# LLVM EXEでprint出力確認
NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm test.hako
```
## 🛡️ ロールバック戦略
各削除は別ブランチで実施:
- `cleanup/builtin-string`
- `cleanup/builtin-integer`
-
失敗時は該当ブランチをrevertするだけで復帰可能。
## 🏁 完了条件
1. `builtin_impls/`ディレクトリ削除
2. `BuiltinBoxFactory`削除
3. すべてのBoxがプラグイン経由で動作
4. CI全緑確認
## 📅 タイムライン
- **Phase 1**: ✅ 完了2025-09-24
- **Phase 2**: 機能フラグ反転(次回作業)
- **Phase 3**: 個別Box削除1週間程度
- **完了予定**: Phase 15.5完了時