Files
hakorune/docs/private/papers/paper-b-nyash-execution-model/main-paper-jp.md

48 lines
3.0 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言語と実行モデル——BoxFirst設計と二系統実行PyVM/LLVM
著者: Nyash Project
要旨
NyashはBoxFirst設計Everything is Boxを採用し、birth/init/pack↔finiの対称的メモリ管理、プラグインABI、そして実行系の二系統PyVM/LLVMで開発・配布を成り立たせる。本稿ではPhase15での現実的な運用範囲として、PyVM意味論基準とLLVMPHI合成・AOT/EXEに評価を絞り、Boxモデルと実行責務の分担設計を示す。
## 1. はじめに
Boxを言語の第一級抽象として採用し、型・所有・リソース・ABIを単一のメンタルモデルで統一する。設計の簡素さを保ちながら現実的な配布物を得るため、実装コストの高い経路JIT/InterpreterはPhase15では補助に留め、PyVM/LLVMの二系統を強化した。
## 2. 言語設計BoxFirst
- Boxモデル: 値・モジュール・リソースの統一表現
- 対称メモリ: birth/init/pack と fini による決定的解放将来GCオン/オフ両立へ拡張可能)
- プラグインABI: TypeBox/BIDFFI`docs/reference/plugin-system/`)での安定相互運用
- 例外と修飾子(将来含む): Block + Modifier の方向性(詳細は別稿)
## 3. 実行モデル(二系統)
- PyVM基準: 短絡やtruthy規約を含む意味論確認。仕様差検出・パリティ基盤
- LLVM配布: AOT/EXE生成、PHI合成、IRダンプ/トレース
- 責務分担:
- MIRはPHIoff合流はエッジコピー
- LLVMがブロック先頭でPHI合成typed incoming
- PyVMは意味論の参照実装、LLVMは配布物と性能の源泉
## 4. ケーススタディ
- 文字列/配列/MapなどのBoxメソッドBoxCallでの一貫API
- プラグイン連携(ファイル/パス等とABI境界の単純化
- 短絡・分岐合流でのパリティPyVM=意味, LLVM=PHI合成確認
## 5. 評価計画v0
- パリティ: `tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/CASE.nyash`
- 性能: LLVM実行時間/起動時間/メモリPyVMは意味論sanity
- トレース: `NYASH_LLVM_TRACE_PHI=1`, `NYASH_LLVM_DUMP_IR=...`
## 6. 関連研究
OOP/Actor/Capability/Plugin指向設計と実行系LLVM/JVM/WASMとの比較。Nyashの特徴は「BoxFirst × 実行責務の分離PyVM=意味, LLVM=生成)」にある。
## 7. 結論
BoxFirst設計と二系統実行の分担により、複雑性を爆発させずに言語の実働ラインを維持できた。次段階ではLoopFormやJITの再統合を段階的に検討する。
### 再現手順
- LLVMハーネス: `NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/tests/CASE.nyash`
- パリティ: `tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/CASE.nyash`
- ビルドPDF: `tools/papers/build.sh b-jp`
### キーワード
BoxFirst, 実行モデル, PHI合成, LLVM, PyVM, プラグインABI