Files
hakorune/docs/development/roadmap/phases/phase-22/synthesis.md

4.0 KiB
Raw Blame History

統合分析: NyashでLLVMコンパイラを書く革命

🎯 核心的洞察

ユーザーの鋭い指摘

「MIR解釈して出力するだけなのに、メモリーリークの心配なんてあるんだろうか

これが全ての始まり。確かに:

  • 短命プロセス: 数秒で終了するバッチ処理
  • 一方通行: MIR → LLVM IR → オブジェクトファイル → 終了
  • 自動解放: プロセス終了で全メモリ解放

Rustの複雑なメモリ管理は、このユースケースには過剰設計だった

🤝 両AIの一致点

1. 技術的実現可能性

  • Gemini: 「確実に実現可能」
  • Codex: 「技術的に実現可能で健全な戦略」

2. ビルド時間革命

  • 現在: 5-7分Rust + inkwell
  • 提案: 即座の変更反映(再コンパイル不要)

3. コード圧縮効果

  • 現在: 2,500行
  • 目標: 100-200行95%削減!)

💡 革新的設計の要点

三層アーキテクチャ

┌─────────────────┐
│ Nyash Layer     │ 100-200行ビジネスロジック
├─────────────────┤
│ C++ Glue Layer  │ 20-30関数薄いラッパー
├─────────────────┤
│ LLVM Core       │ そのまま利用
└─────────────────┘

実装例(究極のシンプルさ)

// コンパイラ全体がこの程度!
box LLVMCompiler {
    context: LLVMContextBox
    module: LLVMModuleBox
    
    birth() {
        me.context = ExternCall("llvm", "context_create", [])
        me.module = ExternCall("llvm", "module_create", [me.context, "nyash"])
    }
    
    compileMir(mirJson) {
        local mir = JsonBox.parse(mirJson)
        mir.functions.forEach(me.compileFunction)
        return ExternCall("llvm", "write_object", [me.module, "output.o"])
    }
}

🚀 段階的実装戦略両AI統合

Phase 0: MVPテキストIR経由

Codex推奨のアプローチから開始

// 最小C++ラッパー10関数未満
extern "C" {
    i64 llvm_module_from_ir(const char* ir_text);
    i64 llvm_write_object(i64 module, const char* path);
}

利点:

  • 最速で動作確認
  • 関数数最小
  • デバッグ容易IRテキストが見える

Phase 1: バッチBuilder化

Codexの革新的提案

// バッチ命令API境界コスト最小化
i64 llvm_build_batch(i64 module, const char* encoded_ops, i32 len);

利点:

  • FFI呼び出し回数激減
  • 関数数を20-30に収める鍵

Phase 2: 最適化と完成

  • Nyash側で最適化パス実装
  • プロファイリングとチューニング
  • Rust版の完全置き換え

🌟 なぜこれが革命的か

1. 開発速度の劇的向上

# 現在(変更のたびに)
cargo build --release --features llvm  # 5-7分待つ...

# 提案(即座に実行)
./target/release/nyash nyash-llvm-compiler.hako test.hako

2. 理解可能性の革命

  • Rust版: 2,500行、inkwellの知識必要
  • Nyash版: 100行、誰でも週末で理解

3. Everything is Box哲学の究極形

// コンパイラもBox
box Compiler { }

// パーサーもBox
box Parser { }

// 最適化もBox
box Optimizer { }

// すべてがBox = すべてがシンプル

🎉 結論:実現すべき革命

両AIとユーザーの洞察を統合すると

  1. 技術的に完全に実現可能
  2. 開発体験が劇的に向上
  3. Phase 15の目標に完璧に合致
  4. セルフホスティングの真の実現

次の一手

まずは現在のLLVM Rust実装を完成させる。その安定版を基準に、Phase 22でこの革命的アプローチを実装する。

「Rustの安全性は素晴らしい。でも、3秒で終わるプログラムに5分のビルドは過剰だにゃ

この単純な真実が、新しい時代への扉を開く鍵となる。