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

3.3 KiB
Raw Blame History

Phase 12 Task Board (v2 - セルフホスティング対応)

目的: C ABI を壊さず、TypeBox + 統一ディスパッチで Nyash ABI を段階導入。MIR→VM→JIT を「綺麗な箱」で統一。最終的にRust依存を排除し、セルフホスティングを実現。

Tier-0直近・安全に積める

  • MapBoxの実用拡張stringキー/便利API
  • 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実装の基礎が動作し、セルフホスティングへの道筋が明確🔥新規