- AI大会議(Gemini/Codex)でLLVM実装戦略を策定
- inkwellクレート使用、Box型はptr型で表現、ランタイム委譲戦略
- Week 1: Hello World(return 42)の実装から開始
- 3週間で基本動作確認、目標10倍以上の性能向上
- Copilot用の詳細な実装ガイドとIssueテンプレート作成
Phase 8.6 VM性能改善(50.94倍高速化)完了を受けて、
次なる性能革命としてLLVMバックエンド実装を開始!
🚀 Ready to make Nyash fly with LLVM!
134 lines
2.6 KiB
Markdown
134 lines
2.6 KiB
Markdown
# 🚀 LLVM実装クイックスタートガイド
|
||
|
||
## 📋 今すぐ始める手順
|
||
|
||
### 1. **環境準備**(5分)
|
||
```bash
|
||
# LLVM 17インストール確認
|
||
llvm-config --version # 17.x.x が表示されること
|
||
|
||
# Nyashプロジェクトで作業
|
||
cd /path/to/nyash
|
||
git checkout -b feature/llvm-poc
|
||
```
|
||
|
||
### 2. **最初のコミット**(10分)
|
||
```bash
|
||
# Cargo.tomlを編集
|
||
echo '[dependencies]
|
||
inkwell = { version = "0.5", features = ["llvm17-0"] }
|
||
|
||
[features]
|
||
llvm = ["inkwell"]' >> Cargo.toml
|
||
|
||
# ディレクトリ作成
|
||
mkdir -p src/backend/llvm
|
||
|
||
# 最初のファイル作成
|
||
touch src/backend/llvm/mod.rs
|
||
touch src/backend/llvm/context.rs
|
||
touch src/backend/llvm/compiler.rs
|
||
|
||
# コミット
|
||
git add .
|
||
git commit -m "feat(llvm): Add inkwell dependency and basic structure"
|
||
```
|
||
|
||
### 3. **最小実装のコピペ**(20分)
|
||
|
||
**src/backend/llvm/mod.rs**:
|
||
```rust
|
||
pub mod context;
|
||
pub mod compiler;
|
||
|
||
pub use compiler::compile_to_object;
|
||
```
|
||
|
||
**動作確認**:
|
||
```bash
|
||
cargo build --features llvm
|
||
```
|
||
|
||
### 4. **テストプログラム作成**(5分)
|
||
```bash
|
||
# テスト用Nyashファイル
|
||
cat > test_return_42.nyash << 'EOF'
|
||
static box Main {
|
||
main() {
|
||
return 42
|
||
}
|
||
}
|
||
EOF
|
||
```
|
||
|
||
## 🔍 詰まったときの確認ポイント
|
||
|
||
### **ビルドエラーの場合**
|
||
```bash
|
||
# LLVM関連の環境変数確認
|
||
echo $LLVM_SYS_170_PREFIX
|
||
|
||
# 設定されていない場合
|
||
export LLVM_SYS_170_PREFIX=$(llvm-config --prefix)
|
||
```
|
||
|
||
### **inkwellのバージョン問題**
|
||
```toml
|
||
# 代替バージョン
|
||
inkwell = { git = "https://github.com/TheDan64/inkwell", branch = "master", features = ["llvm17-0"] }
|
||
```
|
||
|
||
### **リンクエラーの場合**
|
||
```bash
|
||
# pkg-configの確認
|
||
pkg-config --libs --cflags llvm
|
||
```
|
||
|
||
## 📞 ヘルプが必要な場合
|
||
|
||
1. **GitHub Issue**にコメント
|
||
2. **具体的なエラーメッセージ**を貼る
|
||
3. **実行したコマンド**を記載
|
||
|
||
例:
|
||
```
|
||
inkwellのビルドでエラーが発生しました。
|
||
|
||
エラー:
|
||
```
|
||
error: failed to run custom build command for `llvm-sys v170.0.1`
|
||
```
|
||
|
||
実行コマンド:
|
||
```
|
||
cargo build --features llvm
|
||
```
|
||
|
||
環境:
|
||
- OS: Ubuntu 22.04
|
||
- LLVM: 17.0.6
|
||
- Rust: 1.75.0
|
||
```
|
||
|
||
## ✅ 最初の成功確認
|
||
|
||
以下が動けば第一歩成功!
|
||
```bash
|
||
# ビルドが通る
|
||
cargo build --features llvm
|
||
|
||
# テストが実行できる(まだ失敗してOK)
|
||
cargo test --features llvm test_llvm
|
||
```
|
||
|
||
## 🎯 次のステップ
|
||
|
||
1. **context.rs**の実装
|
||
2. **compiler.rs**の実装
|
||
3. **return 42**の動作確認
|
||
|
||
詳細は[001-setup-inkwell-hello-world.md](./001-setup-inkwell-hello-world.md)を参照!
|
||
|
||
---
|
||
|
||
**Remember**: 完璧より進捗!最初は動くことが最優先です。🚀 |