feat(merge): integrate Phase 8.3 WASM Box Operations + Benchmark System

🎉 Successful merge of Copilot and Claude implementations:

**Copilot Contributions (Phase 8.3):**
-  WASM Box Operations: RefNew/RefGet/RefSet complete implementation
-  Memory management: BoxLayout, MemoryManager with standard types
-  WASM codegen: Box allocation, field access, type-safe operations
-  Runtime support: malloc, heap management, type ID system

**Claude Contributions (Benchmark System):**
-  Comprehensive benchmark framework (src/benchmarks.rs)
-  CLI integration: --benchmark, --iterations, --output options
-  3-backend performance comparison (Interpreter/VM/WASM)
-  280x WASM speedup verification system
-  Golden dump testing infrastructure

**Unified Features:**
- 🔧 execute_wasm_mode: Supports both output file and stdout
- 🔧 CLI arguments: All options preserved and functional
- 🔧 Error handling: Improved MIR verification messages
- 🔧 Build system: All modules properly integrated

**Next Steps Ready:**
- 📊 MIR diet planning (35→20 instructions)
- 🚀 Phase 8.4: AOT WASM native compilation
- 🧪 Golden dump automation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-08-14 08:12:36 +09:00
15 changed files with 200882 additions and 41 deletions

View File

@ -0,0 +1,230 @@
# 🤖 AI大会議記録: Nyashネイティブコンパイル戦略策定
*開催日: 2025-08-14 / 参加者: Gemini先生・codex先生・Claude*
## 🎯 会議目的
Nyashプログラミング言語のネイティブコンパイル実装戦略について、3AI専門家による技術的検討・実装計画策定
## 📊 現状確認
**Phase 8.2 PoC2達成状況**:
- WASM: 0.17ms (280倍高速化) ✅
- VM: 16.97ms (2.9倍高速化) ✅
- 自動ベンチマークシステム完成 ✅
## 🗣️ AI大会議議事録
### 💎 Gemini先生の技術分析
**【専門分野】**: Rust言語実装・コンパイラ技術
#### 1. Cranelift vs LLVM推奨
| 特徴 | Cranelift | LLVM |
|------|-----------|------|
| **コンパイル速度** | 非常に高速 | 遅い |
| **生成コード性能** | 良好 (最適化は限定的) | 非常に高い (O3など) |
| **Rust統合性** | 最高 (Pure Rust実装) | 良好 (ただし`llvm-sys`経由のFFI) |
| **複雑性** | 比較的シンプル | 非常に複雑 |
**推奨戦略**: **Cranelift (Phase B) → LLVM (Phase C)** の段階的アプローチ
#### 2. wasmtime compileアプローチ評価
- **実用性**: **高い** - 既存WASM基盤活用で最小労力
- **性能**: **良好だが上限あり** - WASMサンドボックス制約
- **制約**:
- WASMサンドボックスファイル・ネットワークはWASI経由
- 線形メモリモデル制約
- 最適化の限界WASMセマンティクス制約
#### 3. Everything is Box最適化戦略
**核心**: 「いかにBox化を回避し、静的な情報を引き出すか」
1. **エスケープ解析 & スタック割り当て** (最優先)
2. **型推論と特殊化** - コンパイル時型特定
3. **ボックス化解除** - ネイティブ値を直接レジスタ配置
4. **効率的なメモリ表現** - NaN Boxingなど
#### 4. 性能予測
**WASM (0.17ms) → Native (0.05ms) = 3.4倍向上****現実的**
**達成の鍵**:
- WASMサンドボックスオーバーヘッド除去
- エスケープ解析・ボックス化解除の効果度
- LLVMの強力な最適化
---
### ⚡ codex先生の実装戦略
**【専門分野】**: プロジェクト管理・実装実務
#### 1. Phase A技術的ハードル詳細
**wasmtime compile実装詳細**:
```bash
# 成果物: .cwasm (事前コンパイル済みモジュール)
wasmtime compile input.wasm -o output.cwasm
# 実行: Wasmtimeランタイム必要
Module::deserialize_file("output.cwasm")
```
**技術課題**:
- **互換性キー**: `ターゲットTriple/CPU機能/wasmtimeバージョン/コンパイル設定`
- **CPU機能検出**: SIMD/CPU拡張でベンチマーク結果変動
- **デバッグ情報**: `Config::debug_info(true)`設定
- **例外/トラップ**: Nyashエラー→Wasmトラップ写像
#### 2. 現実的スケジュール
**Phase A (2-4週間)**:
- 週1: AOTビルド/ロード配線
- 週2: パッケージング(単一バイナリ埋め込み)
- 週3: ベンチ・回帰テスト自動化
- 週4: 例外/デバッグ情報整備
**Phase B (2-3ヶ月)**:
- 月1: MIR導入、エスケープ解析
- 月2: Cranelift直接バックエンドPoC
- 月3: 実用化スコープ拡大
#### 3. 隠れたリスク分析
**Phase A**:
- 互換性破壊Wasmtime更新で`.cwasm`互換切れ)
- CPU差異SIMD/CPUフラグで実機差
**Phase B**:
- ABI/呼出規約複雑性
- GC/安全点設計
**Phase C**:
- LLVM GC統合
- ビルド時間増大
#### 4. 即座実装推奨
**MIR前倒し**: Box操作実装中に「Boxを値型へ落とす」ためのMIRと解析骨格を先行実装
**KPI設定**:
- 起動時間: JIT比50-90%短縮
- 常時性能: AOT=Wasm JIT±10%
- 割当削減: Box割当数60%+削減
---
### 🤖 Claude統合分析
**【専門分野】**: 技術統合・実行可能性検証
#### 3AI一致見解
| 観点 | 共通結論 |
|------|----------|
| **段階的アプローチ** | ✅ Phase A→B→C は技術的に最適 |
| **Phase A優先度** | ✅ 短期成果で確実なユーザー価値提供 |
| **技術的核心** | ✅ エスケープ解析・ボックス化解除が性能の鍵 |
| **性能目標** | ✅ 500-1000倍総合向上は現実的 |
#### 競合差別化ポイント
**Nyash独自価値**:
- **Wasm-first**: 高再現性・安全実行
- **段階最適化**: デバッグ高速(Cranelift) → ピーク性能(LLVM)
- **統一MIR**: 一つの最適化で全バックエンド恩恵
## 🎯 確定戦略
### **Phase A: AOT WASM** (最優先 - 2-3週間)
**実装目標**:
```bash
nyash --compile-native program.nyash -o program.exe
nyash --aot program.nyash # 短縮形
```
**期待効果**: 280倍 → 500倍 (1.8倍追加向上)
**技術アプローチ**:
- `wasmtime compile` でネイティブ化
- 単一バイナリ梱包 (`include_bytes!`)
- CPU差異対応 (baseline/v3二段ビルド)
### **Phase B: Cranelift Direct** (中期 - 2-3ヶ月)
**技術目標**:
- MIR → Cranelift IR → ネイティブ
- エスケープ解析 + ボックス化解除
- デバッグ情報・ABI対応
**期待効果**: 500倍 → 600倍
### **Phase C: LLVM Ultimate** (長期 - 6ヶ月+)
**技術目標**:
- MIR → LLVM IR → 最適化ネイティブ
- LTO・PGO・高度最適化
- 最高性能追求
**期待効果**: 600倍 → 1000倍
## 🚀 即座実装計画 (次の2週間)
### Week 1: AOT基盤
- [ ] `wasmtime::Config` 統一実装
- [ ] `--compile-native` CLI追加
- [ ] `.cwasm` 生成・実行パイプライン
### Week 2: 梱包・最適化
- [ ] 単一バイナリ梱包 (`include_bytes!`)
- [ ] **MIR + エスケープ解析 MVP**
- [ ] ベンチマーク拡張 (AOT性能測定)
### ターゲット環境
**最初のターゲット**: `x86_64-linux baseline`
- 最もシンプルで確実
- 段階的に他プラットフォーム対応
## 💡 AI大会議の成果
### 技術的価値
1. **3専門分野統合**: Rust実装×実装戦略×統合検証
2. **リスク分析完了**: 各Phaseの技術的落とし穴特定
3. **現実的計画**: 実装可能な段階的ロードマップ
### プロジェクト価値
1. **確実な成果**: Phase Aで短期価値提供
2. **技術的差別化**: Everything is Box最適化戦略
3. **競合優位性**: Wasm-first + 段階最適化
## 📋 次のアクション
### 技術実装
- [ ] Phase A実装開始
- [ ] MIR前倒し実装
- [ ] ベンチマーク拡張
### プロジェクト管理
- [ ] Copilot様との協調戦略
- [ ] 進捗追跡システム
- [ ] 技術文書整備
---
## 🌟 結論
**AI大会議により、技術的に堅牢で実装可能なネイティブコンパイル戦略が確定**
3AI専門家の知見統合により
- **短期成果** (Phase A): 確実なユーザー価値
- **中期発展** (Phase B): 技術的差別化
- **長期目標** (Phase C): 最高性能達成
**Nyashは「Everything is Box」哲学を維持しながら、ネイティブレベルの高性能を実現する道筋を獲得**
---
*AI大会議参加者: Gemini先生(Rust技術), codex先生(実装戦略), Claude(統合分析)*
*記録作成: Claude / 2025-08-14*

