Files
hakorune/docs/development/roadmap/phases/phase-12/archive/REVISED-PROPOSAL.md
Moe Charm 11506cee3b Phase 11-12: LLVM backend initial, semantics layer, plugin unification
Major changes:
- LLVM backend initial implementation (compiler.rs, llvm mode)
- Semantics layer integration in interpreter (operators.rs)
- Phase 12 plugin architecture revision (3-layer system)
- Builtin box removal preparation
- MIR instruction set documentation (26→Core-15 migration)
- Cross-backend testing infrastructure
- Await/nowait syntax support

New features:
- LLVM AOT compilation support (--backend llvm)
- Semantics layer for interpreter→VM flow
- Tri-backend smoke tests
- Plugin-only registry mode

Bug fixes:
- Interpreter plugin box arithmetic operations
- Branch test returns incorrect values

Documentation:
- Phase 12 README.md updated with new plugin architecture
- Removed obsolete NYIR proposals
- Added LLVM test programs documentation

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 23:44:34 +09:00

4.5 KiB
Raw Blame History

Phase 12改訂版Nyashスクリプトプラグイン - 開発支援ツールとして

🎯 現実的な位置づけ

スクリプトプラグインは、JIT/AOT/EXEとは独立した開発支援機能として実装する。

📊 制約と可能性の整理

できないこと(技術的制約)

  • MIR/VM/JIT/AOTからのスクリプトプラグイン呼び出し
  • スクリプトプラグインのEXE埋め込み
  • ネイティブプラグインとの完全な相互運用性

できること(現実的な価値)

  • インタープリターモードでの高速プロトタイピング
  • 既存プラグインの組み合わせによる新機能開発
  • ビルド不要な機能拡張(開発時のみ)

🔄 修正された開発フロー

┌─────────────────┐
│ アイデア/要件   │
└────────┬────────┘
         ↓
┌─────────────────┐
│ Nyashスクリプト │ ← 高速イテレーション
│ プラグイン作成  │   ビルド不要
└────────┬────────┘
         ↓
┌─────────────────┐
│ インタープリター│
│ でテスト/検証   │
└────────┬────────┘
         ↓
    性能要求?
    ↙        ↘
  No          Yes
   ↓           ↓
そのまま    Rust/Cで
使用      再実装
           ↓
      ネイティブ
      プラグイン
           ↓
      JIT/AOT/EXE

📝 実装方針

1. インタープリター専用機能として実装

// script_plugin.ny
export box CustomLogic {
    init {
        _math = new MathBox()    // ネイティブプラグイン利用
        _cache = new MapBox()
    }
    
    process(data) {
        // 複雑なビジネスロジック
        // インタープリターでのみ実行
    }
}

2. 明確な使用場面の区別

// development.ny開発時
local plugin = include("custom_logic.ny")  // ✅ OK

// production.ny本番時
local plugin = new CustomLogicBox()  // ネイティブ版を使用

3. トランスパイル支援ツール(将来)

# Nyashスクリプト → Rustテンプレート生成
nyash-to-rust custom_logic.ny > custom_logic_plugin/src/lib.rs

🎯 価値提案(修正版)

開発者にとっての価値

  1. 探索的プログラミング - アイデアを即座に試せる
  2. プロトタイピング - ビルドなしで機能検証
  3. 学習曲線の緩和 - Rust/C知識不要で拡張開発

エコシステムへの貢献

  1. アイデアの具現化 - スクリプトで検証→ネイティブで実装
  2. コミュニティ参加 - より多くの開発者が貢献可能
  3. ベストプラクティス - 成功パターンの蓄積

🚀 実装計画(現実的版)

Phase 12.1: 基盤構築2週間

  • export box構文インタープリター専用
  • include()関数の拡張
  • 基本的なプラグインレジストリ

Phase 12.2: 開発体験向上3週間

  • ホットリロード(開発モード)
  • エラーメッセージ改善
  • デバッグ支援機能

Phase 12.3: 移行支援4週間

  • パフォーマンス分析ツール
  • Rust変換テンプレート
  • 移行ガイドライン

📚 ドキュメント戦略

明確な制約の説明

# Nyashスクリプトプラグイン

⚠️ **重要な制約**
- インタープリターモードでのみ動作
- JIT/AOT/EXEでは使用不可
- 本番環境ではネイティブプラグインへの移行推奨

使用例の充実

  • プロトタイピング例
  • ネイティブ移行例
  • パフォーマンス比較

🎉 期待される成果(現実的版)

短期3ヶ月

  • 開発効率の向上プロトタイピング時間80%削減)
  • 新規開発者の参入Rust不要
  • アイデア検証の高速化

中期1年

  • 成功パターンの確立
  • ネイティブプラグインの品質向上
  • コミュニティ主導の機能提案増加

結論

スクリプトプラグインは、C ABIの制約を認識した上で、開発支援ツールとして大きな価値を提供できる。

「Everything is Box」の哲学は、実行時の制約はあれど、開発時の自由度として実現される。