📚 Phase 12: Nyashスクリプトプラグインシステム設計と埋め込みVM構想
## 主な成果 - Nyashスクリプトでプラグイン作成可能という革命的発見 - C ABI制約の分析と埋め込みVMによる解決策 - MIR/VM/JIT層での箱引数サポートの詳細分析 ## ドキュメント作成 - Phase 12基本構想(README.md) - Gemini/Codex先生の技術分析 - C ABIとの整合性問題と解決策 - 埋め込みVM実装ロードマップ - 箱引数サポートの技術詳細 ## 重要な洞察 - 制約は「リンク時にC ABI必要」のみ - 埋め込みVMでMIRバイトコード実行により解決可能 - Nyashスクリプト→C ABIプラグイン変換が実現可能 Everything is Box → Everything is Plugin → Everything is Possible!
This commit is contained in:
@ -55,3 +55,26 @@ NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
|
||||
- DebugConfigBox(events/stats/dump/dot)と GcConfigBox は Box から `apply()` で環境へ反映できます。
|
||||
- `--emit-cfg path.dot` または `DebugConfigBox.setPath("jit_dot", path)` でCFGのDOT出力。いずれもdumpを自動有効化。
|
||||
- イベントは `phase` フィールドで区別(lower/execute)。`jit_events_path` でJSONL出力先を指定可能。
|
||||
|
||||
## 5) AOT最小手順(--compile-native)
|
||||
- 目的: Craneliftでオブジェクトを生成し、`libnyrt` とリンクしてEXE化。
|
||||
- 事前: `cargo build --release --features cranelift-jit`
|
||||
- 実行例(String/Integer/Consoleの最小):
|
||||
```
|
||||
./target/release/nyash --compile-native examples/aot_min_string_len.nyash -o app && ./app
|
||||
# 結果は `Result: <val>` として標準出力に表示
|
||||
```
|
||||
- Python最小チェーン(RO):
|
||||
```
|
||||
./target/release/nyash --compile-native examples/aot_py_min_chain.nyash -o app && ./app
|
||||
```
|
||||
- スクリプト版(詳細な手順): `tools/build_aot.sh <file> -o <out>`(Windowsは `tools/build_aot.ps1`)
|
||||
|
||||
## 6) Scheduler(Phase 10.6b 準備)
|
||||
- 目的: 協調スケジューラのSafepoint連携を観測
|
||||
- 実行(デモ):
|
||||
```
|
||||
NYASH_SCHED_DEMO=1 NYASH_SCHED_POLL_BUDGET=2 \
|
||||
./target/release/nyash --backend vm examples/scheduler_demo.nyash
|
||||
```
|
||||
- 期待: `[SCHED] immediate task ran at safepoint` と `[SCHED] delayed task ran at safepoint` が出力
|
||||
|
||||
Reference in New Issue
Block a user