Files
hakorune/CODEX_QUESTION_backup.md
Selfhosting Dev f0608e9bb1 feat: Phase 2.4 レガシーアーカイブ整理完了(151MB削減)
## 🎉 完了項目
-  plugin_box_legacy.rs削除(7.7KB、参照ゼロ確認済み)
-  REMOVEDコメント整理(encode.rs簡潔化)
-  venv削除(143MB節約、.gitignoreは既存)
-  llvm_legacyスタブ化(8KB、compile_error!による安全化)

## 🏆 成果
- **リポジトリサイズ改善**: 151MB削減
- **コード整理**: レガシーコード安全にアーカイブ
- **プラグインファースト**: StrictPluginFirst継続動作

##  検証完了
- cargo build --release --features llvm (警告のみ、エラーなし)
- LLVMハーネス実行: print出力正常
- プラグイン動作: StringBox等正常動作

codex先生の戦略に従った安全な段階的削除を実行

Co-Authored-By: codex <noreply@anthropic.com>
2025-09-24 14:13:15 +09:00

103 lines
3.7 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.

# Codex向け質問 - Phase 15.5後のテスト戦略
## 📋 背景
Phase 15.5でCore Box完全削除を実施し、すべてのBoxをプラグイン化しました。その結果
- ✅ nyash.tomlのパス修正完了13箇所
- ✅ プラグインは正常にロード(.soファイル20個存在
- ✅ 基本的な算術演算・制御構文は動作
- ❌ StringBox/IntegerBoxのメソッドが動作しない
## 🔍 現在の問題
### StringBoxプラグインの状況
```nyash
local s = new StringBox("Hello") # ← オブジェクト生成OKハンドル返却
print(s) # ← 空文字列toString失敗
s.length() # ← 0を返す内部データなし
s.toString() # ← 空文字列を返す
s.get() # ← 空文字列を返す
```
### 調査済み事項
1. プラグインは正常にロードplugin-testerで確認
2. nyash_plugin_invokeは実装済みlegacy v1 ABI
3. method_id衝突を修正済み0-3 → 4+に変更)
4. 通常の文字列リテラルは動作する
5. 算術演算は問題なし
### 🔬 根本原因Codex調査結果
**TypeBox v2のresolveブランチが欠落している**
- `birth`メソッドの解決パスが未実装
- `toString`メソッドの解決パスが未実装
- プラグインメソッドは呼ばれるが、結果の処理に問題
## 🎯 質問
### 1. **StringBoxメソッドが動作しない原因は**
Phase 15.5でCore Boxを削除した影響で、プラグイン側の実装が不完全な可能性があります。
- プラグインのnyash_plugin_invoke実装を確認すべき箇所は
- MIRビルダー側でプラグインメソッド呼び出しに特別な処理が必要
### 2. **テスト戦略の方向性**
現状でStringBox/IntegerBoxが動作しない中で
- A案: プラグインメソッド修正を優先
- B案: 基本機能(算術・制御)のテストを先に充実
- C案: 別のBoxプラグインFileBox等でテスト
どの方向性が効率的でしょうか?
### 3. **プラグインメソッド呼び出しのデバッグ方法**
```bash
# 現在の確認方法
./tools/plugin-tester/target/release/plugin-tester check --config nyash.toml
# → プラグインロードはOK、でもメソッド実行時に問題
# より詳細なデバッグ方法は?
```
## 🔄 再現手順
### 最小再現コード
```bash
# test_stringbox.nyash
local s = new StringBox("Hello World")
print("StringBox created")
print(s) # 期待: "Hello World", 実際: ""
local len = s.length()
print("Length: " + len) # 期待: 11, 実際: 0
```
### 実行コマンド
```bash
# プラグインロード確認
./tools/plugin-tester/target/release/plugin-tester check --config nyash.toml
# テスト実行
NYASH_ENTRY_ALLOW_TOPLEVEL_MAIN=1 ./target/release/nyash test_stringbox.nyash
```
### デバッグ情報収集
```bash
# 詳細ログ
NYASH_CLI_VERBOSE=1 ./target/release/nyash test_stringbox.nyash
# MIRダンプ確認
./target/release/nyash --dump-mir test_stringbox.nyash
```
## 📁 関連ファイル
- `nyash.toml` - プラグイン設定method_id修正済み
- `plugins/nyash-string-plugin/src/lib.rs` - StringBoxプラグイン実装
- `tools/smokes/v2/` - 新スモークテストシステム
- `src/box_factory/plugin.rs` - プラグインロード実装
- `src/mir/builder/builder_calls.rs` - TypeBox v2 resolve実装問題箇所
## 🚀 期待する回答
1. StringBoxメソッドが動作しない根本原因の特定方法
2. 効率的なテスト戦略の提案
3. プラグインメソッド呼び出しのデバッグ手法
よろしくお願いします!