tvl-depot/tvix/eval/src
sterni 8adc9c56f2 docs(tvix): document when pointer equality is preserved in C++ Nix
This explicitly documents behavior of C++ Nix that goes against the
intuition you'd gather from this document: that e.g. a simple select
from an attribute set causes a value to no longer be pointer equal to
its former self.

The point of documenting this is that we can show in a to be written
section on the use of pointer equality in nixpkgs that pointer equality
is only needed in a limited sense for evaluating it (C++ Nix's exterior
pointer equality). Tvix's pointer equality is far more powerful since
value identity preserving operations also preserve pointer equality,
generally speaking (this is because we implement interior pointer
equality in my made up terminology). This should eventually also be
documented.

Change-Id: I6ce7ef2d67b012f5ebc92f9e81bba33fb9dce7d0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8856
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-07-11 16:17:42 +00:00
..
builtins feat(tvix/eval): allow extending builtins outside of tvix_eval 2023-06-22 20:19:06 +00:00
compiler fix(tvix/eval): use realpaths for import cache 2023-06-21 07:48:52 +00:00
tests docs(tvix): document when pointer equality is preserved in C++ Nix 2023-07-11 16:17:42 +00:00
value fix(tvix/eval): use byte, not codepoint index for slicing in escape 2023-07-11 16:11:40 +00:00
vm chore(tvix/eval/vm): drop unused import 2023-06-30 12:42:59 +00:00
chunk.rs feat(tvix/eval): implement Chunk::extend method 2023-05-25 11:28:13 +00:00
errors.rs fix(tvix/eval): allow negative substring lengths 2023-06-12 08:38:49 +00:00
io.rs refactor(tvix/eval): stop borrowing &mut self 2023-05-25 11:11:59 +00:00
lib.rs feat(tvix/eval): add Evaluation::strict to toggle top-level deepseq 2023-03-22 13:44:20 +00:00
nix_search_path.rs refactor(tvix/eval): use &Path instead of PathBuf 2023-05-22 09:43:33 +00:00
observer.rs chore(tvix): Generator{Request|Response} -> VM{Request|Response} 2023-03-14 09:22:22 +00:00
opcode.rs fix(tvix/eval): only finalise formal arguments if defaulting 2023-06-20 10:07:44 +00:00
pretty_ast.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
properties.rs refactor(tvix/eval): Don't (ab)use PartialEq for Nix equality 2022-09-18 22:03:41 +00:00
source.rs chore(tvix/eval): implement std::error::Error for tvix_eval::Error 2023-01-02 22:24:43 +00:00
spans.rs refactor(tvix/eval): implement From<Span> for LightSpan 2023-03-04 15:18:37 +00:00
systems.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
test_utils.rs test(tvix/eval): Add proof-of-concept test for Chunk 2022-09-18 17:55:06 +00:00
upvalues.rs fix(tvix/eval): remove impl PartialEq for Value 2022-11-04 00:30:13 +00:00
warnings.rs fix(tvix/eval): emit only warnings on shadowed outputs 2023-06-11 20:59:34 +00:00