- Fix condition_fn resolution: Value call path + dev safety + stub injection - VM bridge: handle Method::birth via BoxCall; ArrayBox push/get/length/set direct bridge - Receiver safety: pin receiver in method_call_handlers to avoid undefined use across blocks - Local vars: materialize on declaration (use init ValueId; void for uninit) - Prefer legacy BoxCall for Array/Map/String/user boxes in emit_box_or_plugin_call (stability-first) - Test runner: update LLVM hint to llvmlite harness (remove LLVM_SYS_180_PREFIX guidance) - Docs/roadmap: update CURRENT_TASK with unified default-ON + guards Note: NYASH_DEV_BIRTH_INJECT_BUILTINS=1 can re-enable builtin birth() injection during migration.
Self‑Hosting Apps (Ny‑only)
Purpose
- Keep self‑hosting Ny scripts isolated from general
apps/noise. - Enable fast inner loop without touching Rust unless necessary.
Conventions
- Entry scripts live under this folder; prefer minimal dependencies.
- Use
--using-path apps/selfhost:appswhen resolving modules. - Prefer VM (
--backend vm) for speed and stability.
Quickstart
- Run minimal sample:
make dev(usesapps/selfhost-minimal/main.nyash) - Watch changes:
make dev-watch - Run parser Ny project:
./tools/dev_selfhost_loop.sh --std -v --backend vm -- apps/selfhost/ny-parser-nyash/main.nyash
Guidelines
- Keep files small and composable; avoid cross‑project coupling.
- If moving an existing
apps/*item here, update docs/scripts accordingly. - For namespace usage, pass
--using-path apps/selfhost:apps.