lix/src/libexpr
Théophane Hufschmitt 390269ed87 Simplify the handling of the hash modulo
Rather than having four different but very similar types of hashes, make
only one, with a tag indicating whether it corresponds to a regular of
deferred derivation.

This implies a slight logical change: The original Nix+multiple-outputs
model assumed only one hash-modulo per derivation. Adding
multiple-outputs CA derivations changed this as these have one
hash-modulo per output. This change is now treating each derivation as
having one hash modulo per output.
This obviously means that we internally loose the guaranty that
all the outputs of input-addressed derivations have the same hash
modulo. But it turns out that it doesn’t matter because there’s nothing
in the code taking advantage of that fact (and it probably shouldn’t
anyways).

The upside is that it is now much easier to work with these hashes, and
we can get rid of a lot of useless `std::visit{ overloaded`.

Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
2022-03-29 18:17:35 +02:00
..
flake Document getFlake 2022-03-25 14:19:55 +01:00
primops Only provide builtin.{getFlake,fetchClosure} is the corresponding experimental feature is enabled 2022-03-25 14:04:18 +01:00
attr-path.cc Implement a suggestions mechanism 2022-03-07 10:09:09 +01:00
attr-path.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
attr-set.cc Remove EvalState::mkAttrs() 2022-01-04 20:29:17 +01:00
attr-set.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
common-eval-args.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
common-eval-args.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
eval-cache.cc Decode string context straight to using StorePaths 2022-03-18 15:36:11 +00:00
eval-cache.hh Create some type aliases for string Contexts 2022-03-11 22:30:10 +00:00
eval-inline.hh add HAVE_BOEHMGC guards to batched allocation functions 2022-03-09 00:18:50 +01:00
eval.cc Only provide builtin.{getFlake,fetchClosure} is the corresponding experimental feature is enabled 2022-03-25 14:04:18 +01:00
eval.hh Fix mismatched tag warning on clang 2022-03-25 15:22:22 +01:00
fetchurl.nix Move <nix/fetchurl.nix> into the nix binary 2020-12-22 14:43:20 +01:00
function-trace.cc Revert the enum struct change 2020-06-18 22:11:26 +00:00
function-trace.hh Hide FunctionCallTrace constructor/destructor 2020-01-05 16:21:34 +01:00
get-drvs.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
get-drvs.hh nix-env: always print output names in JSON and XML 2022-03-16 21:26:19 +01:00
imported-drv-to-derivation.nix Move some corepkgs into the nix binary 2020-03-11 16:57:48 +01:00
json-to-value.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
json-to-value.hh return string_views from forceString* 2022-01-27 17:15:43 +01:00
lexer.l lexer: add error location to lexer errors 2022-03-24 08:16:14 +00:00
local.mk Merge pull request #5175 from Pamplemousse/make 2021-08-30 12:44:29 +02:00
nix-expr.pc.in pkg-config files: Use c++17 2019-03-14 14:11:12 +01:00
nixexpr.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nixexpr.hh make Pos smaller 2022-03-08 23:30:18 +01:00
parser.y Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
primops.cc Simplify the handling of the hash modulo 2022-03-29 18:17:35 +02:00
primops.hh Only provide builtin.{getFlake,fetchClosure} is the corresponding experimental feature is enabled 2022-03-25 14:04:18 +01:00
symbol-table.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
value-to-json.cc Support range-based for loop over list values 2021-11-25 16:31:39 +01:00
value-to-json.hh toJSON: report error position for fancier output 2021-10-25 21:17:52 +00:00
value-to-xml.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
value-to-xml.hh toXML: display errors position 2021-11-13 20:33:34 -05:00
value.hh Don't hide repeated values while generating manifest.nix 2022-03-22 13:18:56 +01:00