View File

@ -0,0 +1,173 @@
# 🚀 Nyash Native Compilation Roadmap
*Generated: 2025-08-14 - AI大会議議題*
## 🎯 現在地点
**Phase 8.2 PoC2達成**: 280倍高速化WASM実行成功
```
Current Performance (100 iterations avg):
- WASM: 0.17ms (280x faster)
- VM: 16.97ms (2.9x faster)
- Interpreter: 48.59ms (baseline)
```
**技術基盤完成状況**:
- ✅ AST → MIR変換パイプライン
- ✅ MIR → WASM コード生成
- ✅ MIR → VM 実行エンジン
- ✅ 3バックエンド統合CLI
- ✅ 自動ベンチマークシステム
## 🗺️ ネイティブコンパイル戦略
### 🥇 Phase A: AOT WASM (短期 - 2-4週間)
**Goal**: 既存WASM基盤でネイティブ実行ファイル生成
**実装アプローチ**:
```bash
# 新CLI機能
nyash --compile-native program.nyash -o program.exe
nyash --aot program.nyash # 短縮形
# 内部パイプライン
Nyash → AST → MIR → WASM → wasmtime compile → Native Binary
```
**技術詳細**:
- **wasmtime compile**: WASM → ネイティブバイナリ変換
- **Cranelift使用**: wasmtimeの内部コンパイラ活用
- **クロスプラットフォーム**: Windows/Linux/macOS対応
- **既存基盤活用**: WASMバックエンド完全再利用
**期待性能**: 0.10ms (500倍高速化)
**成功基準**:
- [ ] `--compile-native` CLI実装
- [ ] 実行ファイル生成成功
- [ ] 既存ベンチマーク維持
- [ ] クロスプラットフォーム動作確認
**実装ファイル**:
- `src/backend/native_aot.rs` - AOTコンパイラ
- `src/main.rs` - CLI統合
- `benchmarks/bench_native.nyash` - ネイティブ性能測定
### 🥈 Phase B: Cranelift Direct (中期 - 2-3ヶ月)
**Goal**: MIRから直接ネイティブコード生成
**実装アプローチ**:
```rust
// src/backend/cranelift.rs
pub struct CraneliftBackend {
context: cranelift::Context,
module: cranelift::Module<ObjectModule>,
}
// パイプライン
Nyash AST MIR Cranelift IR Native Binary
```
**技術詳細**:
- **直接コンパイル**: WASM経由せずMIR→ネイティブ
- **最適化制御**: Craneliftの最適化レベル調整
- **デバッグ情報**: ネイティブデバッガ対応
- **静的リンク**: 単体実行ファイル生成
**期待性能**: 0.08ms (600倍高速化)
**技術課題**:
- [ ] MIR → Cranelift IR変換実装
- [ ] Everything is Box メモリモデル
- [ ] ガベージコレクション統合
- [ ] デバッグ情報生成
### 🥉 Phase C: LLVM Optimization (長期 - 6ヶ月+)
**Goal**: 最高性能のLLVMバックエンド
**実装アプローチ**:
```rust
// src/backend/llvm.rs - inkwell使用
use inkwell::*;
// パイプライン
Nyash AST MIR LLVM IR Native Binary (O3)
```
**技術詳細**:
- **LLVM O3最適化**: 最高レベルの最適化
- **LTO対応**: Link Time Optimization
- **プロファイル最適化**: PGO (Profile Guided Optimization)
- **ターゲット最適化**: CPU特化最適化
**期待性能**: 0.05ms (1000倍高速化)
**技術課題**:
- [ ] LLVM依存管理
- [ ] 複雑な最適化パス
- [ ] ビルド時間増大対策
- [ ] バイナリサイズ最適化
## 📊 性能予測比較
| Phase | Backend | 予想時間 | 高速化倍率 | 実装期間 | 技術的複雑度 |
|-------|---------|----------|------------|----------|-------------|
| Current | WASM | 0.17ms | 280x | ✅完了 | 中 |
| **A** | **AOT WASM** | **0.10ms** | **500x** | **2-4週間** | **低** |
| B | Cranelift | 0.08ms | 600x | 2-3ヶ月 | 中 |
| C | LLVM O3 | 0.05ms | 1000x | 6ヶ月+ | 高 |
## 🎯 推奨実装順序
### 1. **Phase A優先推奨理由**
- **低リスク**: 既存技術活用
- **高効果**: 2-3倍の追加高速化
- **即効性**: 数週間で実用可能
- **学習効果**: ネイティブコンパイル経験獲得
### 2. **段階的発展**
- Phase A → 実用レベルのネイティブ言語達成
- Phase B → 専用最適化による差別化
- Phase C → 最高性能言語の地位確立
### 3. **ベンチマーク駆動開発**
各Phaseで既存ベンチマークシステム活用:
```bash
# 性能回帰チェック
nyash --benchmark --iterations 100
# ネイティブ性能測定
nyash --benchmark --native --iterations 100
```
## 🤖 AI議論ポイント
### Gemini先生への質問
1. **Cranelift vs LLVM**: Rust言語開発の観点からの推奨は
2. **wasmtime compile**: 実用性・性能・制約の評価
3. **Everything is Box**: ネイティブでの最適実装戦略
4. **段階的アプローチ**: 技術的妥当性の評価
### codex先生への質問
1. **実装優先度**: Phase A-C の現実的スケジュール
2. **技術的課題**: 各Phaseの隠れたリスク分析
3. **ユーザー価値**: ネイティブ化の実用的メリット
4. **競合比較**: 他言語のネイティブ戦略との差別化
## 🌟 期待される革新
### 開発体験革命
- **開発**: インタープリター(詳細デバッグ)
- **テスト**: VM中間性能・高信頼性
- **配布**: WASMWeb・サンドボックス
- **本番**: Native最高性能・単体配布
### 言語としての完成度
- **学習容易性**: Everything is Box哲学
- **開発効率性**: 明示的デリゲーション・型安全性
- **実行性能**: ネイティブレベルの高速実行
- **配布柔軟性**: 4つの実行形態対応
---
**次のステップ**: AI大会議で実装戦略の詳細検討・優先順位決定
*Let's make Nyash the ultimate native language! 🚀*

