feat(tvix/eval): implement DisassemblingObserver for compiler

This type implements an observer that is called whenever the compiler
emits a chunk (after the toplevel, thunks, or lambdas) and prints the
output of the disassembler to its internal writer.

This replaces half of the uses of the `disassembler` feature, which
has been removed from the Cargo configuration.

Note that at this commit runtime tracing is not yet implemented as an
observer.

Change-Id: I7894ca1ba445761aba4ad51d98e4a7b6445f1aea
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6449
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2022-09-04 16:56:20 +03:00 committed by tazjin
parent 7ae45342df
commit 8ee4d6d5db
7 changed files with 111 additions and 98 deletions

View file

@ -17,7 +17,7 @@ smol_str = "0.1"
rustyline = { version = "10.0.0", optional = true }
dirs = "4.0.0"
path-clean = "0.1"
tabwriter = { version = "1.2", optional = true }
tabwriter = "1.2"
rowan = "*" # pinned by rnix
codemap = "0.1.3"
@ -43,9 +43,6 @@ nix_tests = []
# Enables building the binary (tvix-eval REPL)
repl = [ "dep:rustyline" ]
# Enables printing compiled code and tracing the stack state at runtime.
disassembler = ["dep:tabwriter"]
[[bench]]
name = "eval"
harness = false