Eelco Dolstra
d5d4dcd4c9
* Allow attribute names to be strings. Based on the
...
allow-arbitrary-strinsg-in-names patch by Marc Weber.
2011-07-13 15:53:24 +00:00
Eelco Dolstra
0a623a10c7
* Allow a default value in attribute selection by writing
...
x.y.z or default
(as originally proposed in
https://mail.cs.uu.nl/pipermail/nix-dev/2009-September/002989.html ).
For instance, an expression like
stdenv.lib.attrByPath ["features" "ckSched"] false args
can now be written as
args.features.ckSched or false
2011-07-13 12:19:57 +00:00
Eelco Dolstra
2b9e29b1c8
* Change the right-hand side of the ‘.’ operator from an attribute to
...
an attribute path. This is a refactoring to support default values.
2011-07-06 12:28:57 +00:00
Eelco Dolstra
5637037802
* In the ‘?’ operator, allow attribute paths. For instance, you can
...
write ‘attrs ? a.b’ to test whether ‘attrs’ has an attribute ‘a’
containing an attribute ‘b’. This is more convenient than ‘attrs ?
a && attrs.a ? b’.
Slight change in the semantics: it's no longer an error if the
left-hand side of ‘?’ is not an attribute set. In that case it just
returns false. So, ‘null ? foo’ no longer throws an error.
2011-07-06 10:58:17 +00:00
Ludovic Courtès
5c9e9f732d
Add support for the build-timeout' and
--timeout' options.
2011-06-30 15:19:13 +00:00
Eelco Dolstra
8c69dac8a1
* Handle error messages from the Nix worker containing the `%'
...
character. (Nix/216)
2011-04-19 10:44:44 +00:00
Eelco Dolstra
4ba6afaf48
* nix-env -ub' (
--prebuilt-only') didn't really work because it
...
checked too soon whether substitutes are available. That is, it did
so for every available package, rather than those matching installed
packages. This was very slow and subject to assertion failures. So
do the check much later. Idem for `nix-env -qab' and `nix-env -ib'.
2011-04-11 16:27:05 +00:00
Eelco Dolstra
538b7caab0
* Don't allocate a big initial GC address space on machines with
...
little RAM. Even if the memory isn't actually used, it can cause
problems with the overcommit heuristics in the kernel. So use a VM
space of 25% of RAM, up to 384 MB.
2011-02-10 14:31:04 +00:00
Eelco Dolstra
5a6b039802
* Don't call GC_expand_hp unless we're actually using the garbage
...
collector.
2011-02-09 22:59:50 +00:00
Ludovic Courtès
f1462c208b
Use $BDW_GC_LIBS instead of a custom variable.
2011-02-09 21:23:13 +00:00
Eelco Dolstra
543988572e
* Sync with the trunk.
2011-02-09 12:25:53 +00:00
Eelco Dolstra
aeae0beba4
* Clang compatibility fix. Clang actually checks template definitions
...
when they are defined
2011-02-05 16:29:10 +00:00
Ludovic Courtès
3854fc9b42
Remove useless <config.h> inclusion from public header.
2011-01-14 13:55:58 +00:00
Eelco Dolstra
9db190eb31
* builtins.substring: if "start" is beyond the end of the string,
...
return the empty string.
2011-01-14 12:47:10 +00:00
Eelco Dolstra
c931a7aec5
* Do a short sleep after SQLITE_BUSY.
2010-12-17 17:23:15 +00:00
Eelco Dolstra
b1eb252172
* Propagate the "100" exit status for failed builds through the Nix
...
daemon.
2010-12-17 11:28:26 +00:00
Eelco Dolstra
3dd02580e3
* I forgot to catch SQLiteBusy in registerValidPaths(). So
...
registerValidPaths() now handles busy errors and registerValidPath()
is simply a wrapper around it.
2010-12-14 13:25:20 +00:00
Eelco Dolstra
d787285af9
* nix-instantiate: return exit status 100 to denote a permanent build
...
failure. The build hook can use this to distinguish between
transient and permanent failures on the remote side.
2010-12-13 16:53:23 +00:00
Eelco Dolstra
5833243c92
* Create /nix/var/nix/db if it's missing.
2010-12-13 13:42:34 +00:00
Eelco Dolstra
100becf8d1
* createDirs(path): if path already exists, make sure it's a
...
directory.
* Provide a C++ wrapper around lstat().
2010-12-13 13:32:58 +00:00
Eelco Dolstra
d7ca6f44eb
* Update some comments.
2010-12-13 13:19:46 +00:00
Eelco Dolstra
e4720b1a79
* Ignore the result of sqlite3_reset().
2010-12-08 18:19:15 +00:00
Eelco Dolstra
8062d3af30
* `nix-store --verify --check-contents': don't hold the global GC lock
...
while checking the contents, since this operation can take a very
long time to finish. Also, fill in missing narSize fields in the DB
while doing this.
2010-12-06 15:29:38 +00:00
Eelco Dolstra
de79d23f76
* Retry a transaction if SQLite returns SQLITE_BUSY. This can happen
...
even with a very long busy timeout, because SQLITE_BUSY is also
returned to resolve deadlocks. This should get rid of random
"database is locked" errors. This is kind of hard to test though.
* Fix a horrible bug in deleteFromStore(): deletePathWrapped() should
be called after committing the transaction, not before, because the
commit might not succeed.
2010-12-05 18:23:19 +00:00
Eelco Dolstra
77f7a6d591
* Quick hack around one of the pathological cases in bsdiff
...
(namely, when there is a long region of 0s). On one 86 MiB
case, this cut patch generation time from 44m to 2m.
2010-11-29 17:07:04 +00:00
Eelco Dolstra
703e5a2ce2
* Sync with the trunk.
2010-11-25 14:09:13 +00:00
Eelco Dolstra
812fae424e
* DrvInfo contains pointers to expressions, so DrvInfos should be
...
traced by the garbage collector. Otherwise "nix-env -u" can crash
randomly.
2010-11-25 13:47:34 +00:00
Eelco Dolstra
bdf089f463
* Before a build, show the disk space that the downloaded store paths
...
will approximately require.
2010-11-17 14:31:42 +00:00
Eelco Dolstra
e60c962fb8
* Add an operation `nix-store -q --size'.
2010-11-17 12:40:52 +00:00
Eelco Dolstra
1db6259076
* Implement RemoteStore::queryPathInfo().
2010-11-17 12:08:01 +00:00
Eelco Dolstra
a3883cbd28
* Store the size of a store path in the database (to be precise, the
...
size of the NAR serialisation of the path, i.e., `nix-store --dump
PATH'). This is useful for Hydra.
2010-11-16 17:11:46 +00:00
Eelco Dolstra
fb9368b5a0
* Sync with the trunk.
2010-11-16 12:49:47 +00:00
Eelco Dolstra
26def5392f
* Document Boehm GC support.
2010-10-29 14:44:02 +00:00
Eelco Dolstra
14fbf85380
* Set libgc's initial heap size to 384 MiB to prevent garbage
...
collection in most cases (and therefore its performance overhead).
2010-10-29 13:11:50 +00:00
Eelco Dolstra
0c4828ea05
* new(UseGC) is inexplicably slower than GC_MALLOC, so prefer the
...
latter.
2010-10-28 12:50:01 +00:00
Eelco Dolstra
e11e6fb1c6
* Handle out of memory condition.
2010-10-28 12:29:40 +00:00
Eelco Dolstra
43535499f3
* When allocating an attribute set, reserve enough space for all
...
elements. This prevents the vector from having to resize itself.
2010-10-24 20:09:37 +00:00
Eelco Dolstra
e0b7fb8f27
* Keep attribute sets in sorted order to speed up attribute lookups.
...
* Simplify the representation of attributes in the AST.
* Change the behaviour of listToAttrs() in case of duplicate names.
2010-10-24 19:52:33 +00:00
Eelco Dolstra
2dc6d50941
* Don't create thunks for variable lookups (if possible). This
...
significantly reduces the number of values allocated (e.g. from 8.7m
to 4.9m for the Bittorrent test).
2010-10-24 14:20:02 +00:00
Eelco Dolstra
0b305c534f
* Store attribute sets as a vector instead of a map (i.e. a red-black
...
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-24 00:41:29 +00:00
Eelco Dolstra
a247d20604
* Fix compiling without Boehm.
...
* Fix the stats.
2010-10-23 22:58:24 +00:00
Eelco Dolstra
b2ba62170c
* Optimise string constants by putting them in the symbol table.
2010-10-23 21:11:59 +00:00
Eelco Dolstra
8ac06726b9
* Make Value smaller by not storing redundant PrimOp info.
...
* Clear pointers in Values after overwriting them to make sure that no
objects are kept alive unnecessarily.
2010-10-23 20:07:47 +00:00
Eelco Dolstra
3f66cfb96b
* Remove allocValues().
2010-10-23 18:18:07 +00:00
Eelco Dolstra
4dee289550
* In environments, store pointers to values rather than values. This
...
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 15:51:52 +00:00
Eelco Dolstra
41c45a9b31
* Store Value nodes outside of attribute sets. I.e., Attr now stores
...
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 14:47:42 +00:00
Eelco Dolstra
64c3325b0b
* Make building against the Boehm GC a configure option.
2010-10-22 13:39:15 +00:00
Eelco Dolstra
76feaf016a
* Keep some more stats.
2010-10-20 15:48:00 +00:00
Eelco Dolstra
e879a0371b
* Use the Boehm garbage collector to reclaim unused memory in the Nix
...
expression evaluator.
2010-10-20 11:38:30 +00:00
Eelco Dolstra
64fd29855a
* Wrap deleteFromStore() in a transaction. Otherwise there might be a
...
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-14 15:55:51 +00:00