Files
hakorune/apps
Selfhosting Dev c8063c9e41 pyvm: split op handlers into ops_core/ops_box/ops_ctrl; add ops_flow + intrinsic; delegate vm.py without behavior change
net-plugin: modularize constants (consts.rs) and sockets (sockets.rs); remove legacy commented socket code; fix unused imports
mir: move instruction unit tests to tests/mir_instruction_unit.rs (file lean-up); no semantic changes
runner/pyvm: ensure using pre-strip; misc docs updates

Build: cargo build ok; legacy cfg warnings remain as before
2025-09-21 08:53:00 +09:00
..

Nyash Applications Showcase

このディレクトリには、Nyashの実力を示す実用的なアプリケーションが含まれています。

開発・貢献に関する全体ガイドはリポジトリルートのAGENTS.mdRepository Guidelinesを参照してください。プロジェクト構成、ビルド/テスト、PR要件の要点を簡潔にまとめています。

🚀 実装済みアプリケーション

🎮 ゲーム・エミュレータ

CHIP-8エミュレータ

場所: chip8_nyash/chip8_emulator.nyash
特徴: 完全なゲーム機エミュレータ、グラフィック表示対応

./target/release/nyash apps/chip8_nyash/chip8_emulator.nyash

📝 エディタ・開発ツール

Enhanced Kilo Editor

場所: kilo_nyash/enhanced_kilo_editor.nyash
特徴: テキストエディタkilo改良版、実用的なファイル編集機能

./target/release/nyash apps/kilo_nyash/enhanced_kilo_editor.nyash

🌐 ネットワークアプリ

TinyProxy

場所: tinyproxy_nyash/proxy_server.nyash
特徴: HTTPプロキシサーバー、Netプラグイン活用

./target/release/nyash apps/tinyproxy_nyash/proxy_server.nyash

🛠️ ユーティリティ・ベンチマーク

ny-echo - 最小CLI実装

場所: ny-echo/main.nyash 標準入力を読み取り、オプションに応じて変換して出力する基本的なCLIツール。

# 基本使用
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/AOTで同一動作JIT実行は現在封印

2. ny-array-bench - 性能ベンチマーク

ArrayBoxの各種操作をベンチマークし、VM/JIT/AOTの性能比較を行うツール。

# ベンチマーク実行
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, "aot": 5.0}
}

特徴:

  • カスタムStatsBoxによる計測
  • JSON形式でCI連携可能
  • 性能改善の定量的測定

3. ny-jsonlint開発中

PyRuntimeBoxを使用してPythonのjsonモジュールでJSON検証を行うツール。

4. ny-filegrep開発中

ファイルシステムを検索し、パターンマッチングを行う実用的なツール。

5. ny-http-hello開発中

HTTPサーバーを実装し、Web対応を実証するデモアプリケーション。

🔧 ビルドと実行

実行方法

# インタープリター実行
nyash apps/APP_NAME/main.nyash

# VM実行高速
nyash --backend vm apps/APP_NAME/main.nyash

# JIT実行封印中
# 現在は無効です。Interpreter/VM か AOT(EXE) を使用してください。

テスト実行

各アプリケーションにはtest.shが含まれています

cd apps/ny-echo
./test.sh

🎯 予定アプリケーション(論文・ベンチマーク用)

📊 CLBG標準ベンチマーク

AI先生たちの推奨により、論文説得力向上のため以下を実装予定

1. binary-trees - メモリ・GC性能測定

目的: GC性能、メモリ割り当て速度測定 期待性能: Interpreter(1x) → VM(8x) → LLVM(20x)

// 二分木大量生成・破棄でGC性能測定
box TreeNode {
    init { left, right, value }
    birth(depth, value) { ... }
}

2. n-body - 数値計算の王道

目的: 浮動小数点演算、ループ最適化効果測定 期待性能: Interpreter(1x) → VM(10x) → LLVM(50x)

// 太陽系シミュレーション、重力計算
// MathBoxを活用した数値計算ベンチマーク

3. mandelbrot - 計算+画像出力

目的: 純粋計算性能、ファイル出力確認 期待性能: Interpreter(1x) → VM(15x) → LLVM(80x)

// フラクタル計算、PPM/PNGファイル出力
// 視覚的にJIT/LLVM効果を確認可能

🌟 Nyash特色ベンチマーク

4. JSON Stream Aggregator

目的: プラグイン統一性、「Everything is Box」実証 特徴: File/Netプラグインから同じコードで処理

// 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 ネットワーク性能

🎯 実装ロードマップ

完了済み

  • ny-echo基本I/O検証
  • ny-array-bench性能基準
  • chip8_emulatorゲーム・グラフィック
  • enhanced_kilo_editor実用ツール
  • 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で安全に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を複数プラグインが並列処理
  2. 共有メモリマップファイルの安全クローズ: 最後の参照が落ちた瞬間のみクローズ
  3. マルチプロデューサ・マルチコンシューマなリングバッファ: 言語レベルでunsafe不要

これらの実装により、Nyashの「Everything is Box」哲学とArc統一アーキテクチャが、単なる理論ではなく実用的な価値を持つことを証明します。

🔮 将来候補

  • レイトレーサーCPU集約的
  • Lispインタープリター言語実装
  • 静的サイトジェネレータ(実用性)

🤝 貢献方法

新しいアプリケーションのアイデアや改善提案は大歓迎です!

  1. 新しいアプリディレクトリを作成
  2. main.nyashとtest.shを実装
  3. このREADMEに追加
  4. PRを送信

すべてのアプリケーションは「Everything is Box」哲学に従い、プラグインシステムを活用することを推奨します。