nix-super/src/libutil
Eelco Dolstra 48662d151b
Reduce substitution memory consumption
copyStorePath() now pipes the output of srcStore->narFromPath()
directly into dstStore->addToStore(). The sink used by the former is
converted into a source usable by the latter using
boost::coroutine2. This is based on [1].

This reduces the maximum resident size of

  $ nix build --store ~/my-nix/ /nix/store/b0zlxla7dmy1iwc3g459rjznx59797xy-binutils-2.28.1 --substituters file:///tmp/binary-cache-xz/ --no-require-sigs

from 418592 KiB to 53416 KiB. (The previous commit also reduced the
runtime from ~4.2s to ~3.4s, not sure why.) A further improvement will
be to download files into a Sink.

[1] https://github.com/NixOS/nix/compare/master...Mathnerd314:dump-fix-coroutine#diff-dcbcac55a634031f9cc73707da6e4b18

Issue #1969.
2018-03-16 20:35:59 +01:00
..
affinity.cc printMsg(lvlError, ...) -> printError(...) etc. 2016-09-21 16:54:53 +02:00
affinity.hh Run the daemon worker on the same CPU as the client 2013-08-07 14:02:04 +02:00
archive.cc builtins.fetchgit: Support importing a working tree 2017-10-30 19:59:25 +01:00
archive.hh builtins.fetchgit: Support importing a working tree 2017-10-30 19:59:25 +01:00
args.cc nix: Respect -I, --arg, --argstr 2017-10-24 12:58:34 +02:00
args.hh nix: Respect -I, --arg, --argstr 2017-10-24 12:58:34 +02:00
compression.cc decompress(): Use a Source and Sink 2018-03-16 20:35:59 +01:00
compression.hh decompress(): Use a Source and Sink 2018-03-16 20:35:59 +01:00
config.cc Config::handleUnknownSettings(): Remove unused 'fatal' argument 2018-02-19 14:00:34 +01:00
config.hh Config::handleUnknownSettings(): Remove unused 'fatal' argument 2018-02-19 14:00:34 +01:00
finally.hh Add missing #include 2016-11-07 14:35:47 +01:00
hash.cc Catch more possible instances of passing NULL to memcpy. 2018-03-14 23:53:43 -04:00
hash.hh builtins.fetchgit: Support importing a working tree 2017-10-30 19:59:25 +01:00
istringstream_nocopy.hh Move istringstream_nocopy to a separate file 2017-03-21 14:43:03 +01:00
json.cc nix search: Add a cache 2017-07-26 17:29:10 +02:00
json.hh nix search: Add a cache 2017-07-26 17:29:10 +02:00
lazy.hh Figure out the user's home directory if $HOME is not set 2017-05-05 17:08:23 +02:00
local.mk Reduce substitution memory consumption 2018-03-16 20:35:59 +01:00
logging.cc Filter ANSI colors when not writing to a terminal 2018-03-15 16:08:07 +01:00
logging.hh Wrap thread local in function for Cygwin 2018-03-12 00:56:41 -04:00
lru-cache.hh Fix double free in Store::queryPathInfo() 2018-03-09 14:19:51 +01:00
monitor-fd.hh monitor-fds: Fix on macOS. 2018-02-14 18:26:37 -05:00
pool.hh RemoteStore: Add option to drop old connections from the pool 2017-09-14 18:10:38 +02:00
ref.hh Allow setting the state directory as a store parameter 2016-06-02 16:02:48 +02:00
serialise.cc Reduce substitution memory consumption 2018-03-16 20:35:59 +01:00
serialise.hh Reduce substitution memory consumption 2018-03-16 20:35:59 +01:00
sync.hh Include missing <cstdlib> for abort() 2017-08-03 07:03:22 +10:00
thread-pool.cc Fix a hang in ThreadPool 2017-10-09 15:41:09 +02:00
thread-pool.hh Fix a hang in ThreadPool 2017-10-09 15:41:09 +02:00
types.hh Progress indicator: Show number of active items 2017-08-16 20:56:03 +02:00
util.cc decompress(): Use a Source and Sink 2018-03-16 20:35:59 +01:00
util.hh decompress(): Use a Source and Sink 2018-03-16 20:35:59 +01:00
xml-writer.cc OCD: foreach -> C++11 ranged for 2015-07-17 20:13:56 +02:00
xml-writer.hh And another one 2014-02-26 18:55:18 +01:00