snix/tvix/eval/src/value
Vincent Ambo 80713f207e refactor(tvix/eval): encapsulate all thunk-forcing logic in module
The VM previously took care of repeatedly forcing a thunk until it
reached an evaluated state. This logic is now encapsulated inside of
the `Thunk::force` implementation.

In addition, force no longer returns a reference to the value by
default, leaving it up to callers to decide whether they want to
borrow the value or not (a helper is provided for this).

Change-Id: I2aa7da922058ad1c57fbf8bfc7785aab7971c02b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6365
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-09-07 15:25:59 +00:00
..
attrs refactor(tvix/value): ensure internal attrs representation is hidden 2022-08-25 12:07:30 +00:00
attrs.rs refactor(tvix/eval): avoid cloning in NixAttrs::update if possible 2022-09-03 13:19:48 +00:00
builtin.rs fix(tvix/eval): address all current clippy lints 2022-09-03 00:47:58 +00:00
function.rs refactor(tvix/eval): introduce UpvalueCarrier trait 2022-09-06 14:58:52 +00:00
list.rs feat(tvix/eval): implement builtins.catAttrs 2022-09-02 12:59:23 +00:00
mod.rs feat(tvix/eval): introduce Value::Thunk variant 2022-09-06 14:58:52 +00:00
string.rs feat(tvix/eval): implement upvalue resolution in with scopes 2022-09-04 17:40:10 +00:00
thunk.rs refactor(tvix/eval): encapsulate all thunk-forcing logic in module 2022-09-07 15:25:59 +00:00