tvl-depot/tvix
Adam Joseph 0649474206 fix(tvix/eval): remove impl PartialEq for Value
It isn't possible to implement PartialEq properly for Value, because
any sensible implementation needs to force() thunks, which cannot be
done without a `&mut VM`.

The existing derive(PartialEq) has false negatives, which caused the
bug which cl/7142 fixed.  Fortunately that bug was easy to find, but
a silent false negative deep within the bowels of nixpkgs could be a
real nightmare to hunt down.

Let's just remove the PartialEq impl for Value, and the other
derive(PartialEq)'s that depend on it.

Signed-off-by: Adam Joseph <adam@westernsemico.com>
Change-Id: Iacd3726fefc7fc1edadcd7e9b586e04cf8466775
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7144
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2022-11-04 00:30:13 +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): remove impl PartialEq for Value 2022-11-04 00:30:13 +00:00
nix_cli chore(tvix/nix_cli): build with tests 2022-09-11 14:31:10 +00:00
proto chore(tvix/proto/castore.proto): drop Blob and Chunk 2022-11-02 11:48:35 +00:00
verify-lang-tests feat(tvix/eval): Implement comparison for lists 2022-10-29 10:45:51 +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(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

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.