Files
hakorune/docs/development/roadmap/phases/phase-12/README.md
Moe Charm de99b40bee Phase 12 TypeBox統合ABI設計完了: C ABI + Nyash ABI革命的統合
主な成果:
- TypeBox(型情報をBoxとして扱う)による統合ABI設計
- C ABI + Nyash ABIの完全統合仕様書作成
- 3大AI専門家(Gemini/Codex/ChatGPT5)による検証済み
- ChatGPT5の10個の安全性改善提案を反映
- README.mdのドキュメント更新(全起点から到達可能)

MapBox拡張:
- string型キーサポート(従来のi64に加えて)
- remove/clear/getOr/keysStr/valuesStr/toJson実装
- keys()/values()のランタイムシムサポート(TypeBox待ち)

その他の改善:
- Phase 11.9(文法統一化)ドキュメント追加
- Phase 16(FoldLang)ドキュメント追加
- 非同期タイムアウトテスト追加
- 各種ビルド警告(未使用import等)は次のリファクタリングで対応予定

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

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

6.9 KiB
Raw Blame History

Phase 12: Nyashコード共有エコシステム - Everything is Box の実現

🚀 最新ブレイクスルー (2025-09-01)

TypeBox統合ABI - プラグイン革命の実現!

「Everything is Box」哲学の究極形態型情報すらBoxとして扱うTypeBoxにより、C ABI + Nyash ABIの完全統合を達成

// TypeBox - 型情報をBoxとして扱う最小構造
typedef struct {
    uint32_t abi_tag;       // 'TYBX'
    const char* name;       // "ArrayBox"
    void* (*create)(void);  // Box生成関数
} NyrtTypeBox;

3大AI専門家の一致した結論:

  • Codex: 「TypeBoxブリッジは理想的なアーキテクチャ」
  • ChatGPT5: 「実装に耐える設計。10の改善点で完璧」
  • Gemini: 「Nyash哲学に最適なシンプルさ」

🎯 重要な変更 (2025-09-01)

Phase 12の議論とビルトインBox廃止により、プラグインシステムが進化

新しい3層プラグインシステムが確立されました

# Nyashスクリプトプラグインユーザー定義Box
box DataProcessor {
    init {
        me.file = new FileBox()    # C ABIプラグイン使用
        me.math = new MathBox()    # C ABIプラグイン使用
        me.cache = new MapBox()    # これもC ABIプラグインビルトイン廃止
    }
    
    process(data) {
        local result = me.math.sin(data)
        me.file.write("log.txt", result.toString())
        return result
    }
}

# 使用例
local processor = new DataProcessor()
processor.process(3.14)  # すべてプラグインで動作!

📝 なぜ誤解が生まれたのか

「プラグイン」という言葉から、特別な仕組みが必要だと考えてしまいましたが、Nyashの「Everything is Box」哲学により、ユーザー定義Boxこそが最高のプラグインシステムでした。

詳細な分析:なぜ天才AIたちは間違えたのか

🚀 Phase 12の真の価値コード共有エコシステム

本当に必要なもの

  1. export/import構文

    # math_utils.ny
    export box MathUtils {
        factorial(n) { ... }
        fibonacci(n) { ... }
    }
    
    # main.ny
    import { MathUtils } from "math_utils.ny"
    local utils = new MathUtils()
    
  2. パッケージマネージャー

    nyash install awesome-math-utils
    nyash publish my-cool-box
    
  3. ドキュメント生成

    # @doc 素晴らしい数学ユーティリティ
    # @param n 計算したい数値
    # @return 階乗の結果
    export box MathUtils { ... }
    

📊 新しい3層プラグインシステム

NyashエコシステムビルトインBox廃止後
├── Nyashスクリプトプラグインユーザー定義Box← .nyashファイル
├── C ABIプラグイン既存のまま使用← シンプル・高速・安定
│   └── **TypeBox**: プラグイン間Box生成の最小機構 🆕
└── Nyash ABIプラグイン必要時のみ← 言語間相互運用・将来拡張
    └── MIR命令は増やさないBoxCallにabi_hint追加のみ

💡 TypeBoxシンプルなプラグイン間連携

MapBox.keys()がArrayBoxを返したい場合

// TypeBox構造体型情報をBoxとして扱う
typedef struct {
    uint32_t abi_tag;       // 'TYBX'
    const char* name;       // "ArrayBox"
    void* (*create)(void);  // Box生成関数
} NyrtTypeBox;

// MapBox.keys()実装
void* map_keys(void* self, void* array_type_box) {
    NyrtTypeBox* array_type = (NyrtTypeBox*)array_type_box;
    void* array = array_type->create();  // ArrayBox生成
    // ... キーを追加
    return array;
}

詳細: C ABI TypeBox設計仕様書

プラグイン選択の指針

  • C ABIで済むなら、C ABIを使う(シンプルイズベスト)
  • Nyash ABIは以下の場合のみ
    • 他言語Python/Go等からの呼び出し
    • 複雑な型の相互運用が必要
    • 将来の拡張性を重視する場合

📝 MIR命令統合Phase 12での変更

  • PluginInvoke → BoxCall 統合
    • ビルトインBox廃止によりフォールバックがなくなる
    • BoxCallとPluginInvokeの区別が不要に
    • VM層でC ABI/Nyash ABI/Scriptを自動判定
    • Core-15 → Core-14 へ(命令数削減)

🛣️ 実装ロードマップTypeBox優先版

Phase 12.0: TypeBox統合ABI実装1週間🆕

  • nyrt_typebox.h完全ヘッダー定義
  • Rust FFIミラー実装
  • MapBox両ABI実装実証テスト
  • 所有権ファズテスト
  • 📄 統合ABI設計仕様書

現状サマリ2025-09-02

  • C ABITLV: 1/2/3/5/6/7/8でのプラグイン呼び出しはVMで安定運用中。returns_resultnyash.toml で制御可能。
  • JIT は VM と同じBox境界で動作フォールバック含む。Cranelift AOT のオブジェクト出力は未配線(スケルトン)。
  • MapBox を拡張stringキー、remove/clear/getOr/keysStr/valuesStr/toJsonkeys()/values() はランタイムシムで暫定提供。
  • Phase 12 設計TypeBox + Unified Dispatchは破壊的変更不要で段階導入可能と判断。

詳細タスクは TASKS.md を参照。

Phase 12.1: export/import構文2週間

  • exportキーワードのパーサー実装
  • importステートメントの実装
  • モジュール解決システム
  • 📄 詳細仕様書

Phase 12.2: パッケージ管理3週間

Phase 12.3: 開発者体験向上(継続的)

  • ドキュメント生成ツール
  • VSCode拡張補完・定義ジャンプ
  • サンプルパッケージ作成

📚 関連ドキュメント

🎯 主要設計ドキュメント

📂 議論の過程

  • ABI戦略議論: abi-strategy-discussion/
  • Nyash ABI詳細: nyash-abi-discussion/
  • 初期提案アーカイブ: archive/

AIたちがなぜ複雑な解決策を提案したのか、その議論の過程は archive/ ディレクトリに保存されています。良い教訓として残しておきます。