Files
hakorune/apps/ny-mem-bench/design.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

2.5 KiB
Raw Blame History

Nyashメモリ管理ベンチマーク設計書

概要

イベントディスパッチャと揮発性リスナーを使用して、Nyashの決定論的メモリ管理の特性を測定・可視化するベンチマーク。

選定理由

  • 最小実装: GUIや並行処理なしで実装可能
  • 全特性網羅: スコープ解放、fini、weak自動nil化、カスケード順序を一度に示せる
  • 測定可能: 明確な数値指標で他言語と比較可能

アーキテクチャ

コンポーネント

  1. Dispatcher: イベント発行者

    • リスナーをweak参照の配列で保持
    • イベント発行時に死んだリスナーを自動スキップ
  2. Listener: イベント受信者

    • 子リソースBoxを保持してツリー構造を形成
    • finiで子→自身の順で解放カスケード
  3. Scope: ライフタイム境界

    • スコープ内でリスナー生成
    • スコープ終了で一括解放

測定指標

主要メトリクス

  1. メモリピーク: 最大メモリ使用量
  2. 解放レイテンシ: スコープ終了→解放完了の時間
  3. ディスパッチ効率: イベント/秒
  4. カスケード順序確定性: 解放順序の一致率100%が理想)
  5. 残留メモリ: 解放後の残存メモリNyashは0が理想
  6. ジッタ: 各時間の分散(低いほど決定論的)

他言語との比較ポイント

  • GC言語Go/Java/JS: 解放タイミングの非決定性
  • RAII系Rust/C++: weak掃除ロジックの複雑さ
  • 手動管理C: メモリリーク・二重解放リスク

実装計画

CLI仕様

nyash-mem-bench dispatch --listeners N --events M --fanout F --depth D

パラメータ

  • N: リスナー数
  • M: イベント数
  • F: 各ノードの子数(分岐率)
  • D: ツリーの深さ

出力形式

construct_ms: 123.45
dispatch_ns_p50: 789
dispatch_ns_p99: 1234
fini_ms_avg: 45.67
fini_ms_max: 89.01
mem_peak_mb: 256.78
mem_after_fini_kb: 0
order_ok: true
weak_prune_count: 5000

実装ステップ

  1. Phase 1: 基本構造Dispatcher、Listener、Scope
  2. Phase 2: 測定機能(時間、メモリ)
  3. Phase 3: 解放順序ログ
  4. Phase 4: 統計出力・可視化

期待される成果

  • Nyashの決定論的メモリ管理の優位性を数値で証明
  • 論文用の説得力のあるベンチマーク結果
  • 他言語実装者にとってのリファレンス実装