An interpreter & toolkit for Nova programs
- Rust 99.7%
- Shell 0.3%
| examples | ||
| src | ||
| .gitignore | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| glossary.md | ||
| grammar.nv | ||
| issues.md | ||
| nova.grammar.nv | ||
| README.md | ||
| watch.sh | ||
Rova
A Nova interpreter in Rust.
Syntax
Currently, it's mostly the January syntax, with the exception of the dot symbol for stack repeating.
Usage
Build with Cargo, or download from the releases page. Then,
rova examples/00-helloworld.nv -o
With the -o parameter, rova will display the final stacks after the program has halted.
There are a number of other ways to run it; see rova --help.
Project goals
I made these goals in summer 2025. They're mostly still valid, but they need a refresher.
Primary Goals
- Infrastructure for Nova dev tooling. Tracing, modeling, ruleset manipulation.
- A multitool for working with different flavors and formats of Nova.
- A personal playground that I'm familiar with. (I = Mary)
Secondary goals
- Experimentation in low-resource environments.
- Computation with non-text media.
- A library to bring Nova to Rust codebases.
Maybe in the future but not yet
- A candidate for an interpreter or compiler running in embedded contexts (Pico, Arduino, etc).
- Compiler to WASM.
Anticipated functionality (NYI)
These are features that might further the above goals.
- Reply mode: a nova REPL
- Review mode: nova ruleset analysis