Files
hakorune/docs/development/roadmap/phases/phase-12/TASKS.md

67 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.

# Phase 12 Task Board (v2 - セルフホスティング対応)
Status: Tier-0 完了vtable雛形 + レジストリ + VM優先経路。次は Tier-1 の最小Nyash ABIサンプル実装へ。
目的: C ABI を壊さず、TypeBox + 統一ディスパッチで Nyash ABI を段階導入。MIR→VM→JIT を「綺麗な箱」で統一。**最終的にRust依存を排除し、セルフホスティングを実現。**
## Tier-0直近・安全に積める
- [x] MapBoxの実用拡張stringキー/便利API
- [x] `keys()/values()` 実装ArrayBox返却に更新
- [x] TypeBoxレジストリ雛形
- Box名/FQN、type_id、メソッド表静的スロットを登録`src/runtime/type_registry.rs`
- 既存 `nyash.toml` → TypeBoxInfo 変換層は別途(未着手)
- [x] 統一ディスパッチ層VM・雛形
- `NYASH_ABI_VTABLE=1` で vtable優先のVM経路を有効化fallbackはC ABI/TLV
- Array/Map/String/Instance の主要メソッドを最小カバレッジで処理(`try_boxcall_vtable_stub`)。
- 所有権・セーフポイントのガードは既存Barrier呼び出しで一部対応MAY_BLOCK等は今後拡張
- [x] プラグインテスター更新v2ローダに対応: `src/bin/test_plugin_loader_v2.rs`
## Tier-1実証
- [ ] Nyash ABI vtable の最小サンプル1プラグイン・1メソッド
- 例: MapBox.getS(name) を Nyash ABI で直接返却
- 単体テストVM/JIT
- [ ] JIT側統一ディスパッチthunkを呼ぶ経路を追加フォールバックでも可
- [ ] 互換テスト: C ABI と Nyash ABI が同一結果になる差分テスト
## Tier-2強化
- [ ] NyashValueインラインi64/boolの高速化
- [ ] 例外/エラーの完全変換panic→nyrt_err
- [ ] 所有権契約の遵守TRANSFER/BORROW/CLONE
- [x] `keys()/values()` の正式実装ArrayBox返却
- 採用: ランタイムで ArrayBox を構築(`src/boxes/map_box.rs`
## Tier-3セルフホスティング🔥新規
- [ ] Nyash ABI C実装の開始
- [ ] nyash_abi_provider.h定義16バイトアライメント
- [ ] C Shim実装Rust FFI経由
- [ ] 基本型実装Tagged Pointers対応
- [ ] アトミック参照カウント実装
- [ ] 弱参照による循環参照対策
- [ ] セレクターキャッシング実装
- [ ] lookup_selector API
- [ ] JIT統合vtable_slot直接呼び出し
- [ ] 適合性テストスイート構築
- [ ] Rust/C実装の差分テスト
- [ ] パフォーマンス測定1.5x以内)
## ドキュメント/管理
- [ ] UNIFIED-ABI-DESIGN.md の「最小導入プロファイル」明記
- [ ] VM/JIT実装メモ統一ディスパッチの呼出し順
- [ ] リファクタリング計画(>1000行ファイルの分割方針
## 既知のやり残しPhase 12 関連)
- TypeBoxレジストリ/統一ディスパッチのコード未導入
- Nyash ABI vtableの実装サンプル未着手
- 既存プラグインの対応TypeBox vtable移行 or 互換レイヤ継続)
- GCセーフポイントのMAY_BLOCK以外の一般化
- keys()/values() の正式ArrayBox返却現状はシム
- AOT(LLVM)のbuild失敗nyrt借用修正、後回し方針
- Nyash ABI C実装セルフホスティングの要🔥新規
## Doneの定義Phase 12 - 更新版)
1) TypeBoxレジストリと統一ディスパッチがVMに入り、C ABI互換で全プラグインが動作
2) 1プラグインでNyash ABIの成功パスが通るVM/JIT
3) keys()/values() が ArrayBox 返却で安定
4) 基本の所有権・セーフポイントルールが守られる
5) **Nyash ABI C実装の基礎が動作し、セルフホスティングへの道筋が明確**🔥新規