tvl-depot/tvix
Vincent Ambo fea7f90a7f fix(tvix/eval): thread Display & PartialEq through to thunk values
If a thunk is already evaluated, there are cases where due to the
memoisation implementation something might observe a value wrapped in
a thunk.

In these cases, the implementation of `Display` and `PartialEq` must
delegate to the underlying value.

Note that there are a handful of other cases like these which we need
to cover.

It is a little tricky to write integration tests for these directly,
especially as some of the open-upvalue optimisations coming down the
pipe will reduce the number of observable thunks.

One test that covers a part of this behaviour is currently
disabled (needs some more machinery), but it's being brought back in
the next commits.

Change-Id: Iaa8cd338c12236af844bbc99d8cec2205f0d0095
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6370
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-09-07 19:08:56 +00:00
..
.vscode feat(tvix): set up cargo rust project 2022-01-06 15:38:52 +00:00
docs style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
eval fix(tvix/eval): thread Display & PartialEq through to thunk values 2022-09-07 19:08:56 +00:00
nix_cli chore(tvix/nix_cli): add default.nix 2022-08-30 11:03:48 +00:00
proto style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
.envrc feat(tvix): set up cargo rust project 2022-01-06 15:38:52 +00:00
.gitignore feat(tvix): set up cargo rust project 2022-01-06 15:38:52 +00:00
LICENSE chore(tvix): Bootstrap Tvix folder 2021-03-27 00:09:49 +00:00
OWNERS chore(tvix): Bootstrap Tvix folder 2021-03-27 00:09:49 +00:00
README.md chore(tvix): Bootstrap Tvix folder 2021-03-27 00:09:49 +00:00

Tvix

For more information about Tvix, contact one of the project owners. We are interested in people who would like to help us review designs, brainstorm and describe requirements that we may not yet have considered.

License structure

All code implemented for Tvix is licensed under the GPL-3.0, with the exception of the protocol buffer definitions used for communication between services which are available under a more permissive license (MIT).

The idea behind this structure is that any direct usage of our code (e.g. linking to it, embedding the evaluator, etc.) will fall under the terms of the GPL3, but users are free to implement their own components speaking these protocols under the terms of the MIT license.