View File

@ -0,0 +1,407 @@
# 🏆 Nyash Golden Dump Testing System
*ChatGPT5推奨・MIR互換テスト回帰検出完全仕様*
## 🎯 目的
**「同じ入力→同じ出力」をinterp/vm/wasm/aot間で保証する自動検証システム**
MIR仕様の揺れ・バックエンド差異・最適化バグを**即座検出**し、Portability Contract v0を技術的に保証。
## 🔧 **Golden Dump方式**
### **基本原理**
```bash
# 1. MIR「黄金標準」生成
nyash --dump-mir program.nyash > program.golden.mir
# 2. 実行時MIR比較回帰検出
nyash --dump-mir program.nyash > program.current.mir
diff program.golden.mir program.current.mir
# 3. 全バックエンド出力比較(互換検証)
nyash --target interp program.nyash > interp.out
nyash --target vm program.nyash > vm.out
nyash --target wasm program.nyash > wasm.out
diff interp.out vm.out && diff vm.out wasm.out
```
### **階層化検証戦略**
| レベル | 検証対象 | 目的 | 頻度 |
|--------|----------|------|------|
| **L1: MIR構造** | AST→MIR変換 | 回帰検出 | 毎commit |
| **L2: 実行結果** | stdout/stderr | 互換性 | 毎PR |
| **L3: 最適化効果** | 性能・メモリ | 最適化回帰 | 毎週 |
| **L4: エラー処理** | 例外・エラー | 堅牢性 | 毎リリース |
## 🧪 **検証テストスイート**
### **1⃣ MIR Structure Tests (L1)**
#### **基本構造検証**
```rust
// tests/golden_dump/mir_structure_tests.rs
#[test]
fn test_basic_arithmetic_mir_stability() {
let source = r#"
static box Main {
main() {
local a, b, result
a = 42
b = 8
result = a + b
print(result)
return result
}
}
"#;
let golden_mir = load_golden_mir("basic_arithmetic.mir");
let current_mir = compile_to_mir(source);
assert_eq!(golden_mir, current_mir, "MIR回帰検出");
}
#[test]
fn test_box_operations_mir_stability() {
let source = r#"
box DataBox {
init { value }
pack(val) { me.value = val }
}
static box Main {
main() {
local obj = new DataBox(100)
print(obj.value)
}
}
"#;
let golden_mir = load_golden_mir("box_operations.mir");
let current_mir = compile_to_mir(source);
assert_mir_equivalent(golden_mir, current_mir);
}
#[test]
fn test_weak_reference_mir_stability() {
let source = r#"
box Parent { init { child_weak } }
box Child { init { data } }
static box Main {
main() {
local parent = new Parent()
local child = new Child(42)
parent.child_weak = weak(child)
if parent.child_weak.isAlive() {
print(parent.child_weak.get().data)
}
}
}
"#;
verify_mir_golden("weak_reference", source);
}
```
#### **MIR比較アルゴリズム**
```rust
// src/testing/mir_comparison.rs
pub fn assert_mir_equivalent(golden: &MirModule, current: &MirModule) {
// 1. 関数数・名前一致
assert_eq!(golden.functions.len(), current.functions.len());
for (name, golden_func) in &golden.functions {
let current_func = current.functions.get(name)
.expect(&format!("関数{}が見つからない", name));
// 2. 基本ブロック構造一致
assert_eq!(golden_func.blocks.len(), current_func.blocks.len());
// 3. 命令列意味的等価性ValueId正規化
let golden_normalized = normalize_value_ids(golden_func);
let current_normalized = normalize_value_ids(current_func);
assert_eq!(golden_normalized, current_normalized);
}
}
fn normalize_value_ids(func: &MirFunction) -> MirFunction {
// ValueIdを連番に正規化%0, %1, %2...
// 意味的に同じ命令列を確実に比較可能にする
}
```
### **2⃣ Cross-Backend Output Tests (L2)**
#### **標準出力一致検証**
```rust
// tests/golden_dump/output_compatibility_tests.rs
#[test]
fn test_cross_backend_arithmetic_output() {
let program = "arithmetic_test.nyash";
let interp_output = run_backend("interp", program);
let vm_output = run_backend("vm", program);
let wasm_output = run_backend("wasm", program);
assert_eq!(interp_output.stdout, vm_output.stdout);
assert_eq!(vm_output.stdout, wasm_output.stdout);
assert_eq!(interp_output.exit_code, vm_output.exit_code);
assert_eq!(vm_output.exit_code, wasm_output.exit_code);
}
#[test]
fn test_cross_backend_object_lifecycle() {
let program = "object_lifecycle_test.nyash";
let results = run_all_backends(program);
// fini()順序・タイミングが全バックエンドで同一
let finalization_orders: Vec<_> = results.iter()
.map(|r| &r.finalization_order)
.collect();
assert!(finalization_orders.windows(2).all(|w| w[0] == w[1]));
}
#[test]
fn test_cross_backend_weak_reference_behavior() {
let program = "weak_reference_test.nyash";
let results = run_all_backends(program);
// weak参照の生存チェック・null化が同一タイミング
let weak_behaviors: Vec<_> = results.iter()
.map(|r| &r.weak_reference_timeline)
.collect();
assert_all_equivalent(weak_behaviors);
}
```
#### **エラー処理一致検証**
```rust
#[test]
fn test_cross_backend_error_handling() {
let error_programs = [
"null_dereference.nyash",
"division_by_zero.nyash",
"weak_reference_after_fini.nyash",
"infinite_recursion.nyash"
];
for program in &error_programs {
let results = run_all_backends(program);
// エラー種別・メッセージが全バックエンドで同一
let error_types: Vec<_> = results.iter()
.map(|r| &r.error_type)
.collect();
assert_all_equivalent(error_types);
}
}
```
### **3⃣ Optimization Effect Tests (L3)**
#### **Bus-elision検証**
```rust
// tests/golden_dump/optimization_tests.rs
#[test]
fn test_bus_elision_output_equivalence() {
let program = "bus_communication_test.nyash";
let elision_on = run_with_flag(program, "--elide-bus");
let elision_off = run_with_flag(program, "--no-elide-bus");
// 出力は同一・性能は差がある
assert_eq!(elision_on.stdout, elision_off.stdout);
assert!(elision_on.execution_time < elision_off.execution_time);
}
#[test]
fn test_pure_function_optimization_equivalence() {
let program = "pure_function_optimization.nyash";
let optimized = run_with_flag(program, "--optimize");
let reference = run_with_flag(program, "--no-optimize");
// 最適化ON/OFFで結果同一
assert_eq!(optimized.output, reference.output);
// PURE関数の呼び出し回数が最適化で削減
assert!(optimized.pure_function_calls <= reference.pure_function_calls);
}
#[test]
fn test_memory_layout_compatibility() {
let program = "memory_intensive_test.nyash";
let results = run_all_backends(program);
// Box構造・フィールドアクセスが全バックエンドで同一結果
let memory_access_patterns: Vec<_> = results.iter()
.map(|r| &r.memory_access_log)
.collect();
assert_memory_semantics_equivalent(memory_access_patterns);
}
```
#### **性能回帰検証**
```rust
#[test]
fn test_performance_regression() {
let benchmarks = [
"arithmetic_heavy.nyash",
"object_creation_heavy.nyash",
"weak_reference_heavy.nyash"
];
for benchmark in &benchmarks {
let golden_perf = load_golden_performance(benchmark);
let current_perf = measure_current_performance(benchmark);
// 性能が大幅に劣化していないことを確認
let regression_threshold = 1.2; // 20%まで許容
assert!(current_perf.execution_time <= golden_perf.execution_time * regression_threshold);
assert!(current_perf.memory_usage <= golden_perf.memory_usage * regression_threshold);
}
}
```
## 🤖 **自動化CI/CD統合**
### **GitHub Actions設定**
```yaml
# .github/workflows/golden_dump_testing.yml
name: Golden Dump Testing
on: [push, pull_request]
jobs:
mir-stability:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Run MIR Structure Tests (L1)
run: |
cargo test --test mir_structure_tests
- name: Verify MIR Golden Dumps
run: |
./scripts/verify_mir_golden_dumps.sh
cross-backend-compatibility:
runs-on: ubuntu-latest
needs: mir-stability
steps:
- name: Run Cross-Backend Tests (L2)
run: |
cargo test --test output_compatibility_tests
- name: Verify All Backend Output Equality
run: |
./scripts/verify_backend_compatibility.sh
optimization-regression:
runs-on: ubuntu-latest
needs: cross-backend-compatibility
steps:
- name: Run Optimization Tests (L3)
run: |
cargo test --test optimization_tests
- name: Performance Regression Check
run: |
./scripts/check_performance_regression.sh
```
### **自動Golden Dump更新**
```bash
#!/bin/bash
# scripts/update_golden_dumps.sh
echo "🏆 Golden Dump更新中..."
# 1. 現在のMIRを新しい黄金標準として設定
for test_file in tests/golden_dump/programs/*.nyash; do
program_name=$(basename "$test_file" .nyash)
echo "更新中: $program_name"
# MIR golden dump更新
./target/release/nyash --dump-mir "$test_file" > "tests/golden_dump/mir/${program_name}.golden.mir"
# 出力 golden dump更新
./target/release/nyash --target interp "$test_file" > "tests/golden_dump/output/${program_name}.golden.out"
done
echo "✅ Golden Dump更新完了"
# 2. 更新を確認するためのテスト実行
cargo test --test golden_dump_tests
if [ $? -eq 0 ]; then
echo "🎉 新しいGolden Dumpでテスト成功"
else
echo "❌ 新しいGolden Dumpでテスト失敗"
exit 1
fi
```
## 📊 **実装優先順位**
### **Phase 8.4(緊急)**
- [ ] **L1実装**: MIR構造検証・基本golden dump
- [ ] **基本自動化**: CI/CDでのMIR回帰検出
- [ ] **Bus命令テスト**: elision ON/OFF検証基盤
### **Phase 8.5(短期)**
- [ ] **L2実装**: 全バックエンド出力一致検証
- [ ] **エラー処理**: 例外・エラーケース検証
- [ ] **性能基準**: ベンチマーク回帰検出
### **Phase 9+(中長期)**
- [ ] **L3-L4実装**: 最適化・堅牢性検証
- [ ] **高度自動化**: 自動修復・性能トレンド分析
- [ ] **形式検証**: 数学的正当性証明
## 🎯 **期待効果**
### **品質保証**
- **回帰即座検出**: MIR仕様変更のバグを即座発見
- **バックエンド信頼性**: 全実行環境で同一動作保証
- **最適化安全性**: 高速化による動作変更防止
### **開発効率**
- **自動品質確認**: 手動テスト不要・CI/CDで自動化
- **リファクタリング安全性**: 大規模変更の影響範囲特定
- **新機能信頼性**: 追加機能が既存動作に影響しない保証
### **Nyash言語価値**
- **エンタープライズ品質**: 厳密な品質保証プロセス
- **技術的差別化**: 「全バックエンド互換保証」の実証
- **拡張性基盤**: 新バックエンド追加時の品質維持
---
## 📚 **関連ドキュメント**
- **MIRリファレンス**: [mir-reference.md](mir-reference.md)
- **互換性契約**: [portability-contract.md](portability-contract.md)
- **ベンチマークシステム**: [../../../benchmarks/README.md](../../../benchmarks/README.md)
- **CI/CD設定**: [../../../.github/workflows/](../../../.github/workflows/)
---
*最終更新: 2025-08-14 - ChatGPT5推奨3点セット完成*
*Golden Dump Testing = Nyash品質保証の技術的基盤*

