about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2010-11-16 * Sync with the trunk.Eelco Dolstra25-437/+643
2010-10-29 * Document Boehm GC support.Eelco Dolstra1-1/+1
2010-10-29 * Set libgc's initial heap size to 384 MiB to prevent garbageEelco Dolstra1-0/+12
collection in most cases (and therefore its performance overhead).
2010-10-28 * new(UseGC) is inexplicably slower than GC_MALLOC, so prefer theEelco Dolstra1-4/+4
latter.
2010-10-28 * Handle out of memory condition.Eelco Dolstra5-10/+28
2010-10-24 * When allocating an attribute set, reserve enough space for allEelco Dolstra4-28/+21
elements. This prevents the vector from having to resize itself.
2010-10-24 * Keep attribute sets in sorted order to speed up attribute lookups.Eelco Dolstra11-146/+184
* Simplify the representation of attributes in the AST. * Change the behaviour of listToAttrs() in case of duplicate names.
2010-10-24 * Don't create thunks for variable lookups (if possible). ThisEelco Dolstra3-23/+60
significantly reduces the number of values allocated (e.g. from 8.7m to 4.9m for the Bittorrent test).
2010-10-24 * Store attribute sets as a vector instead of a map (i.e. a red-blackEelco Dolstra7-90/+129
tree). This saves a lot of memory. The vector should be sorted so that names can be looked up using binary search, but this is not the case yet. (Surprisingly, looking up attributes using linear search doesn't have a big impact on performance.) Memory consumption for $ nix-instantiate /etc/nixos/nixos/tests -A bittorrent.test --readonly-mode on x86_64-linux with GC enabled is now 185 MiB (compared to 946 MiB on the trunk).
2010-10-23 * Fix compiling without Boehm.Eelco Dolstra1-10/+8
* Fix the stats.
2010-10-23 * Optimise string constants by putting them in the symbol table.Eelco Dolstra4-39/+55
2010-10-23 * Make Value smaller by not storing redundant PrimOp info.Eelco Dolstra2-25/+44
* Clear pointers in Values after overwriting them to make sure that no objects are kept alive unnecessarily.
2010-10-23 * Remove allocValues().Eelco Dolstra4-36/+14
2010-10-22 * In environments, store pointers to values rather than values. ThisEelco Dolstra2-35/+25
improves GC effectiveness a bit more (because a live value doesn't keep other values in the environment plus the parent environments alive), and removes the need for copy nodes.
2010-10-22 * Store Value nodes outside of attribute sets. I.e., Attr now storesEelco Dolstra15-130/+150
a pointer to a Value, rather than the Value directly. This improves the effectiveness of garbage collection a lot: if the Value is stored inside the set directly, then any live pointer to the Value causes all other attributes in the set to be live as well.
2010-10-22 * Make building against the Boehm GC a configure option.Eelco Dolstra5-14/+29
2010-10-20 * Keep some more stats.Eelco Dolstra2-0/+12
2010-10-20 * Use the Boehm garbage collector to reclaim unused memory in the NixEelco Dolstra5-15/+29
expression evaluator.
2010-10-14 * Wrap deleteFromStore() in a transaction. Otherwise there might be aEelco Dolstra2-8/+13
race with other processes that add new referrers to a path, resulting in the garbage collector crashing with "foreign key constraint failed". (Nix/4) * Make --gc --print-dead etc. interruptible.
2010-10-04 * Make sure that config.h is included before the system headers,Eelco Dolstra12-29/+29
because it defines _FILE_OFFSET_BITS. Without this, on OpenSolaris the system headers define it to be 32, and then the 32-bit stat() ends up being called with a 64-bit "struct stat", or vice versa. This also ensures that we get 64-bit file sizes everywhere. * Remove the redundant call to stat() in parseExprFromFile(). The file cannot be a symlink because that's the exit condition of the loop before.
2010-10-04 * If std::tr1::unordered_set is unavailable, use std::set.Eelco Dolstra1-0/+9
2010-10-04 * Sync with the trunk.Eelco Dolstra4-4/+12
2010-10-04 * In printMsg(), ignore failing writes to stderr if we're in anEelco Dolstra1-1/+10
exception handler, otherwise throw an exception. We need to ignore write errors in exception handlers to ensure that cleanup code runs to completion if the other side of stderr has been closed unexpectedly.
2010-10-04 * Hack needed for GCC 4.3.2 on OpenSolaris.Eelco Dolstra1-1/+1
2010-09-14 * Doh. Remove debug message.Eelco Dolstra1-1/+0
2010-09-01 * Only do "pragma journal_mode = ..." if the current journal modeEelco Dolstra1-1/+10
differs from the desired mode. There is an open SQLite ticket `Executing "PRAGMA journal_mode" may delete journal file while it is in use.'
2010-08-31 * Always print hook output on stderr, even if --no-build-output isEelco Dolstra1-4/+12
set. * In the build hook, print a trace message to allow Hydra to pick up the name of the remote machine used for the build.
2010-08-31 `nix-store --verify' improvements:Eelco Dolstra3-20/+62
* If a path has disappeared, check its referrers first, and don't try to invalidate paths that have valid referrers. Otherwise we get a foreign key constraint violation. * Read the whole Nix store directory instead of statting each valid path, which is slower. * Acquire the global GC lock.
2010-08-30 * When using the build hook, distinguish between the stderr of theEelco Dolstra6-26/+39
hook script proper, and the stdout/stderr of the builder. Only the latter should be saved in /nix/var/log/nix/drvs. * Allow the verbosity to be set through an option. * Added a flag --quiet to lower the verbosity level.
2010-08-30 * Disable the GC reachability check for now (when creating new roots),Eelco Dolstra1-1/+1
as it's hopelessly inefficient.
2010-08-27 * Experimental feature: allow a derivation to tell the build hook thatEelco Dolstra3-2/+26
it requires a certain feature on the build machine, e.g. requiredSystemFeatures = [ "kvm" ]; We need this in Hydra to make sure that builds that require KVM support are forwarded to machines that have KVM support. Probably this should also be enforced for local builds.
2010-08-27 * Oops - "null" was displayed as "true".Eelco Dolstra1-1/+1
2010-08-25 * Made the build hook mechanism more efficient. Rather than startingEelco Dolstra1-203/+187
the hook every time we want to ask whether we can run a remote build (which can be very often), we now reuse a hook process for answering those queries until it accepts a build. So if there are N derivations to be built, at most N hooks will be started.
2010-08-24 * Don't complain if the stored hash of a path is zero (unknown).Eelco Dolstra1-2/+3
2010-08-24 * Handle the unlikely case where a derivation has no dependencies atEelco Dolstra1-1/+4
all.
2010-08-24 * Sync with the trunk.Eelco Dolstra3-1/+7
2010-08-12 * Make --cores work when building through the Nix daemon.Eelco Dolstra3-1/+7
2010-08-04 * Sync with the trunk.Eelco Dolstra12-21/+62
2010-08-04 * Use SQLite 3.7.0's write-ahead logging (WAL mode). This is a lotEelco Dolstra1-2/+12
faster than the old mode when fsyncs are enabled, because it only performs an fsync() when doing a checkpoint, rather than at every commit. Some timings for doing a "nix-instantiate /etc/nixos/nixos -A system" after modifying the stdenv setup script: 42.5s - SQLite 3.6.23 with truncate mode and fsync 3.4s - SQLite 3.6.23 with truncate mode and no fsync 32.1s - SQLite 3.7.0 with truncate mode and fsync 16.8s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint every 1000 pages 8.3s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint every 8192 pages 1.7s - SQLite 3.7.0 with WAL mode and no fsync The default is now to use WAL mode with fsyncs. Because WAL doesn't work on remote filesystems such as NFS (as it uses shared memory), truncate mode can be re-enabled by setting the "use-sqlite-wal" option to false.
2010-08-04 * Remove "auto" and "guess" as synonyms for 0 in the handling ofEelco Dolstra1-14/+3
build-cores and --cores. They're superfluous and just complicate the parsing.
2010-08-04 * Allow derivations to hint that they should not be built remotelyEelco Dolstra1-23/+39
using the build hook mechanism, by setting the derivation attribute "preferLocalBuild" to true. This has a few use cases: - The user environment builder. Since it just creates a bunch of symlinks without much computation, there is no reason to do it remotely. In fact, doing it remotely requires the entire closure of the user environment to be copied to the remote machine, which is extremely wasteful. - `fetchurl'. Performing the download on a remote machine and then copying it to the local machine involves twice as much network traffic as performing the download locally, and doesn't save any CPU cycles on the local machine.
2010-08-04 * Set the default system filter to "*". This ensures that (forEelco Dolstra1-7/+13
instance) "nix-env -i wine" works on x86_64-linux, even though Wine is built on i686-linux. In the event that there are multiple matching derivations, prefer those built for the current system.
2010-08-02 * Optimisation in the // operator: if one of the sets is empty, returnEelco Dolstra1-6/+8
the other set.
2010-08-02 * intersectAttrs: optimise for the case where the second set is largerEelco Dolstra1-7/+7
than the first set. (That's usually the case with callPackage.)
2010-07-15 src/bsdiff-4.3/Makefile.am: include the 'compat-include' directory in ↵Peter Simons1-0/+2
distribution tarballs
2010-06-24 Fix build of bsdiff-4.3 on machines that don't have <err.h>, such as Solaris.Peter Simons2-1/+13
2010-06-24 src/libutil/util.cc: include <limit.h> to ensure that PATH_MAX is definedPeter Simons1-0/+1
2010-06-24 Include <cstring> to ensure that strcpy(), strlen(), and memset() are declared.Peter Simons3-0/+6
An "using namespace std" was added locally in those functions that refer to names from <cstring>. That is not pretty, but it's a very portable solution, because strcpy() and friends will be found in both the 'std' and in the global namespace.
2010-06-23 Added support for passing an (impure) NIX_BUILD_CORES variable to build ↵Peter Simons4-0/+23
expressions. This patch adds the configuration file variable "build-cores" and the command line argument "--cores". These settings specify the number of CPU cores to utilize for parallel building within a job, i.e. by passing an appropriate "-j" flag to GNU Make. The default value is 1, which means that parallel building is *disabled*. If the number of build cores is specified as 0 (synonymously: "guess" or "auto"), then the actual value is supposed to be auto-detected by builders at run-time, i.e by calling the nproc(1) utility from coreutils. The environment variable $NIX_BUILD_CORES is available to builders, but the contents of that variable does *not* influence the hash that goes into the $out store path, i.e. the number of build cores to be utilized can be changed at will without requiring any re-builds.
2010-06-21 * Okay, putting a lock on the temporary directory used by importPath()Eelco Dolstra2-6/+20
doesn't work because the garbage collector doesn't actually look at locks. So r22253 was stupid. Use addTempRoot() instead. Also, locking the temporary directory in exportPath() was silly because it isn't even in the store.