tvl-depot/tvix
Vincent Ambo 878dc6c227 fix(tvix/eval): aggressively fix a borrow error in nix_eq
When comparing Nix values for equality, an issue can occur where
recursive values contain thunks to themselves which causes borrow
errors when forcing them for comparison later down the line.

To work around this we clone the values for now. There might be some
optimisations possible like checking for thunk equality directly and
short-circuiting on that (we have to check what Nix does).

Change-Id: I7e75c992ea68f100058f52b4b46168da7d671994
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7314
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2022-11-21 15:26:56 +00:00
..
.vscode chore(tvix): fix vscode rust-analyzer recommendation 2022-10-15 16:54:28 +00:00
docs docs(tvix): Update components.md 2022-09-16 11:55:57 +00:00
eval fix(tvix/eval): aggressively fix a borrow error in nix_eq 2022-11-21 15:26:56 +00:00
nix_cli feat(tvix/eval): move shell.nix and .envrc to //tvix 2022-11-11 19:55:12 +00:00
proto chore(tvix/proto/castore.proto) rename *Node.{ref->digest} 2022-11-08 17:57:53 +00:00
verify-lang-tests test(tvix/eval): add a test case for groupBy with thunks 2022-11-04 01:46:27 +00:00
.envrc feat(tvix/eval): move shell.nix and .envrc to //tvix 2022-11-11 19:55:12 +00:00
.gitignore feat(tvix/): .gitignore target folders 2022-11-11 19:55:12 +00:00
LICENSE chore(tvix): Bootstrap Tvix folder 2021-03-27 00:09:49 +00:00
OWNERS chore(gerrit): migrate OWNERS files to code-owners style 2022-09-19 11:13:28 +00:00
README.md chore(tvix): Bootstrap Tvix folder 2021-03-27 00:09:49 +00:00
shell.nix feat(tvix/eval): move shell.nix and .envrc to //tvix 2022-11-11 19:55:12 +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.