Files
hakorune/docs/development/roadmap/phases/phase-15
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
..

Phase 15: Nyashセルフホスティング - 71k→15k行への革命

📋 概要

NyashでNyashコンパイラを書く、完全なセルフホスティングの実現フェーズ。 内蔵Cranelift JITを活用し、外部コンパイラ依存から完全に解放される。 革命的成果71,000行→15,000行75%削減)

🎯 フェーズの目的

  1. 完全なセルフホスティング: NyashコンパイラをNyashで実装
  2. 外部依存の排除: gcc/clang/MSVC不要の世界
  3. Everything is Box哲学の完成: コンパイラもBox
  4. エコシステムの自立: Nyashだけで完結する開発環境
  5. 劇的なコード圧縮: 75%削減で保守性・可読性の革命

📊 主要成果物

コンパイラコンポーネント

  • CompilerBox実装統合コンパイラ
  • Nyashパーサー800行目標
  • MIR Lowerer2,500行目標
  • CraneliftBoxJITエンジンラッパー
  • LinkerBoxリンカー統合

自動生成基盤

  • boxes.yamlBox型定義
  • externs.yamlC ABI境界
  • semantics.yamlMIR15定義
  • build.rs自動生成システム

ブートストラップ

  • c0→c1コンパイル成功
  • c1→c1'自己コンパイル
  • パリティテスト合格

🔧 技術的アプローチ

内蔵Craneliftの利点

  • 軽量: 3-5MB程度LLVMの1/10以下
  • JIT特化: メモリ上での動的コンパイル
  • Rust統合: 静的リンクで配布容易

コード削減の秘密

  • Arc自動化: 明示的ロック管理不要(-30%
  • 型システム簡略化: 動的型付けの恩恵(-20%
  • エラー処理統一: Result<T,E>地獄からの解放(-15%
  • 動的ディスパッチ: match文の大幅削減-10%

実装例

// 71,000行のRust実装が...
box NyashCompiler {
    init { parser, lowerer, backend }
    
    compile(source) {
        local ast = me.parser.parse(source)
        local mir = me.lowerer.lower(ast)
        return me.backend.generate(mir)
    }
}

// MIR実行器も動的ディスパッチで簡潔に
box MirExecutor {
    execute(inst) { return me[inst.type](inst) }
    Const(inst) { me.values[inst.result] = inst.value }
    BinOp(inst) { /* 実装 */ }
}

🔗 EXEファイル生成・リンク戦略

段階的アプローチ

  1. Phase 1: 外部リンカーlld/gcc利用
  2. Phase 2: lld内蔵で配布容易化
  3. Phase 3: ミニリンカー自作(究極の自立)

C ABI境界設計

  • プレフィクス: ny_v1_*で統一
  • 呼出規約: Windows(fastcall) / Linux(sysv_amd64)
  • 必須関数: ny_init(), ny_fini()
  • 型マッピング: ny_handle=uint64_t

🔗 関連ドキュメント

📅 実施時期

  • 開始条件: Phase 10-14完了後
  • 推定開始: 2026年前半
  • 推定期間: 6-8ヶ月
  • 早期着手: YAML自動生成は今すぐ開始可能

💡 期待される成果

  1. 技術的証明: 実用言語としての成熟度
  2. 開発効率: Nyashだけで開発完結
  3. 教育価値: 15,000行で読破可能なコンパイラ
  4. コミュニティ: 参入障壁の大幅低下
  5. 保守性革命: 75%削減で誰でも改造可能

🌟 夢の実現

「コンパイラもBox、リンカーもBox、すべてがBox」 「71,000行→15,000行、これが革命」

外部ツールチェーンに依存しない、真の自立したプログラミング言語へ。

数値で見る革命

  • コード行数: 71,000 → 15,000行75%削減
  • 理解容易性: 1週間で読破可能なコンパイラ
  • 貢献しやすさ: 誰でも改造できる規模
  • 教育的価値: 世界一シンプルな実用コンパイラ