Does all the things the Janet-based parser does, but could have some warts around the edges, like less-pretty or useful error messages.
Functions as a drop-in replacement for the Janet-based interpreter, possibly with a few improvements here and there.
Everything is in place to ditch the Janet-based interpreter and move everything over to Rust.
The Rust-based interpreter is going to be way faster than the Janet-based interpreter. But we want Ludus to be a reasonably fast language, and I don't think a tree-walk situation will get us there. So this includes the "low-hanging fruit" optimizations, such as: bytecode-based VM; opportunistic mutation; tuples on the stack; interning strings and keywords; using spans and indexes instead of Strings everywhere.