From f648cec78e9115527e4c135a9e3f7083abe9e5be Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Thu, 25 Aug 2022 11:00:05 -0400 Subject: [PATCH] feat(tvix/eval): Expose interpret + related types from lib Add a new `lib.rs` to tvix/eval, which `pub use`s the `interpret` function, and all types mentioned in its return type, and then uses *this* instead of direct `mod` statements in the `main.rs` to implement the entrypoints to the interpreter. This is in preparation for calling these functions from integrated benchmarking infrastructure using Criterion, though other things (like integration tests) might want to do that as well. Change-Id: I7b585134a96b1c56a2ac64d2036b0e51d321bd27 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6155 Reviewed-by: tazjin Tested-by: BuildkiteCI Autosubmit: grfn --- tvix/eval/src/lib.rs | 14 ++++++++++++++ tvix/eval/src/main.rs | 13 +------------ 2 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 tvix/eval/src/lib.rs diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs new file mode 100644 index 000000000..75cd24642 --- /dev/null +++ b/tvix/eval/src/lib.rs @@ -0,0 +1,14 @@ +mod chunk; +mod compiler; +mod errors; +mod eval; +mod opcode; +mod value; +mod vm; + +#[cfg(test)] +mod tests; + +pub use crate::errors::EvalResult; +pub use crate::eval::interpret; +pub use crate::value::Value; diff --git a/tvix/eval/src/main.rs b/tvix/eval/src/main.rs index a8e2bea64..41d9ed36b 100644 --- a/tvix/eval/src/main.rs +++ b/tvix/eval/src/main.rs @@ -4,17 +4,6 @@ use std::{ mem, process, }; -mod chunk; -mod compiler; -mod errors; -mod eval; -mod opcode; -mod value; -mod vm; - -#[cfg(test)] -mod tests; - fn main() { let mut args = env::args(); if args.len() > 2 { @@ -50,7 +39,7 @@ fn run_prompt() { } fn run(code: String) { - match eval::interpret(&code) { + match tvix_eval::interpret(&code) { Ok(result) => println!("=> {} :: {}", result, result.type_of()), Err(err) => eprintln!("{}", err), }