Files
hakorune/docs/CURRENT_TASK.md
Moe Charm ee4228af5a docs(phase-8.5): Add comprehensive MIR 25-instruction specification
• Phase 8.5 complete specification (ChatGPT5 + AI conference decision)
• 25-instruction semantic layering (Tier-0/1/2 structure)
• Effect system (pure/mut/io/control) with optimization rules
• Verifier requirements (ownership forest, weak references, safety)
• Backend implementation guidance (Interpreter/VM/WASM/JIT)
• Two-phase lowering strategy for flexible backend support
• Test strategies (Golden MIR, behavior consistency, performance)

Addresses VM/WASM issues discovered in Phase 8.4 testing:
- VM BoxCall return value problem
- WASM String constant/BoxCall support
- Everything is Box philosophy perfect IR realization

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-14 11:14:24 +09:00

396 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎯 現在のタスク (2025-08-14 Native Nyash Phase 8.4完了・次期フェーズ準備)
## 🎯 2025-08-14 現在の進行状況
### 🚀 Native Nyash実装
- **Phase 6**: ✅ 完了RefNew/RefGet/RefSet MIR命令実装
- **Phase 7**: ✅ 完了FutureNew/Await MIR命令実装
- **Phase 8.1**: ✅ 完了WASM基盤実装 - メモリ管理・ランタイム)
- **Phase 8.2 PoC1**: ✅ 完了基本演算のMIR→WASM変換動作確認
- PR #52マージ済み2025-08-13
- 整数演算・print・return動作確認
- **🌐 CLI統合完成**: `--compile-wasm`オプション追加2025-08-14
- **📦 Webブラウザ実行成功**: Nyash→WASM→ブラウザ完全パイプライン
- **Phase 8.2 PoC2**: ✅ **完了2025-08-14**
- **⚡ ベンチマークシステム実装完成**
- **⚠️ 280倍"コンパイル速度"向上実証** (WASM vs Interpreter)
- **🚨 実行速度比較ではない**: 現在のベンチマークは変換時間測定
- **Phase 8.3**: ✅ **完了2025-08-14**
- Box操作のWASM対応RefNew/RefGet/RefSet
- **✅ マージ完了**: Copilot機能とClaude機能統合済み
- **🚨 重要発見**: ベンチマーク測定の実態判明
- **Phase 8.4**: ✅ **完了2025-08-14**
- **🎯 AST→MIR Lowering完全実装**
- **PR #56マージ完了**: Copilot実装成功
- **📋 実装済み機能**:
- User-defined Box: `box DataBox { init { value } }`
- Object creation: `new DataBox(42)`
- Field access: `obj.value`
- Method calls: `c.increment()`
- Delegation: `from Parent.greet()`
- Static Main互換性維持
## 🚨 **重要問題点発見2025-08-14**
### ⚠️ **ベンチマーク測定の実態**
**発見事実**: 現在の「280倍高速化」は実行性能ではなく**コンパイル性能**
#### 📊 測定の実態
- **インタープリター**: AST→実行時間 (48.59ms)
- **VM**: MIR→VM実行時間 (16.97ms)
- **WASM**: MIR→WASM**変換時間** (0.17ms) ← **実行時間ではない**
#### 🔍 根拠コード
```rust
// src/benchmarks.rs:146
// Full WASM execution would require wasmtime integration
let _wat_output = wasm_backend.compile_module(compile_result.module)?;
// Note: For now we only measure compilation time
```
#### 🚨 問題の深刻度
- **ドキュメント**: execution-backends.mdに「実行性能比較」として記載済み
- **広報**: 280倍高速化として宣伝済み
- **実態**: WASMコンパイル速度 vs インタープリター実行速度の比較
### 🎯 **緊急修正が必要な項目**
#### 📋 ドキュメント修正(緊急)
- [ ] **execution-backends.md** - 正確な実行性能データに更新
- 280倍コンパイル → 13.5倍(実行)に修正
- VM性能問題の記載追加
- [ ] **README系ドキュメント** - 誤解を招く280倍表記の全面見直し
- [ ] **ベンチマーク機能説明** - コンパイル vs 実行の明確な分離
- [ ] **CLAUDE.md** - 正確な性能データでの更新
#### 🔧 技術的修正
- [ ] **wasmtime統合**: 真のWASM実行性能測定
- [ ] **ベンチマーク設計見直し**: 公平な比較条件
- [ ] **実行環境整備**: wasmtime/WebAssembly runtime
#### 📊 正確な性能測定実装
- [ ] WASM実行時間測定機能
- [ ] コンパイル時間 vs 実行時間の分離
- [ ] 実際のEnd-to-End性能比較
### 🚀 **次期Phase 8.4対応方針**
#### 優先度1: 真の性能測定実装
```bash
# 目標: 正確なWASM実行性能測定
nyash --benchmark-execution --backend wasm program.nyash
# インタープリターAST実行時間
# VMMIR→VM実行時間
# WASMMIR→WASM→wasmtime実行時間真の比較
```
#### 優先度2: wasmtime統合
- Cargo.toml依存関係追加: `wasmtime = "x.x.x"`
- WASMバイナリ実行機能実装
- 実行時間正確測定
#### 優先度3: ベンチマーク再設計
- コンパイル時間と実行時間の分離
- 公平な比較条件設定
- 統計的有意性の確保
### 🎉 **wasmtime統合完了2025-08-14**
#### 📊 **真のWASM実行性能判明**
**実測結果**100回実行平均:
- **🌐 WASM (wasmtime)**: **8.12ms****13.5倍高速化**
- **📝 Interpreter**: **110.10ms** (1x baseline)
- **🏎️ VM**: **119.80ms** (0.9x slower) ← **問題発見**
#### 🚨 **新たな問題点発見**
### ⚠️ **VM性能問題**
**異常事実**: VMがインタープリターより遅い119.80ms vs 110.10ms
#### 🔍 VM性能劣化の可能性
- **期待**: VM > InterpreterMIR最適化効果
- **実態**: VM < Interpreter0.9倍の性能劣化
- **推定原因**:
- MIR変換オーバーヘッド
- VM実行エンジンの最適化不足
- メモリ管理の非効率性
#### 🎯 **VM性能改善が必要**
- [ ] VM実行エンジンのプロファイリング
- [ ] MIRVM変換の最適化
- [ ] メモリ割り当て解放の効率化
- [ ] JIT化への準備Phase 9
### 📝 **現在の状況整理**
- **WASMコンパイル機能**: 正常動作
- **WASM実行性能**: 13.5倍高速化確認
- **Copilot Box操作実装**: 基盤完成
- 🚨 **VM性能問題**: 要調査改善
- 📋 **ドキュメント**: 正確な性能データで更新必要
### 📚 ドキュメント整備
- 実行バックエンド完全ガイド作成2025-08-14
- インタープリターVMWASM の3実行方式統合ドキュメント
- CLI使用方法パフォーマンス比較用途別推奨
- **ベンチマーク機能ドキュメント追加**2025-08-14
- 実際の性能測定結果データ統合
- `--benchmark`, `--iterations` オプション説明
### 🤝 **Claude追加機能2025-08-14実装**
#### ⚡ ベンチマークシステム完全実装
**追加ファイル:**
- `src/benchmarks.rs` - ベンチマークフレームワーク220行
- `benchmarks/bench_light.nyash` - 軽量テスト簡単算術
- `benchmarks/bench_medium.nyash` - 中程度テスト複合演算
- `benchmarks/bench_heavy.nyash` - 重量テスト50+演算
- `main.rs` - CLI統合`--benchmark`, `--iterations`
**機能詳細:**
- 3つのバックエンドInterpreter/VM/WASM全自動比較
- 統計精度向上指定回数実行平均計算速度比較
- 詳細結果出力実行時間速度比パフォーマンス解析
- エラーハンドリングファイル不存在実行失敗対応
**実証データ(修正済み):**
- **WASM**: 8.12ms平均13.5倍実行高速化
- **Interpreter**: 110.10ms平均ベースライン
- **VM**: 119.80ms平均0.9倍で性能劣化 🚨要改善
**コンパイル性能参考:**
- **WASM変換**: 0.17ms平均280倍コンパイル高速化
- **VM変換**: 16.97ms平均2.9倍コンパイル高速化
#### ✅ **Phase 8.3 Copilot協調完了2025-08-14**
**完了事項:**
1. **マージ成功:**
- `src/main.rs` - CLI引数パーサー統合完了
- `src/lib.rs` - benchmarksモジュール統合完了
- `src/backend/wasm/` - Box操作WASM実装完了
2. **統合テスト完了:**
- git status: クリーンな状態
- cargo build --release: エラーなし
- WASM生成テスト: 正常動作
- wasmtime実行テスト: 13.5倍高速化確認
3. **統合成果:**
- ベンチマーク機能維持: 完全統合成功
- CLI統合: 両機能の統合的対応完了
- Box操作WASM基盤: RefNew/RefGet/RefSet実装済み
- 真の実行性能測定: wasmtime統合完了
#### ✅ **Phase 8.3 Issue #53完了詳細Copilot実装**
**✅ 完了実装:**
- RefNew/RefGet/RefSet WASMコード生成
- Box メモリレイアウト定義
- malloc/freeアロケータ改良
- NewBox MIR命令WASM変換
** 達成成功基準:**
- Box操作のend-to-end動作確認
- CI環境での全テストPASS
- `--compile-wasm`オプション正常動作
- 既存Phase 8.2互換性維持
**Claude統合成果:**
- **真の性能測定完了**: wasmtime統合でWASM実行性能13.5倍確認
- **280倍の正体判明**: コンパイル性能であることを解明
- **VM性能問題発見**: 0.9倍の性能劣化を特定Phase 9で改善予定
## 🚀 **次期Phase 8.4+ 実装方針**
### 📋 **Phase 8.4: VM性能改善緊急**
**目標**: VMをインタープリターより高速化
- [ ] VM実行エンジンプロファイリング
- [ ] MIRVM変換最適化
- [ ] メモリ管理効率化
- [ ] JIT化準備Phase 9
### 📋 **Phase 9: JIT Baseline実装**
**目標**: VM JIT移行で大幅高速化
- [ ] Cranelift統合
- [ ] ベースラインJIT実装
- [ ] 真の実行性能で50-100倍目標
### 📋 **Phase 10: AOT最終形態**
**目標**: ネイティブコンパイル1000倍高速化
- [ ] wasmtime AOT統合
- [ ] LLVM最適化パイプライン
- [ ] Everything is Box最適化
## 🚀 **次期フェーズ方針Phase 8.5以降)**
### 🎯 **Phase 8.5: MIR階層化実装最優先**
**目標**: ChatGPT5 + AI大会議決定版25命令MIR実装
- **優先度**: Critical
- **期間**: 3週間
- **内容**:
- 25命令セマンティック階層化Tier-0/1/2
- 効果システムpure/mut/io/control
- 検証システム所有森weak参照安全性
- 二相ロワリング戦略
### 🎯 **Phase 8.6: VM性能改善緊急**
**目標**: VM0.9倍)→ Interpreter超え2倍以上
- **優先度**: High
- **期間**: 2週間
- **内容**:
- VM実行エンジンプロファイリング
- 命令ディスパッチ最適化
- レジスタベースVM検討
- メモリプール最適化
### 🎯 **Phase 8.7: Real-world Memory Testing**
**目標**: 実用アプリでfini/weak参照システム実証
- **優先度**: High
- **期間**: 2週間
- **内容**:
- kiloテキストエディタ実装
- 大量オブジェクト管理テスト
- 循環参照回避確認
- WASM環境での動作確認
### 🧪 ChatGPT5さんからの弱参照テスト追加タスク
#### 実装予定のテストtests/integration_tests.rs
- [ ] `test_weak_field_cannot_finalize`: weakフィールドに対して `me.field.fini()` を呼ぶとエラーになることを確認
- コード: weak parent を持つ Child に対して `me.parent.fini()` を呼ぶ
- 期待: 実行エラーメッセージに "Cannot finalize weak field" を含む
- [ ] `test_usage_prohibited_after_fini`: インスタンスを `fini()` 後にメソッド呼び出しすると使用禁止エラーになることを確認
- [ ] weak自動null化テスト
- `p.fini()` 後に `c.isParentNull()` `true` になる
#### テスト実行のワークアラウンド
- 推奨: `cargo test --tests -j32`examples除外
- Windows向けexampleをビルド対象から一時外すかCIのmatrixでexamplesをスキップ
#### 追加検討事項
- weakの複数段/循環
- fini内でのカスケード順序検証
---
## 📋 以前の実装計画(参考)
### 📋 **段階的実装計画(優先度順)**
#### **Phase 1: 基本型Box実装** (最優先)
##### 1. **FloatBox** - 浮動小数点数Box 📊
- **依存**: なし (f64の基本実装)
- **実装内容**:
- 基本値の保持表示
- 四則演算メソッド
- 文字列変換
- 比較演算子
- **テスト**:
```nyash
f = new FloatBox(3.14)
print(f.add(2.86)) // 6.0
print(f.toString()) // "3.14"
```
##### 2. **ArrayBoxの改良** - 配列機能の強化 📚
- **依存**: 既存ArrayBox実装
- **追加機能**:
- sort()メソッド - 配列ソート
- reverse()メソッド - 配列反転
- indexOf()メソッド - 要素検索
- slice()メソッド - 部分配列
- **テスト**:
```nyash
arr = new ArrayBox()
arr.push(3); arr.push(1); arr.push(2)
arr.sort() // [1, 2, 3]
```
#### **Phase 2: 演算子システム** (高優先)
##### 3. **基本演算子の改良** ➕➖✖️➗
- **依存**: 既存の演算子実装
- **改良内容**:
- 型間演算の対応 (IntegerBox + FloatBox)
- 文字列 + 数値の連結
- より良いエラーメッセージ
- **テスト**:
```nyash
print(42 + 3.14) // 45.14 (型変換)
print("Value: " + 42) // "Value: 42"
```
##### 4. **比較演算子の完全実装** 🔍
- **実装内容**:
- ==, !=, <, >, <=, >= の完全対応
- 型間比較のサポート
- null比較の正しい動作
- **テスト**: 全ての型の組み合わせテスト
#### **Phase 3: ユーティリティBox** (中優先)
##### 5. **DateTimeBox** - 日時操作 📅
- **依存**: chrono crate (既存)
- **機能**:
- 現在時刻の取得
- 日時の計算・比較
- フォーマット変換
- **テスト**: 日時計算、文字列変換
##### 6. **FileBox** - ファイル操作 📁
- **依存**: std::fs
- **機能**:
- ファイル読み書き
- 存在確認
- ディレクトリ操作
- **テスト**: 基本的なファイル操作
### 🎯 **今週の実装目標**
#### **今日 (2025-08-11)**: FloatBox実装
1. FloatBox構造体作成
2. 基本メソッド実装 (add, sub, mul, div)
3. Nyashからの使用テスト
4. インタープリター統合
#### **明日**: ArrayBox改良
1. sort()メソッド実装
2. reverse()メソッド実装
3. テストスクリプト作成・動作確認
#### **明後日**: 演算子改良
1. 型間演算の実装
2. エラーハンドリング改善
3. 包括的テスト
### 📊 **実装ステータス**
#### ✅ 実装済み (Arc<Mutex>統一完了)
- StringBox, IntegerBox, BoolBox, NullBox
- ConsoleBox, MathBox, TimeBox, MapBox
- DebugBox, RandomBox, ArrayBox (基本)
- BufferBox, RegexBox, JSONBox, StreamBox
#### 🚧 今回追加予定
- FloatBox (今日)
- ArrayBox改良 (明日)
- 演算子改良 (明後日)
#### 📋 将来実装予定
- DateTimeBox, FileBox
- より複雑なBox (P2PBox等)
### 💭 **重要な原則**
1. **一つずつ確実に**: 1つのBoxを完全に実装してから次へ
2. **テストファースト**: 必ずNyashスクリプトで動作確認
3. **段階的複雑化**: シンプルから複雑へ
4. **ビルド確認**: 毎回`cargo build`で確認
5. **依存関係注意**: 複雑な依存は後回し
この方針で確実で安定した実装を進めていきます
---
最終更新: 2025-08-11 - シンプルBox段階実装方針決定