nix-super/src/libcmd
pennae 1fe66852ff reduce the size of Env by one pointer
since `up` and `values` are both pointer-aligned the type field will
also be pointer-aligned, wasting 48 bits of space on most machines. we
can get away with removing the type field altogether by encoding some
information into the `with` expr that created the env to begin with,
reducing the GC load for the absolutely massive amount of single-entry
envs we create for lambdas. this reduces memory usage of system eval by
quite a bit (reducing heap size of our system eval from 8.4GB to 8.23GB)
and gives similar savings in eval time.

running `nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'`

before:

  Time (mean ± σ):      5.576 s ±  0.003 s    [User: 5.197 s, System: 0.378 s]
  Range (min … max):    5.572 s …  5.581 s    10 runs

after:

  Time (mean ± σ):      5.408 s ±  0.002 s    [User: 5.019 s, System: 0.388 s]
  Range (min … max):    5.405 s …  5.411 s    10 runs
2023-12-30 18:55:13 +01:00
..
built-path.cc use std::tie() for macro-generated operators 2023-12-19 19:32:16 +01:00
built-path.hh Merge pull request #6236 from obsidiansystems/store-dir-config 2023-12-01 15:38:14 +01:00
command-installable-value.cc Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
command-installable-value.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
command.cc Improve the error message for “multicommands” commands (#9510) 2023-12-06 13:13:45 +00:00
command.hh Improve the error message for “multicommands” commands (#9510) 2023-12-06 13:13:45 +00:00
common-eval-args.cc Document each store type on its own page 2023-12-01 01:27:52 +01:00
common-eval-args.hh libcmd: lookupFileArg(): add baseDir 2023-11-07 13:24:01 -05:00
editor-for.cc Split up util.{hh,cc} 2023-11-05 12:20:02 -05:00
editor-for.hh Merge remote-tracking branch 'upstream/master' into source-path 2023-04-17 11:41:50 +02:00
installable-attr-path.cc Fixing #7479 2023-08-18 11:44:00 -04:00
installable-attr-path.hh Split up util.{hh,cc} 2023-11-05 12:20:02 -05:00
installable-derived-path.cc Fixing #7479 2023-08-18 11:44:00 -04:00
installable-derived-path.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
installable-flake.cc remove lazy-pos forceValue 2023-12-19 19:32:16 +01:00
installable-flake.hh Rename 'resolvedRef' to 'lockedRef' 2023-07-03 12:23:57 +02:00
installable-value.cc Organize content addressing, use SourceAccessor with Store::addToStore 2023-12-18 10:41:54 -05:00
installable-value.hh Make more string values work as installables 2023-05-15 09:03:38 -04:00
installables.cc Move restricted/pure-eval access control out of the evaluator and into the accessor 2023-11-30 16:16:17 +01:00
installables.hh Split up util.{hh,cc} 2023-11-05 12:20:02 -05:00
legacy.cc Move command plugin interface to libnixcmd 2021-01-26 06:22:24 -05:00
legacy.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
local.mk Use buildprefix in a few more places 2023-11-29 19:49:07 -05:00
markdown.cc Split up util.{hh,cc} 2023-11-05 12:20:02 -05:00
markdown.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
nix-cmd.pc.in Fix building with GCC 9 2023-02-10 18:38:57 +01:00
repl.cc reduce the size of Env by one pointer 2023-12-30 18:55:13 +01:00
repl.hh Clean up SearchPath 2023-07-09 23:22:22 -04:00