* WIP: sync before merging origin/main * fix: unify using/module + build CLI; add missing helper in runner; build passes; core smokes green; jit any.len string now returns 3 * Apply local changes after merging main; keep docs/phase-15 removed per main; add phase-15.1 docs and tests * Remove legacy docs/phase-15/README.md to align with main * integration: add Core-13 pure CI, tests, and minimal LLVM execute bridge (no docs) (#125) Co-authored-by: Tomoaki <tomoaki@example.com> --------- Co-authored-by: Selfhosting Dev <selfhost@example.invalid> Co-authored-by: Tomoaki <tomoaki@example.com>
1.2 KiB
1.2 KiB
Developer Quickstart
This quickstart summarizes the most common build/run/test flows when working on Nyash.
See also
- Self‑hosting one‑pager:
docs/self-hosting.md
Build
- VM/JIT (Cranelift):
cargo build --release --features cranelift-jit - LLVM AOT:
LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix) cargo build --release --features llvm
Run
- Quick VM run:
./target/release/nyash --backend vm apps/APP/main.nyash - LLVM emit+link helper:
tools/build_llvm.sh apps/APP/main.nyash -o app
Smokes
- End‑to‑end LLVM smokes:
./tools/llvm_smoke.sh release- Use env toggles like
NYASH_LLVM_VINVOKE_RET_SMOKE=1
- Use env toggles like
Syntax Sugar (Phase 12.7)
- Control via env:
NYASH_SYNTAX_SUGAR_LEVEL=none|basic|full - Or via
nyash.toml:[syntax] sugar_level = "none" # or "basic" / "full"
MIR Migration Notes
- Implementation currently enforces Core‑15 during migration with tests in place.
- Core‑13 is the final minimal kernel target. The final flip documentation is tracked under:
docs/development/roadmap/mir/core-13/step-50/.
Testing
- Rust unit tests:
cargo test - Targeted: e.g., tokenizer/sugar config
cargo test --lib sugar_basic_test -- --nocapture