snix/tvix/eval/src
Vincent Ambo 5d73c06b1a refactor(tvix/eval): use im::Vector for NixList representation
This is a persistent, structurally sharing data structure which is
more efficient in some of our use-cases. I have verified the
efficiency improvement using `hyperfine` repeatedly over expressions
on nixpkgs.

Lists are not the most performance-critical structure in Nix (that
would be attribute sets), but we can already see a small (~5-10%)
improvement.

Note that there are a handful of cases where we still go via `Vec`
that need to be fixed, most notable for `builtins.sort` which can not
currently be implemented directly using `im::Vector` because of a
restrictive type bound.

Change-Id: I237cc50cbd7629a046e5a5e4601fbb40355e551d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7670
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-12-29 12:27:59 +00:00
..
builtins refactor(tvix/eval): use im::Vector for NixList representation 2022-12-29 12:27:59 +00:00
compiler fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
tests fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
value refactor(tvix/eval): use im::Vector for NixList representation 2022-12-29 12:27:59 +00:00
chunk.rs fix(tvix/eval): remove impl PartialEq for Value 2022-11-04 00:30:13 +00:00
errors.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
io.rs feat(tvix/eval): use EvalIO::import_path when coercing paths 2022-12-21 22:59:18 +00:00
lib.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
nix_search_path.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
observer.rs feat(tvix/eval): initial attempt at setting lambda names 2022-10-23 15:58:53 +00:00
opcode.rs fix(tvix/eval): change ordinary (//) to rustdoc-comments (///) 2022-11-05 22:07:42 +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 feat(tvix/eval): fancy-format parse errors returned by rnix 2022-10-08 17:27:57 +00:00
spans.rs refactor(tvix/eval): add a LightSpan type for lighter span tracking 2022-12-21 22:21:25 +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
vm.rs refactor(tvix/eval): use im::Vector for NixList representation 2022-12-29 12:27:59 +00:00
warnings.rs feat(tvix/eval): add configuration of Nix search path to public API 2022-12-21 13:23:38 +00:00