# 🚨 WASM/AOT WASM 現在の問題・制限事項

## 📅 最終更新: 2025-08-15

## 🔴 **緊急度: 高**

### 1. **BoxCall命令未実装**
**問題**: `toString()`, `print()` 等のBox メソッド呼び出しがWASMで未対応

**エラー例**:
```bash
❌ WASM compilation error: Unsupported instruction: BoxCall { 
    dst: Some(ValueId(6)), 
    box_val: ValueId(4), 
    method: "toString", 
    args: [], 
    effects: EffectMask(16) 
}
```

**影響範囲**:
- 基本的なBox操作（toString, print等）が全て使用不可
- 実用的なNyashプログラムがWASMでコンパイル不可

**修正必要ファイル**:
- `src/backend/wasm/codegen.rs`: BoxCall命令の実装

---

### 2. **wasmtimeバージョン互換性問題**
**問題**: コンパイル時wasmtimeとシステムwasmtimeのバージョン不一致

**エラー例**:
```bash
Error: Module was compiled with incompatible Wasmtime version '18.0.4'
System wasmtime: 35.0.0
```

**原因**:
```toml
# Cargo.toml
wasmtime = "18.0"      # コンパイル時

# システム
wasmtime 35.0.0        # 実行時
```

**影響**:
- AOT (.cwasm) ファイルが実行不可
- 配布用実行ファイル生成失敗

**修正策**:
1. **短期**: Cargo.tomlのwasmtimeバージョン更新
2. **長期**: 互換性保証メカニズム実装

---

### 3. **WASM出力バイナリエラー**
**問題**: WAT → WASM変換でUTF-8エラー発生

**エラー例**:
```bash
❌ Generated WASM is not valid UTF-8
```

**推測原因**:
- WAT形式の生成に問題
- wabt crateとの連携ミス

**修正必要箇所**:
- `src/backend/wasm/codegen.rs`: WAT生成ロジック
- WASM バイナリ出力パイプライン

---

## 🟠 **緊急度: 中**

### 4. **RuntimeImports未実装機能**
**問題**: WASMで必要なランタイム関数が部分実装

**未実装機能**:
- Box メモリ管理 (malloc, free)
- 型キャスト・変換
- 配列・Map操作
- 例外ハンドリング

**ファイル**: `src/backend/wasm/runtime.rs`

---

### 5. **メモリ管理最適化不足**
**問題**: WASMメモリレイアウトが非効率

**課題**:
- Box ヘッダーサイズ固定 (12 bytes)
- ガベージコレクション未実装
- メモリ断片化対策なし

**ファイル**: `src/backend/wasm/memory.rs`

---

## 🟡 **緊急度: 低**

### 6. **デバッグ情報不足**
**問題**: WASM実行時のエラー情報が不十分

**改善点**:
- ソースマップ生成
- スタックトレース詳細化
- ブレークポイント対応

---

### 7. **最適化機能未実装**
**問題**: WASM出力が最適化されていない

**未実装最適化**:
- デッドコード除去
- インライン展開
- 定数畳み込み

---

## 📊 **問題優先度マトリクス**

| 問題 | 緊急度 | 重要度 | 修正工数 | 優先順位 |
|------|--------|--------|----------|----------|
| BoxCall未実装 | 高 | 高 | 中 | **1** |
| wasmtimeバージョン | 高 | 高 | 低 | **2** |
| WASM出力エラー | 高 | 中 | 中 | **3** |
| RuntimeImports | 中 | 高 | 高 | **4** |
| メモリ管理 | 中 | 中 | 高 | **5** |
| デバッグ情報 | 低 | 中 | 中 | **6** |
| 最適化 | 低 | 低 | 高 | **7** |

## 🎯 **修正ロードマップ**

### Phase 1: 基本機能復旧 (1週間)
1. **BoxCall命令実装**
2. **wasmtimeバージョン統一**
3. **WASM出力エラー修正**

### Phase 2: 機能拡充 (2週間)
4. **RuntimeImports完全実装**
5. **メモリ管理改善**

### Phase 3: 品質向上 (1週間)
6. **デバッグ情報強化**
7. **基本最適化実装**

## 📝 **テスト必要項目**

### 基本動作テスト
```bash
# BoxCall テスト
./target/release/hakorune --compile-wasm test_boxcall.hako

# AOT テスト  
./target/release/hakorune --aot test_simple.hako
wasmtime --allow-precompiled test_simple.cwasm
```

### 互換性テスト
```bash
# バージョン確認
cargo tree | grep wasmtime
wasmtime --version

# 実行テスト
wasmtime test_output.wasm
```

---

**🎯 目標**: Phase 1完了でWASM基本機能復旧、Nyash WASMが実用レベルに到達