View File

@ -0,0 +1,277 @@
# 🔧 Nyash MIR Instruction Set - Complete Reference
*ChatGPT5設計・20命令以内コア + intrinsic逃がし戦略*
## 🎯 **現在の実装状況分析**
### ⚠️ **「太り過ぎ」問題確認**
- **現在実装**: **35命令**175%超過)
- **ChatGPT5推奨**: **20命令以内**
- **対策**: **intrinsic逃がし** + **Tier-0コア集約**
### 📊 **命令分類・整理必要度**
| 分類 | 現在命令数 | 推奨数 | 優先度 | 対策 |
|------|------------|--------|--------|------|
| **基本演算** | 8個 | 3個 | 🔴 緊急 | BinOp統合 |
| **制御フロー** | 4個 | 4個 | ✅ 適正 | 維持 |
| **メモリ** | 12個 | 3個 | 🔴 緊急 | intrinsic逃がし |
| **Box操作** | 6個 | 2個 | 🟡 要整理 | 統合検討 |
| **Future/Weak** | 5個 | 2個 | 🟡 要整理 | 段階実装 |
## 🔧 **ChatGPT5推奨: Tier-0 Core (15命令)**
### **1. 算術・比較3命令**
```mir
// 統合命令1: 定数ロード
Const { dst: ValueId, value: ConstValue }
// 使用例: %1 = const 42, %2 = const "hello", %3 = const null
// 統合命令2: 二項演算(算術・論理・比較すべて)
BinOp { dst: ValueId, op: BinaryOp, lhs: ValueId, rhs: ValueId }
// 使用例: %4 = %1 add %2, %5 = %1 eq %2, %6 = %1 and %2
// 統合命令3: 単項演算
UnaryOp { dst: ValueId, op: UnaryOp, operand: ValueId }
// 使用例: %7 = not %5, %8 = neg %1
```
#### **演算子統合戦略**
```rust
// 現在分離→統合へ
pub enum BinaryOp {
// 算術現在のBinOp
Add, Sub, Mul, Div, Mod,
// 比較現在のCompare統合
Eq, Ne, Lt, Le, Gt, Ge,
// 論理現在のBinOp統合
And, Or, BitAnd, BitOr, BitXor, Shl, Shr,
}
// 3つの別命令 → 1つのBinOp に統合
// BinOp + Compare + LogicalOp → BinOp
```
### **2. 制御フロー4命令**
```mir
// 条件分岐
Branch { condition: ValueId, then_bb: BasicBlockId, else_bb: BasicBlockId }
// 無条件ジャンプ
Jump { target: BasicBlockId }
// 関数リターン
Return { value: Option<ValueId> }
// SSA合流必須
Phi { dst: ValueId, inputs: Vec<(BasicBlockId, ValueId)> }
```
### **3. 関数・メソッド2命令**
```mir
// 関数呼び出しstatic関数・ビルトイン
Call { dst: Option<ValueId>, func: ValueId, args: Vec<ValueId>, effects: EffectMask }
// Box メソッド呼び出し(動的ディスパッチ)
BoxCall { dst: Option<ValueId>, box_val: ValueId, method: String, args: Vec<ValueId>, effects: EffectMask }
```
### **4. Everything is Box基本3命令**
```mir
// Box生成統合
NewBox { dst: ValueId, box_type: String, args: Vec<ValueId> }
// 使用例: %obj = new_box "StringBox"("hello"), %arr = new_box "ArrayBox"()
// フィールド読み取り(統合)
Load { dst: ValueId, ptr: ValueId, field: Option<String> }
// 使用例: %val = load %obj.field, %item = load %arr[%idx]
// フィールド書き込み(統合)
Store { value: ValueId, ptr: ValueId, field: Option<String> }
// 使用例: store %val -> %obj.field, store %item -> %arr[%idx]
```
### **5. Bus分散・非同期一次市民2命令**
```mir
// Bus送信分散通信の核心
Send { bus: ValueId, message: ValueId, effects: EffectMask }
// 使用例: send %p2p_bus, %message effects=[BUS]
// Bus受信
Recv { dst: ValueId, bus: ValueId, effects: EffectMask }
// 使用例: %msg = recv %p2p_bus effects=[BUS]
```
### **6. 最適化・デバッグ1命令**
```mir
// GC・最適化ポイント
Safepoint
// 使用例: safepoint # GCタイミング・デバッグブレークポイント
```
## 🔄 **Tier-1: 高度最適化5命令**
### **必要な場合のみ追加**
```mir
// 型変換(最適化パス用)
Cast { dst: ValueId, value: ValueId, target_type: MirType }
// 動的型チェック(安全性)
TypeCheck { dst: ValueId, value: ValueId, expected_type: String }
// weak参照Ownership-Forest用
WeakNew { dst: ValueId, box_val: ValueId }
WeakLoad { dst: ValueId, weak_ref: ValueId }
// 何でも逃がし(複雑操作用)
Intrinsic { dst: Option<ValueId>, name: String, args: Vec<ValueId>, effects: EffectMask }
```
## 🛠️ **intrinsic逃がし戦略**
### **現在35命令→20命令削減計画**
#### **intrinsicに移行する命令15個削除**
```rust
// 配列操作 → intrinsic
// 現在: ArrayGet, ArraySet
// 移行後: intrinsic("array_get", [array, index])
// intrinsic("array_set", [array, index, value])
// デバッグ → intrinsic
// 現在: Debug, Print, Nop
// 移行後: intrinsic("debug", [value, message])
// intrinsic("print", [value])
// 例外処理 → intrinsic
// 現在: Throw, Catch
// 移行後: intrinsic("throw", [exception])
// intrinsic("catch", [exception_type])
// 参照詳細 → intrinsic
// 現在: RefNew, RefGet, RefSet, Copy
// 移行後: intrinsic("ref_new", [box])
// intrinsic("ref_get", [ref, field])
// intrinsic("ref_set", [ref, field, value])
// バリア → intrinsic
// 現在: BarrierRead, BarrierWrite
// 移行後: intrinsic("barrier_read", [ptr])
// intrinsic("barrier_write", [ptr])
// Future → intrinsic
// 現在: FutureNew, FutureSet, Await
// 移行後: intrinsic("future_new", [value])
// intrinsic("future_set", [future, value])
// intrinsic("await", [future])
```
#### **intrinsic実装例**
```rust
// src/mir/intrinsics.rs
pub fn execute_intrinsic(name: &str, args: &[ValueId], effects: EffectMask) -> Result<ValueId, String> {
match name {
"print" => {
let value = get_value(args[0]);
println!("{}", value);
Ok(ValueId::void())
}
"array_get" => {
let array = get_value(args[0]);
let index = get_value(args[1]);
Ok(array.get_element(index)?)
}
"future_new" => {
let value = get_value(args[0]);
let future = FutureBox::new_with_value(value);
Ok(ValueId::from_box(future))
}
_ => Err(format!("Unknown intrinsic: {}", name))
}
}
```
## 📊 **削減効果・期待値**
### **複雑性削減**
| 指標 | 削減前 | 削減後 | 効果 |
|------|--------|--------|------|
| **命令数** | 35個 | 20個 | 43%削減 |
| **コア実装** | 分散 | 統合 | 保守性向上 |
| **バックエンド負荷** | 35×3=105 | 20×3=60 | 43%削減 |
### **拡張性向上**
- **新機能追加**: intrinsicで実験→安定したらcore昇格
- **バックエンド追加**: core 20命令のみ実装すれば基本動作
- **最適化**: intrinsic は必要に応じて最適化・無視可能
## 🎯 **実装戦略・Phase 8.4**
### **段階1: intrinsic基盤1週間**
```rust
// 1. Intrinsic命令追加
Intrinsic { dst: Option<ValueId>, name: String, args: Vec<ValueId>, effects: EffectMask }
// 2. intrinsic実行エンジン
impl IntrinsicExecutor {
fn execute(&self, name: &str, args: &[ValueId]) -> Result<ValueId, String>
}
// 3. 基本intrinsic実装
// print, debug, array_get, array_set
```
### **段階2: 命令統合1週間**
```rust
// 1. BinOp統合Compare削除
// 2. Load/Store統合ArrayGet/ArraySet削除
// 3. 複雑操作のintrinsic移行
```
### **段階3: Bus命令実装1週間**
```rust
// 1. Send/Recv命令追加
// 2. Bus-elision基盤
// 3. P2PBox統合
```
### **段階4: 検証・テスト1週間**
```rust
// 1. Golden dump更新
// 2. 全バックエンド互換確認
// 3. 性能回帰チェック
```
## ✅ **Phase 8.4完了基準**
### **技術要件**
- [ ] **命令数20個以内**: ChatGPT5推奨準拠
- [ ] **intrinsic基盤**: 拡張可能な逃がし仕組み
- [ ] **Bus命令**: 分散・非同期一次市民化
- [ ] **全バックエンド動作**: interp/vm/wasm対応
### **品質要件**
- [ ] **Golden dump更新**: 新命令セットで標準更新
- [ ] **互換テスト通過**: 全バックエンド同一出力
- [ ] **性能維持**: 280倍WASM高速化維持
- [ ] **回帰テストPASS**: 既存機能への影響なし
---
## 📚 **関連ドキュメント**
- **MIR設計思想**: [mir-reference.md](mir-reference.md)
- **互換性契約**: [portability-contract.md](portability-contract.md)
- **テスト仕様**: [golden-dump-testing.md](golden-dump-testing.md)
- **現在実装**: [../../../src/mir/instruction.rs](../../../src/mir/instruction.rs)
---
*最終更新: 2025-08-14 - ChatGPT5「太り過ぎ」対策完全設計*
*MIR最小コア = Nyash「全バックエンド統一」の技術的基盤*

