tvl-depot/tvix/eval/src/value
Adam Joseph c91d86ee5c feat(tvix/eval): NixList::concat(): avoid an unnecessary move
In `a++b`, the previous implementation would move `b` (i.e. memcpy
its elements) twice.  Let's do that only once.

We sure do call NixList.clone() a whole lot.  At some point in the
future we probably want to do a SmolStr-type split for NixList into
a two-variant enum where one side is an Rc<Vec<Value>> for lists
longer than a certain length.

Signed-off-by: Adam Joseph <adam@westernsemico.com>
Change-Id: I32154d18785a1f663454a8b9d4afd3e78bffdf9c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7040
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2022-10-19 10:37:30 +00:00
..
attrs feat(tvix/eval): Initial resolution of <...> paths 2022-10-10 20:23:41 +00:00
arbitrary.rs refactor(tvix/eval): Encapsulate Value::Attrs construction 2022-10-08 19:02:25 +00:00
attrs.rs feat(nix/eval): Implement builtins.functionArgs 2022-10-17 11:29:49 +00:00
builtin.rs refactor(tvix/eval): builtins now contain closures 2022-10-06 15:22:32 +00:00
function.rs feat(tvix/eval): Validate closed formals 2022-10-17 11:29:49 +00:00
list.rs feat(tvix/eval): NixList::concat(): avoid an unnecessary move 2022-10-19 10:37:30 +00:00
mod.rs feat(tvix/eval): Record formals on lambda 2022-10-17 11:29:49 +00:00
path.rs refactor(tvix/eval): factor out all calls to canon_path 2022-10-13 09:07:47 +00:00
string.rs feat(tvix/eval): Record formals on lambda 2022-10-17 11:29:49 +00:00
thunk.rs fix(tvix/eval): Actually trace spans for thunks 2022-10-10 23:51:09 +00:00