Files
hakorune/examples/README.md
nyash-codex d7805e5974 feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions
Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization.

Changes:
1. PatternPipelineContext:
   - Added loop_condition: Option<ASTNode>
   - Added loop_body: Option<Vec<ASTNode>>
   - Added loop_update_summary: Option<LoopUpdateSummary>
   - Updated build_pattern_context() for Pattern 3

2. CarrierUpdateInfo:
   - Added then_expr: Option<ASTNode>
   - Added else_expr: Option<ASTNode>
   - Updated analyze_loop_updates() with None defaults

Status: Phase 213-2 Steps 2-2 & 2-3 complete
Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
2025-12-10 00:01:53 +09:00

81 lines
3.5 KiB
Markdown
Raw Permalink 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/hakorune` を使用
## 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/hakorune --backend vm examples/jit_map_get_param_hh.hako
```
- 期待: `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/hakorune --backend vm examples/jit_policy_optin_mutating.hako
```
- 期待: 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/hakorune --backend vm examples/gc_counting_demo.hako
```
- 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/hakorune --backend vm examples/jit_policy_whitelist_demo.hako
```
- 期待: `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出力先を指定可能。
## 5) AOT最小手順--compile-native
- 目的: Craneliftでオブジェクトを生成し、`libnyrt` とリンクしてEXE化。
- 事前: `cargo build --release --features cranelift-jit`
- 実行例String/Integer/Consoleの最小:
```
./target/release/hakorune --compile-native examples/aot_min_string_len.hako -o app && ./app
# 結果は `Result: <val>` として標準出力に表示
```
- Python最小チェーンRO:
```
./target/release/hakorune --compile-native examples/aot_py_min_chain.hako -o app && ./app
```
- スクリプト版(詳細な手順): `tools/build_aot.sh <file> -o <out>`Windowsは `tools/build_aot.ps1`
## 6) SchedulerPhase 10.6b 準備)
- 目的: 協調スケジューラのSafepoint連携を観測
- 実行(デモ):
```
NYASH_SCHED_DEMO=1 NYASH_SCHED_POLL_BUDGET=2 \
./target/release/hakorune --backend vm examples/scheduler_demo.hako
```
- 期待: `[SCHED] immediate task ran at safepoint``[SCHED] delayed task ran at safepoint` が出力