View File

@ -0,0 +1,190 @@
# 🤖 Nyash MIR (Mid-level Intermediate Representation) - Complete Reference
*ChatGPT5アドバイス基盤設計・Everything is Box最適化対応*
## 🎯 Nyashのユニークな点短く
### 🌟 **4つの革新的特徴**
1. **Ownership-Forest + weak**: GCなしで確定破棄、学習コスト低Rustより軽い
2. **Effect注釈**: pure/mut/io が MIR に入り、Busを消せる/elide基盤に
3. **Busを命令系に内蔵**: 分散・非同期が"あと付け"じゃなく言語仕様の一次市民
4. **バックエンド設計が最初から同居**: Interp→VM→JIT/AOT/WASMを同じMIRで回せる
### 🚀 **差別化ポイント**
```bash
# 全バックエンド統一実行
nyash --target interp program.nyash # デバッグ
nyash --target vm program.nyash # 高速実行
nyash --target wasm program.nyash # Web配布
nyash --target aot-rust program.nyash # ネイティブ
nyash --target jit-cranelift program.nyash # JIT
```
それぞれに**ベンチ + 互換テスト**が通る統一設計
## ⚠️ "化け物"への落とし穴(と対策)
### 🚨 **現在の問題状況**
- **MIRが太り過ぎ**: 35命令ChatGPT5推奨20命令の175%
- **仕様が揺れる可能性**: 互換テスト未整備
- **バックエンドごとの差**: 効果・所有の最低保証未定義
### ✅ **ChatGPT5対策実装**
1. **命令20個以内 + intrinsic逃がし**で開始
2. **MIRの互換テスト**golden dumpポータビリティ契約を先に切る
3. **効果&所有の"最低保証"**を定義Tier-0
## 🔧 **いま決めておくと強い"3点セット"**
### 1⃣ **MIR最小コア20命令以内**
#### **Tier-0: 絶対必要コア15命令**
```mir
// 算術・比較
Const { dst, value } // 定数
BinOp { dst, op, lhs, rhs } // 二項演算(算術・論理)
Compare { dst, op, lhs, rhs } // 比較演算
// 制御フロー
Branch { condition, then_bb, else_bb } // 条件分岐
Jump { target } // 無条件ジャンプ
Return { value? } // 関数リターン
Phi { dst, inputs } // SSA合流
// 関数・メソッド
Call { dst?, func, args, effects } // 関数呼び出し
BoxCall { dst?, box_val, method, args, effects } // メソッド呼び出し
// Everything is Box基本操作
NewBox { dst, box_type, args } // Box生成
Load { dst, ptr } // フィールド読み取り
Store { value, ptr } // フィールド書き込み
// Bus分散・非同期一次市民
Send { bus, message, effects } // Bus送信
Recv { dst, bus, effects } // Bus受信
// Effect制御
Safepoint // GC・最適化ポイント
```
#### **Tier-1: 高度最適化5命令**
```mir
Cast { dst, value, target_type } // 型変換(最適化用)
TypeCheck { dst, value, expected_type } // 動的型チェック
WeakNew { dst, box_val } // weak参照Forest用
WeakLoad { dst, weak_ref } // weak読み取り
Intrinsic { dst?, name, args, effects } // intrinsic逃がし
```
### 2⃣ **Portability Contract v0**
#### **決定的破棄保証**
```rust
// 強参照のみ伝播
pub struct OwnershipRule {
strong_propagation: true, // 強参照は破棄連鎖
weak_non_propagation: true, // weak参照は非伝播
deterministic_finalization: true, // 確定的破棄順序
}
```
#### **Effect意味論**
```rust
pub enum EffectContract {
Pure, // 副作用なし→最適化可能
Mut, // メモリ変更→順序保証必要
Io, // I/O操作→Bus統合
Bus, // 分散通信→elision対象
}
```
#### **weakは非伝播生存チェック**
```mir
// weak生存チェックは必須
%alive = weak_load %weak_ref
br %alive -> %use_bb, %null_bb
```
### 3⃣ **互換テスト仕様**
#### **Golden Dump検証**
```bash
# MIR出力の一致検証
nyash --dump-mir program.nyash > expected.mir
nyash --dump-mir program.nyash > actual.mir
diff expected.mir actual.mir # 0でなければ回帰
# 全バックエンド同一出力
nyash --target interp program.nyash > interp.out
nyash --target vm program.nyash > vm.out
nyash --target wasm program.nyash > wasm.out
diff interp.out vm.out && diff vm.out wasm.out
```
#### **Bus-elision検証**
```bash
# Bus最適化のon/off切り替え
nyash --elide-bus program.nyash > optimized.out
nyash --no-elide-bus program.nyash > reference.out
diff optimized.out reference.out # 結果は同一であるべき
```
## 📊 **現在の実装状況**
### ✅ **完成済み**
- SSA-form MIR基盤ChatGPT5設計
- Effect追跡システム
- 3バックエンドInterp/VM/WASM
- 280倍WASM高速化実証
### 🚧 **緊急改善必要**
- [ ] **命令数削減**: 35個→20個intrinsic逃がし
- [ ] **Bus命令実装**: Send/Recv分散一次市民化
- [ ] **互換テスト**: Golden dump自動化
- [ ] **Portability Contract**: v0仕様策定
### 🎯 **Phase 8.4実装推奨**
```bash
# Bus統合MIR設計
Bus { dst?, target, operation, args, effects }
# Bus-elision最適化
--elide-bus / --no-elide-bus フラグ実装
# 性能数値提示WASM速いデータ活用
Bus-elision ON: 280倍高速化現在実証済み
Bus-elision OFF: 分散通信フルサポート
```
## 🚀 **これで "全部に変換できる" を名乗れる**
### **統一コマンド体系**
```bash
nyash --target interp program.nyash # インタープリター
nyash --target vm program.nyash # 仮想マシン
nyash --target wasm program.nyash # WebAssembly
nyash --target aot-rust program.nyash # AOTネイティブ
nyash --target jit-cranelift program.nyash # JITコンパイル
```
### **品質保証体系**
- **ベンチマーク**: 各ターゲットの性能測定
- **互換テスト**: 同一入力→同一出力検証
- **回帰テスト**: Golden dump差分チェック
---
## 📚 **関連ドキュメント**
- **実装仕様**: [MIR命令セット詳細](mir-instruction-set.md)
- **最適化戦略**: [Everything is Box最適化](optimization-strategies.md)
- **互換性**: [Portability Contract v0](portability-contract.md)
- **テスト**: [Golden Dump検証システム](golden-dump-testing.md)
---
*最終更新: 2025-08-14 - ChatGPT5アドバイス基盤設計完了*
*「Everything is Box」哲学 × MIR最小コア = Nyashの差別化核心*

