Unify condition lowering logic across Pattern 2/4 with trait-based API. New infrastructure: - condition_lowering_box.rs: ConditionLoweringBox trait + ConditionContext (293 lines) - ExprLowerer implements ConditionLoweringBox trait (+51 lines) Pattern migrations: - Pattern 2 (loop_with_break_minimal.rs): Use trait API - Pattern 4 (loop_with_continue_minimal.rs): Use trait API Benefits: - Unified condition lowering interface - Extensible for future lowering strategies - Clean API boundary between patterns and lowering logic - Zero code duplication Test results: 911/911 PASS (+2 new tests) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Geminiとの議論: NyashでLLVMコンパイラを書く構想
質問内容
Nyashセルフホスティングの革新的アイデアについて相談です。
現状:
- RustでLLVMバインディング(inkwell)使用中
- ビルド時間が5-7分と長い
- コード量2,500行
革新的提案:
1. C++で薄いLLVMラッパー作成(20-30関数程度)
2. NyashからExternCallで呼び出し
3. LLVMコンパイラ全体をNyashで実装(100-200行!)
質問:
1. 技術的に実現可能か?パフォーマンスは?
2. Rustと比較した利点・欠点は?
3. デバッグ・保守性はどうなる?
4. セルフホスティングへの最適な道筋は?
Geminiの回答(要約)
🎯 技術的実現可能性
結論:実現可能
- C++薄いラッパー + NyashのExternCall経由でのアプローチは技術的に確実に実現可能
- ビルド時間革命:5-7分 → 即座の変更反映(最大のメリット)
- セルフホスティング深化:真の「NyashがNyashをコンパイルする」に大きく前進
⚖️ パフォーマンストレードオフ
利点:
- 開発サイクルの劇的高速化(再ビルド不要)
- コードの劇的簡潔化(2,500行 → 100-200行)
- "Everything is Box"哲学の究極的体現
欠点:
- Nyashプログラムのコンパイル時間は増加
- FFI境界の複雑さ(デバッグの難しさ)
- 機能制限(C++ラッパーで公開した機能のみ)
🛣️ 推奨アプローチ(段階的実装)
- PoC: 最小限(
fn main() { return 42; })から開始 - FFI設計: JSON スキーマとエラー伝達の確立
- 段階的拡張: 一つずつ言語機能を追加
- 比較検証: 既存Rust実装との等価性テスト
💡 Geminiの洞察
- 開発体験の革命的改善が期待できる
- Phase 15の80k→20k行圧縮目標に完璧にマッチ
- セルフホスティングへの最適な道筋
- PoCから始めることを強く推奨
- 現在のLLVMバックエンドが安定している今が、この革新的アプローチに挑戦する絶好のタイミング
重要なポイント
なぜGeminiは「Rust最高」と言ったか
- 安全性がNyashの哲学に合致: Everything is Boxは安全な抽象化
- エラー処理の統一性: Result<T,E>でパニックを防ぐ
- 将来のセルフホスティング: NyashでRustっぽいコードが書ける
しかし、ユーザーの洞察は正しい
「MIR解釈して出力するだけなのに、メモリーリークの心配なんてあるんだろうか?」 → 短命なバッチ処理にRustの複雑さは確かに過剰! Status: Historical