- nyash.tomlからすべての.so拡張子を削除 - plugin_loader_v2のresolve_library_pathが自動的に適切な拡張子を追加 - Linux: .so - Windows: .dll - macOS: .dylib - クロスプラットフォーム対応の準備完了
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-in(JitPolicyBox)
- 目的: 既定 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 whitelist(events分離)
- 目的: read_only下でのfallback→allow(whitelist)と、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"(実績)が出る。
補足
- 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出力先を指定可能。