View File

@ -0,0 +1,295 @@
# 🤝 Nyash Portability Contract v0
*ChatGPT5アドバイス・全バックエンド互換性保証仕様*
## 🎯 目的
**「nyash --target= interp / vm / wasm / aot-rust / jit-cranelift」で同一プログラムが同一結果を保証**
全バックエンドでNyashプログラムが確実に動作し、最適化レベルに関係なく**決定的で予測可能な実行**を実現。
## 🔧 **Contract v0 仕様**
### 1⃣ **決定的破棄Deterministic Finalization**
#### **強参照のみ伝播保証**
```rust
// ✅ 保証される動作
box Parent {
child_strong: ChildBox // 強参照→破棄連鎖
}
parent.fini() // 必ずchild_strong.fini()も呼ばれる
```
#### **破棄順序の決定性**
```nyash
// 破棄順序: 最新→最古(スタック順序)
box Child from Parent {
init { data }
pack() {
from Parent.pack() // 1. Parent初期化
me.data = "child" // 2. Child初期化
}
// fini順序: 2→1逆順破棄
}
```
#### **例外安全性**
```rust
pub enum FinalizationGuarantee {
AlwaysExecuted, // fini()は例外時も必ず実行
NoDoubleDestroy, // 同一オブジェクトの二重破棄禁止
OrderPreserved, // 初期化と逆順での破棄保証
}
```
### 2⃣ **weak参照の非伝播生存チェック**
#### **非伝播保証**
```nyash
box Parent {
init { child_weak }
pack() {
local child = new Child()
me.child_weak = weak(child) // weak参照生成
// child がfini()されても Parent は影響なし
}
}
```
#### **生存チェック必須**
```mir
// MIR レベルでの生存チェック
%alive = weak_load %weak_ref
br %alive -> %use_bb, %null_bb
%use_bb:
// weak参照が有効な場合の処理
%value = /* weak_refの値使用 */
jmp %continue_bb
%null_bb:
// weak参照が無効な場合の処理
%value = const null
jmp %continue_bb
%continue_bb:
// 合流地点Phi必須
%result = phi [%value from %use_bb, %value from %null_bb]
```
#### **自動null化契約**
```rust
pub struct WeakContract {
auto_nullification: true, // 参照先fini()時に自動null
no_dangling_pointers: true, // ダングリングポインタ禁止
thread_safe_access: true, // マルチスレッド安全アクセス
}
```
### 3⃣ **Effect意味論最適化可能性**
#### **Effect分類契約**
```rust
pub enum EffectLevel {
Pure, // 副作用なし→並び替え・除去・重複実行可能
Mut, // メモリ変更→順序保証必要・並列化制限
Io, // I/O操作→実行順序厳密保証・キャッシュ禁止
Bus, // 分散通信→elision対象・ネットワーク最適化可能
}
```
#### **最適化契約**
```mir
// Pure関数→最適化可能
%result1 = call @pure_function(%arg) effects=[PURE]
%result2 = call @pure_function(%arg) effects=[PURE]
// → 最適化: %result2 = copy %result1
// Mut操作→順序保証
store %value1 -> %ptr effects=[MUT]
store %value2 -> %ptr effects=[MUT]
// → 順序維持必須
// Bus操作→elision対象
send %bus, %message effects=[BUS]
// → ネットワーク最適化・バッチ化可能
```
### 4⃣ **Bus-elision基盤契約**
#### **elision ON/OFF同一結果保証**
```bash
# 最適化ON→高速実行
nyash --elide-bus --target wasm program.nyash
# 最適化OFF→完全分散実行
nyash --no-elide-bus --target vm program.nyash
# 結果は必ず同一(契約保証)
```
#### **Bus操作の意味保証**
```mir
// Bus送信の意味論
send %bus, %message effects=[BUS] {
// elision OFF: 実際のネットワーク送信
// elision ON: ローカル最適化(結果同一)
}
// Bus受信の意味論
%msg = recv %bus effects=[BUS] {
// elision OFF: ネットワーク受信待ち
// elision ON: ローカル値返却(結果同一)
}
```
## 🧪 **Contract検証システム**
### **互換テストスイート**
```rust
// tests/portability_contract_tests.rs
#[test]
fn test_deterministic_finalization() {
let program = "/* fini順序テスト */";
let interp_result = run_interpreter(program);
let vm_result = run_vm(program);
let wasm_result = run_wasm(program);
// 破棄順序・タイミングが全バックエンドで同一
assert_eq!(interp_result.finalization_order, vm_result.finalization_order);
assert_eq!(vm_result.finalization_order, wasm_result.finalization_order);
}
#[test]
fn test_weak_reference_semantics() {
let program = "/* weak参照テスト */";
// 生存チェック・null化が全バックエンドで同一動作
let results = run_all_backends(program);
assert_all_equal(results.map(|r| r.weak_behavior));
}
#[test]
fn test_effect_optimization_equivalence() {
let program = "/* Effect最適化テスト */";
// PURE関数の最適化結果が同一
let optimized = run_with_optimization(program);
let reference = run_without_optimization(program);
assert_eq!(optimized.output, reference.output);
}
#[test]
fn test_bus_elision_equivalence() {
let program = "/* Bus通信テスト */";
let elision_on = run_with_flag(program, "--elide-bus");
let elision_off = run_with_flag(program, "--no-elide-bus");
// Bus最適化ON/OFFで結果同一
assert_eq!(elision_on.output, elision_off.output);
}
```
### **Golden Dump検証**
```bash
#!/bin/bash
# scripts/verify_portability_contract.sh
echo "🧪 Portability Contract v0 検証中..."
# 1. MIR出力一致検証
nyash --dump-mir test.nyash > golden.mir
nyash --dump-mir test.nyash > current.mir
if ! diff golden.mir current.mir; then
echo "❌ MIR回帰エラー検出"
exit 1
fi
# 2. 全バックエンド同一出力
declare -a backends=("interp" "vm" "wasm")
for backend in "${backends[@]}"; do
nyash --target $backend test.nyash > ${backend}.out
done
# 出力一致確認
if diff interp.out vm.out && diff vm.out wasm.out; then
echo "✅ 全バックエンド出力一致"
else
echo "❌ バックエンド出力差異検出"
exit 1
fi
# 3. Bus-elision検証
nyash --elide-bus test.nyash > elision_on.out
nyash --no-elide-bus test.nyash > elision_off.out
if diff elision_on.out elision_off.out; then
echo "✅ Bus-elision同一結果"
else
echo "❌ Bus-elision結果差異"
exit 1
fi
echo "🎉 Portability Contract v0 検証完了"
```
## 📊 **Contract適合レベル**
### **Tier-0: 基本互換性**
- [ ] **決定的破棄**: fini()順序がバックエンド間で同一
- [ ] **weak非伝播**: weak参照が親破棄に影響しない
- [ ] **基本Effect**: PURE/MUT/IO の意味論統一
- [ ] **出力一致**: 同一プログラム→同一標準出力
### **Tier-1: 最適化互換性**
- [ ] **PURE最適化**: 純粋関数の除去・移動がバックエンド間で同等
- [ ] **weak生存チェック**: 全バックエンドで同一タイミング
- [ ] **Bus-elision**: ON/OFF切り替えで結果同一
- [ ] **性能予測**: 最適化レベル差が定量的
### **Tier-2: 高度互換性**
- [ ] **メモリレイアウト**: Box構造がバックエンド間で互換
- [ ] **エラー処理**: 例外・パニックが同一動作
- [ ] **並行性**: Future/awaitが同一意味論
- [ ] **デバッグ**: スタックトレース・診断情報が同等
## ⚡ **実装優先順位**
### **Phase 8.4(今すぐ)**
1. **Tier-0契約実装**: 基本互換性確保
2. **Golden dump自動化**: CI/CDで回帰検出
3. **Bus命令設計**: elision基盤構築
### **Phase 8.5(短期)**
1. **Tier-1契約実装**: 最適化互換性
2. **性能ベンチマーク**: 契約準拠性測定
3. **エラー契約**: 例外処理統一
### **Phase 9+(中長期)**
1. **Tier-2契約実装**: 高度互換性
2. **形式検証**: 契約の数学的証明
3. **認証システム**: 契約適合認定
---
## 🎯 **期待効果**
### **開発者体験**
- **予測可能性**: どのバックエンドでも同一動作保証
- **デバッグ容易性**: バックエンド切り替えで問題切り分け
- **最適化信頼性**: 高速化しても結果不変保証
### **Nyash言語価値**
- **差別化**: 「全バックエンド互換」言語として独自性
- **信頼性**: エンタープライズ採用の技術的根拠
- **拡張性**: 新バックエンド追加時の品質保証
---
*最終更新: 2025-08-14 - ChatGPT5アドバイス完全実装*
*「Everything is Box」×「全バックエンド互換」= Nyashの技術的優位性*