1.5 KiB
1.5 KiB
Self‑Hosting Dev (JIT / VM)
Focus: Ny → MIR → MIR‑Interp → VM/JIT quick loops to validate semantics and bootstrap paths.
Quickstart
- Core build (JIT):
cargo build --release --features cranelift-jit
- Core smokes (plugins disabled):
NYASH_CLI_VERBOSE=1 ./tools/jit_smoke.sh
- Roundtrip (parser pipe + json):
./tools/ny_roundtrip_smoke.sh
- Plugins smoke (optional gate):
NYASH_SKIP_TOML_ENV=1 ./tools/smoke_plugins.sh
- Using/Resolver E2E sample (optional):
./tools/using_e2e_smoke.sh(requires--enable-using)
- Bootstrap c0→c1→c1' (optional):
./tools/bootstrap_selfhost_smoke.sh
Docs
- One‑page guide:
docs/self-hosting.md
Flags
NYASH_DISABLE_PLUGINS=1: stabilize core pathNYASH_LOAD_NY_PLUGINS=1: enable nyash.toml ny_pluginsNYASH_ENABLE_USING=1: using/namespace enableNYASH_SKIP_TOML_ENV=1: suppress [env] mapping in nyash.toml
Tips
- For debug, set
NYASH_CLI_VERBOSE=1. - Keep temp artifacts under this folder (
dev/selfhosting/_tmp/) to avoid polluting repo root.
Dev Loop (Ny-only)
- One-off run (VM):
./tools/dev_selfhost_loop.sh apps/selfhost-minimal/main.nyash - Watch + std libs:
./tools/dev_selfhost_loop.sh --watch --std apps/selfhost/ny-parser-nyash/main.nyash - Make targets:
make dev(VM, std on, verbose)make dev-watch(watch mode)
Notes
- Rebuild Rust only when core changes; Ny scripts reload on each run.
- Flags:
--backend mir|vm,-vfor verbose,--stdto load[ny_plugins].