about summary refs log tree commit diff
path: root/tvix
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2022-08-25T15·00-0400
committergrfn <grfn@gws.fyi>2022-08-25T16·01+0000
commitf648cec78e9115527e4c135a9e3f7083abe9e5be (patch)
treebb655137caf5d112efdfd6c2a04da3fc855f21c7 /tvix
parent63a0cc83d13ebce3ae17c45778c4f25e831f1b7b (diff)
feat(tvix/eval): Expose interpret + related types from lib r/4488
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 <tazjin@tvl.su>
Tested-by: BuildkiteCI
Autosubmit: grfn <grfn@gws.fyi>
Diffstat (limited to 'tvix')
-rw-r--r--tvix/eval/src/lib.rs14
-rw-r--r--tvix/eval/src/main.rs13
2 files changed, 15 insertions, 12 deletions
diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs
new file mode 100644
index 000000000000..75cd246424bb
--- /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 a8e2bea64725..41d9ed36bd5d 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),
     }