Files
hakorune/examples/README.md
Moe Charm 25fbebd650 docs: AOT/ネイティブコンパイル情報をexecution-backends.mdに追加
- 4つ目の実行方式としてAOT(Ahead-of-Time)コンパイルを文書化
- MIR→WASM→.cwasm のコンパイルパイプラインを説明
- wasm-backend featureでのビルド方法を明記
- 現在の実装状況(完全なスタンドアロン実行ファイルはTODO)を記載
- CLAUDE.mdのWASM説明も3種類(Rust→WASM、Nyash→WASM、Nyash→AOT)に更新
- CURRENT_TASK.mdにPhase 10.9/10.10の完了項目を追加

ChatGPT5さんのAOT試行に対応した適切なドキュメント配置を実施

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 02:05:39 +09:00

58 lines
2.5 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.

# Examples Quick Start (Minimal)
このページはPhase 10.10の再起動用ミニ手順です。3つだけ確かめればOK。
- 事前ビルド: `cargo build --release -j32`
- 実行は `./target/release/nyash` を使用
## 1) HH直実行Map.get_hh
- 目的: 受け手/キーが関数パラメータのとき、JIT HostCallを許可HH経路
- 実行:
```
NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
./target/release/nyash --backend vm examples/jit_map_get_param_hh.nyash
```
- 期待: `allow id: nyash.map.get_hh` イベントが出る。戻り値は `value1`
## 2) mutating opt-inJitPolicyBox
- 目的: 既定 read_only。必要最小の書き込みだけホワイトリストで許可。
- 実行:
```
NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
./target/release/nyash --backend vm examples/jit_policy_optin_mutating.nyash
```
- 期待: 1回目は `policy_denied_mutating` でfallback、whitelist後の2回目はallow。
イベントの見やすさ(任意):
```
# コンパイル時(lower)のみ: phase="lower" が付与compileは明示opt-in
NYASH_JIT_EVENTS_COMPILE=1 NYASH_JIT_EVENTS_PATH=events.jsonl ...
# 実行時(runtime)のみ: phase="execute" が付与される
NYASH_JIT_EVENTS_RUNTIME=1 NYASH_JIT_EVENTS_PATH=events.jsonl ...
```
## 3) CountingGc デモ
- 目的: GCのカウント/トレース/バリア観測の導線確認VM経路
- 実行:
```
./target/release/nyash --backend vm examples/gc_counting_demo.nyash
```
- Tips: 詳細ログは `NYASH_GC_COUNTING=1 NYASH_GC_TRACE=2` を併用。
## 4) Policy whitelistevents分離
- 目的: read_only下でのfallback→allowwhitelistと、compile/runtimeのphase分離をイベントで確認。
- 実行(しきい値=1を明示またはDebugConfigBoxでapply後にRunnerが自動設定:
```
NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.nyash
```
- 期待: `policy_events.jsonl``phase:"lower"`(計画)と `phase:"execute"`(実績)が出る。
---
補足
- DebugConfigBoxevents/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出力先を指定可能。