Files
hakorune/apps/README.md
Moe Charm 11506cee3b Phase 11-12: LLVM backend initial, semantics layer, plugin unification
Major changes:
- LLVM backend initial implementation (compiler.rs, llvm mode)
- Semantics layer integration in interpreter (operators.rs)
- Phase 12 plugin architecture revision (3-layer system)
- Builtin box removal preparation
- MIR instruction set documentation (26→Core-15 migration)
- Cross-backend testing infrastructure
- Await/nowait syntax support

New features:
- LLVM AOT compilation support (--backend llvm)
- Semantics layer for interpreter→VM flow
- Tri-backend smoke tests
- Plugin-only registry mode

Bug fixes:
- Interpreter plugin box arithmetic operations
- Branch test returns incorrect values

Documentation:
- Phase 12 README.md updated with new plugin architecture
- Removed obsolete NYIR proposals
- Added LLVM test programs documentation

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 23:44:34 +09:00

266 lines
9.7 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.

# Nyash Applications Showcase
このディレクトリには、Nyashの実力を示す実用的なアプリケーションが含まれています。
開発・貢献に関する全体ガイドはリポジトリルートの`AGENTS.md`Repository Guidelinesを参照してください。プロジェクト構成、ビルド/テスト、PR要件の要点を簡潔にまとめています。
## 🚀 実装済みアプリケーション
### 🎮 ゲーム・エミュレータ
#### CHIP-8エミュレータ
**場所**: `chip8_nyash/chip8_emulator.nyash`
**特徴**: 完全なゲーム機エミュレータ、グラフィック表示対応
```bash
./target/release/nyash apps/chip8_nyash/chip8_emulator.nyash
```
### 📝 エディタ・開発ツール
#### Enhanced Kilo Editor
**場所**: `kilo_nyash/enhanced_kilo_editor.nyash`
**特徴**: テキストエディタkilo改良版、実用的なファイル編集機能
```bash
./target/release/nyash apps/kilo_nyash/enhanced_kilo_editor.nyash
```
### 🌐 ネットワークアプリ
#### TinyProxy
**場所**: `tinyproxy_nyash/proxy_server.nyash`
**特徴**: HTTPプロキシサーバー、Netプラグイン活用
```bash
./target/release/nyash apps/tinyproxy_nyash/proxy_server.nyash
```
### 🛠️ ユーティリティ・ベンチマーク
#### ny-echo - 最小CLI実装
**場所**: `ny-echo/main.nyash`
標準入力を読み取り、オプションに応じて変換して出力する基本的なCLIツール。
```bash
# 基本使用
echo "Hello World" | nyash apps/ny-echo/main.nyash
# 大文字変換
echo "hello" | nyash apps/ny-echo/main.nyash --upper
# 小文字変換
echo "HELLO" | nyash apps/ny-echo/main.nyash --lower
```
**特徴**:
- ConsoleBoxによるI/O処理
- StringBoxの変換メソッド活用
- VM/JIT/AOTすべてで同一動作
### 2. ny-array-bench - 性能ベンチマーク
ArrayBoxの各種操作をベンチマークし、VM/JIT/AOTの性能比較を行うツール。
```bash
# ベンチマーク実行
nyash apps/ny-array-bench/main.nyash
# 出力例JSON形式
{
"create_1000": 1.23,
"map_1000": 2.45,
"reduce_1000": 0.98,
"relative_performance": {"vm": 1.0, "jit": 5.2}
}
```
**特徴**:
- カスタムStatsBoxによる計測
- JSON形式でCI連携可能
- 性能改善の定量的測定
### 3. ny-jsonlint開発中
PyRuntimeBoxを使用してPythonのjsonモジュールでJSON検証を行うツール。
### 4. ny-filegrep開発中
ファイルシステムを検索し、パターンマッチングを行う実用的なツール。
### 5. ny-http-hello開発中
HTTPサーバーを実装し、Web対応を実証するデモアプリケーション。
## 🔧 ビルドと実行
### 実行方法
```bash
# インタープリター実行
nyash apps/APP_NAME/main.nyash
# VM実行高速
nyash --backend vm apps/APP_NAME/main.nyash
# JIT実行最速
nyash --backend jit apps/APP_NAME/main.nyash
```
### テスト実行
各アプリケーションにはtest.shが含まれています
```bash
cd apps/ny-echo
./test.sh
```
## 🎯 予定アプリケーション(論文・ベンチマーク用)
### 📊 CLBG標準ベンチマーク
AI先生たちの推奨により、論文説得力向上のため以下を実装予定
#### 1. binary-trees - メモリ・GC性能測定
**目的**: GC性能、メモリ割り当て速度測定
**期待性能**: Interpreter(1x) → VM(8x) → LLVM(20x)
```nyash
// 二分木大量生成・破棄でGC性能測定
box TreeNode {
init { left, right, value }
birth(depth, value) { ... }
}
```
#### 2. n-body - 数値計算の王道
**目的**: 浮動小数点演算、ループ最適化効果測定
**期待性能**: Interpreter(1x) → VM(10x) → LLVM(50x)
```nyash
// 太陽系シミュレーション、重力計算
// MathBoxを活用した数値計算ベンチマーク
```
#### 3. mandelbrot - 計算+画像出力
**目的**: 純粋計算性能、ファイル出力確認
**期待性能**: Interpreter(1x) → VM(15x) → LLVM(80x)
```nyash
// フラクタル計算、PPM/PNGファイル出力
// 視覚的にJIT/LLVM効果を確認可能
```
### 🌟 Nyash特色ベンチマーク
#### 4. JSON Stream Aggregator
**目的**: プラグイン統一性、「Everything is Box」実証
**特徴**: File/Netプラグインから同じコードで処理
```nyash
// FileBoxとNetBoxから同じAPIでJSONを読み取り
// 同一コードでローカルファイルとHTTP APIに対応
```
## 📊 性能指標(現在の実測値)
| アプリ | Interpreter | VM | LLVM(予定) | 用途 |
|--------|-------------|----|-----------| -----|
| ny-echo | 1.0x | 13.5x | 50x | I/O性能 |
| ny-array-bench | 1.0x | 13.5x | 40x | 計算性能 |
| chip8_emulator | 1.0x | 13.5x | 60x | ゲーム性能 |
| enhanced_kilo_editor | 1.0x | 13.5x | 45x | エディタ性能 |
| tinyproxy | 1.0x | 13.5x | 35x | ネットワーク性能 |
## 🎯 実装ロードマップ
### ✅ 完了済み
- [x] ny-echo基本I/O検証
- [x] ny-array-bench性能基準
- [x] chip8_emulatorゲーム・グラフィック
- [x] enhanced_kilo_editor実用ツール
- [x] tinyproxyネットワーク
### 🚧 実装予定(論文・ベンチマーク用)
- [ ] binary-treesGC性能測定
- [ ] n-body数値計算
- [ ] mandelbrot視覚的ベンチマーク
- [ ] JSON Stream Aggregatorプラグイン統一
### 🔮 将来候補
- [ ] レイトレーサーCPU集約的
- [ ] Lispインタープリター言語実装
- [ ] 静的サイトジェネレータ(実用性)
## 🚀 Nyashメモリ管理の真価を示す革新的アプリケーション
### AI先生たちの提案2025-08-31
Gemini先生とChatGPT5先生から、Nyashの決定論的メモリ管理スコープベース解放、finiシステム、weak自動nil化がもたらす新しいプログラミングパラダイムについて革新的な提案を受けました。
### 🌟 最優先実装候補
#### 1. **分散ホットスワップ・パイプライン**
**概要**: NyaMesh上でセンサ→前処理→推論→配信の各段をプラグイン化し、無停止で更新可能なMLパイプライン
**Nyashならではの特徴**:
- 🔄 **無停止プラグイン更新**: finiシステムにより論理的に終了しても物理的に参照可能
- 🧹 **決定的メモリ管理**: スコープ解放と逆順カスケードで予測可能な解放
-**性能維持**: p99レイテンシ悪化<5%、スループット維持
**他言語では困難な理由**:
- Rust/C++: 手動メモリ管理で複雑ホットスワップ時にUAFリスク
- Python/Ruby: GILにより真の並行性が得られない
#### 2. **BoxTorrent - 内容アドレス化P2P配布基盤**
**概要**: 大容量データや中間生成物をBox=DAGード」として配布し、変換プラグインで処理
**Nyashならではの特徴**:
- 📦 **ゼロコピー共有**: Arc<Mutex>で安全にBoxを共有
- 🔍 **内容ハッシュ重複排除**: 同一内容のBoxを自動的に再利用
- 🗑️ **自然なキャッシュ管理**: 参照カウントで不要データを自動削除
#### 3. **Live Shared Heap - メッシュ越し共有ヒープ**
**概要**: 論理的に単一のShared HeapにBoxを配置し、P2Pネットワーク上で共有
**Nyashならではの特徴**:
- 🌐 **分散ロックの単純化**: 全Boxがスレッドセーフ前提
- 🔌 **プラグイン透過性**: ヒープ上の同一Boxをそのまま扱える
- 🔧 **ノード障害耐性**: 参照カウントで自然復旧
### 📊 実装による測定可能な優位性
| 指標 | 期待される優位性 |
|------|-----------------|
| **安全性** | UAF/データ競合/クラッシュ発生率 0% |
| **可用性** | ホットスワップ中断時間 0秒 |
| **効率性** | ゼロコピー率 90%以上 |
| **拡張性** | ピア数に対して線形スケール |
| **回復性** | ノード喪失下での自動復旧 |
### 🎯 実装ロードマップNyash特化
#### Phase 1: ミニマムPoC1週間
- [ ] **BoxTorrentミニ版**: 内容アドレスBox + 参照カウント連携
- [ ] **測定基盤**: 参照グラフ可視化、メモリリーク監視
#### Phase 2: 分散デモ2週間
- [ ] **2段パイプライン**: センサ→処理のホットスワップ実証
- [ ] **性能計測**: p99レイテンシ、スループット監視
#### Phase 3: 論文向け完全版3週間
- [ ] **完全なMLパイプライン**: 4段以上の処理段
- [ ] **大規模ベンチマーク**: 100ード規模での性能実証
### 💡 Nyashだからこそ可能な革新
**「他言語では危険だがNyashなら安全」な例**:
1. **ゼロコピー共有バッファの多段パイプ**: 大容量Box<ByteBuf>を複数プラグインが並列処理
2. **共有メモリマップファイルの安全クローズ**: 最後の参照が落ちた瞬間のみクローズ
3. **マルチプロデューサ・マルチコンシューマなリングバッファ**: 言語レベルでunsafe不要
これらの実装により、Nyashの「Everything is Box」哲学とArc<Mutex>統一アーキテクチャが、単なる理論ではなく実用的な価値を持つことを証明します。
### 🔮 将来候補
- [ ] レイトレーサーCPU集約的
- [ ] Lispインタープリター言語実装
- [ ] 静的サイトジェネレータ(実用性)
## 🤝 貢献方法
新しいアプリケーションのアイデアや改善提案は大歓迎です!
1. 新しいアプリディレクトリを作成
2. main.nyashとtest.shを実装
3. このREADMEに追加
4. PRを送信
すべてのアプリケーションは「Everything is Box」哲学に従い、プラグインシステムを活用することを推奨します。