Files
hakorune/docs/development/roadmap/phases/phase-10.1
Moe Charm c954b1f520 feat(plugins): ArrayBox/MapBoxプラグイン実装とPhase 10.1計画
🎯 革命的発見: プラグインC ABI = JIT→EXE変換の統一基盤

## 主な変更点
- ArrayBoxプラグイン: get/set/push/size/is_empty実装
- MapBoxプラグイン: size/get/has実装(ROメソッドのみ)
- Phase 10.1ドキュメント: プラグインBox統一化計画
- デモファイル3種: プラグイン動作確認用

## 技術的詳細
- BID-FFI (Box ID Foreign Function Interface) 活用
- 既存のプラグインシステムでJIT/AOT統一可能
- スタティックリンクでオーバーヘッド解消
- "Everything is Box → Everything is Plugin → Everything is Executable"

## テスト済み
- array_plugin_demo.nyash: 基本動作確認 
- array_plugin_set_demo.nyash: set操作確認 
- map_plugin_ro_demo.nyash: RO操作確認 

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 04:37:30 +09:00
..

Phase 10.1: JIT→EXE via Plugin Box Unification

🎯 革新的発見:すべてはプラグインになる

核心的洞察

既存のプラグインシステムBID-FFIがすでに完全なC ABIを持っている。 これを活用することで、JIT→EXE変換が現実的に可能。

📊 フェーズ概要

目標

  • ビルトインBoxをプラグイン化してC ABI統一
  • JITから統一されたプラグインAPIを呼び出し
  • スタティックリンクによるスタンドアロンEXE生成

背景

現在の構造:
- JIT → HostCall → Rustビルトイン複雑
- JIT → PluginInvoke → プラグインBoxC FFI

統一後:
- JIT → PluginInvoke → すべてのBox統一
- EXE → PluginInvoke → スタティックリンクされたBox

🚀 実装計画

Week 1: ArrayBoxプラグイン化PoC詳細は phase_plan.md 参照)

  • ArrayBoxをプラグインとして再実装
  • JITからのプラグイン呼び出しテスト
  • パフォーマンス測定HostCall vs Plugin

Week 2: 主要Box移行詳細は phase_plan.md 参照)

  • StringBox、IntegerBox、BoolBoxのプラグイン化
  • JIT lowering層の統一plugin_invoke経由
  • 既存HostCallとの共存メカニズム

Week 3: 静的リンク基盤(詳細は phase_plan.md 参照)

  • プラグインの.aライブラリビルド
  • 最小ランタイムnyash-runtime設計
  • リンカースクリプト作成

Week 4: EXE生成実証詳細は phase_plan.md 参照)

  • Hello Worldレベルのスタンドアロン実行
  • Linux/macOSでの動作確認
  • デバッグ情報とunwind対応

📁 ディレクトリ構造(予定)

plugins/
├── nyash-core-boxes/        # ビルトインBox群
│   ├── nyash-array-plugin/
│   ├── nyash-string-plugin/
│   └── nyash-integer-plugin/
├── nyash-runtime-minimal/   # 最小ランタイム
└── existing/               # 既存プラグイン
    ├── nyash-file-plugin/
    └── nyash-net-plugin/

🔗 関連資料

成功指標

  1. 技術的検証

    • ArrayBoxがプラグインとして動作
    • JITからの呼び出し成功
    • 性能劣化10%以内
  2. 統合達成

    • 5つ以上のビルトインBoxがプラグイン化
    • JIT lowering層の完全統一
  3. EXE生成

    • スタンドアロン実行ファイル生成
    • 基本的なNyashプログラムの動作

🎉 期待される成果

  • Everything is Plugin - 新たな設計哲学の確立
  • 自己ホスティングへの現実的な道筋
  • プラグインエコシステムの拡大可能性

"Everything is Box → Everything is Plugin → Everything is Possible"