Files
hakorune/docs/development/roadmap/phases/phase-12/TASKS.md
Moe Charm b05d5dd7ca Phase 12: TypeBox革命とJIT制御フロー修正 - セルフホスティングへの道
## 🔥 TypeBox ABI革命(セルフホスティング実現)
- Nyash ABIをC実装TypeBoxで提供する画期的設計
- Gemini/Codexの深い考察を反映した詳細仕様書作成
- 16バイトアライメント、セレクターキャッシング、弱参照等の具体実装案
- Rust依存を完全排除し、セルフホスティングへの明確な道筋を確立

## 🎯 JIT制御フロー根本修正(ChatGPT5の25分長考の成果)
- ブロック挿入点の明確化: switch_to_block()で各ブロックemit開始時に切替
- シール戦略の簡潔化: br/jump直後のseal撤廃、最終シールに一本化
- PHI最小経路実装: ブロック引数の事前プリスキャン、後付けPHI問題解決
- Cranelift制約対応: 開始済みブロックへのappend禁止を正しく実装

## 📚 ドキュメント更新
- Phase 12全体のセルフホスティング対応更新
- NYASH-ABI-C-IMPLEMENTATION.md: 実装仕様書作成
- gemini-codex-deep-thoughts.md: AI専門家の考察アーカイブ
- 各種README/TASKS更新でセルフホスティング要件追加

##  テスト結果
- mir-branch-ret: OK (Result: 1)
- mir-phi-min: OK (Result: 10)
- mir-branch-multi: OK (Result: 1)

「Everything is Box」の究極形態:ABIすらBoxとして扱う革命的設計!

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-02 11:18:19 +09:00

64 lines
3.3 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 - セルフホスティング対応)
目的: C ABI を壊さず、TypeBox + 統一ディスパッチで Nyash ABI を段階導入。MIR→VM→JIT を「綺麗な箱」で統一。**最終的にRust依存を排除し、セルフホスティングを実現。**
## Tier-0直近・安全に積める
- [x] MapBoxの実用拡張stringキー/便利API
- [x] `keys()/values()` ランタイムシム現状は改行区切りString返却
- [ ] TypeBoxレジストリ雛形
- Box名/FQN、type_id、メソッド表、returns_result を登録
- 既存 `nyash.toml` → TypeBoxInfo への変換層
- [ ] 統一ディスパッチ層VM
- Nyash ABI vtable優先 → 無ければ C ABITLVへフォールバック
- 所有権・セーフポイントのガードMAY_BLOCKのみ初期対応
## 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
- [ ] `keys()/values()` の正式実装ArrayBox返却
- 選択肢A: ランタイムで ArrayBox を構築
- 選択肢B: Mapプラグインに KeysArrayBox を同梱(要設定追加)
## 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の実装サンプル未着手
- 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実装の基礎が動作し、セルフホスティングへの道筋が明確**🔥新規