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
705868a8a9
* Make sure that config.h is included before the system headers,
...
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 17:55:38 +00:00
Eelco Dolstra
95f4f2cf61
* If std::tr1::unordered_set is unavailable, use std::set.
2010-10-04 16:16:19 +00:00
Eelco Dolstra
4aa9245083
* Hack needed for GCC 4.3.2 on OpenSolaris.
2010-10-04 10:51:16 +00:00
Eelco Dolstra
df50916e46
* Oops - "null" was displayed as "true".
2010-08-27 12:10:56 +00:00
Eelco Dolstra
6d6200f37a
* Optimisation in the // operator: if one of the sets is empty, return
...
the other set.
2010-08-02 16:31:05 +00:00
Eelco Dolstra
7af6a2fd71
* intersectAttrs: optimise for the case where the second set is larger
...
than the first set. (That's usually the case with callPackage.)
2010-08-02 11:54:44 +00:00
Eelco Dolstra
f16fe2af8d
* builtins.toXML: propagate the string context. This is a regression
...
from the old ATerm-based evaluator.
2010-06-10 10:29:50 +00:00
Eelco Dolstra
1ab67cf437
2010-06-02 09:43:04 +00:00
Eelco Dolstra
89865da76d
* Turn build errors during evaluation into EvalErrors.
2010-06-01 11:19:32 +00:00
Eelco Dolstra
93cd5a4a13
* The << operator on values should be const.
2010-05-18 10:36:37 +00:00
Eelco Dolstra
b2235d81d1
* Restore the __overrides feature that was lost somewhere in the
...
fast-eval branch.
2010-05-15 08:10:12 +00:00
Eelco Dolstra
bd25ac2260
* Print attributes in sorted order.
2010-05-12 12:15:49 +00:00
Eelco Dolstra
81a4b4e49b
* Implemented tryEval, the last missing primop in the fast-eval
...
branch. Also added a test for tryEval.
2010-05-12 11:23:44 +00:00
Eelco Dolstra
1a8eb6e3ec
2010-05-07 15:26:33 +00:00
Eelco Dolstra
83dfa89870
* Sync with the trunk.
2010-05-07 14:46:47 +00:00
Eelco Dolstra
01e58adce0
* Store position info for inherited attributes.
2010-05-07 12:43:57 +00:00
Eelco Dolstra
83d7b89660
* Updated addErrorContext.
2010-05-07 12:33:14 +00:00
Eelco Dolstra
e2d5e40f4f
* Keep track of the source positions of attributes.
2010-05-07 12:11:05 +00:00
Eelco Dolstra
84ce7ac76f
* Store attribute positions in the AST and report duplicate attribute
...
errors with position info.
* For all positions, use the position of the first character of the
first token, rather than the last character of the first token plus
one.
2010-05-06 16:46:48 +00:00
Eelco Dolstra
2be6118f4c
* Don't need the test program anymore.
2010-04-23 09:09:32 +00:00
Eelco Dolstra
0bc468f195
* Simplify the implementation of `with'. This gives a 7% speedup in
...
evaluating the NixOS system configuration.
2010-04-22 15:08:09 +00:00
Eelco Dolstra
ebade9ff8b
* Check for duplicate attribute names / function arguments. `make
...
check' now succeeds :-)
* An attribute set such as `{ foo = { enable = true; };
foo.port = 23; }' now parses. It was previously rejected, but I'm
too lazy to implement the check. (The only reason to reject it is
that the reverse, `{ foo.port = 23; foo = { enable = true; }; }', is
rejected, which is kind of ugly.)
2010-04-22 11:02:24 +00:00
Eelco Dolstra
2d7636529f
* String equality tests should take the context into account. All the
...
evaluation test cases now succeed.
2010-04-22 09:54:11 +00:00
Eelco Dolstra
6f0f16497a
* Fix the interpretation of ''\<character> in indented strings.
2010-04-21 16:18:27 +00:00
Eelco Dolstra
0777448ca6
* Fixed builtins.genericClosure.
2010-04-21 15:57:11 +00:00
Eelco Dolstra
fe2d869e04
* Store user environment manifests as a Nix expression in
...
$out/manifest.nix rather than as an ATerm.
(Hm, I thought I committed this two days ago...)
2010-04-21 15:08:58 +00:00
Eelco Dolstra
f3b8833a48
* Drop the dependency on the ATerm library.
2010-04-19 14:51:58 +00:00
Eelco Dolstra
efc7a579e8
* Don't use the ATerm library for parsing/printing .drv files.
2010-04-19 13:46:58 +00:00
Eelco Dolstra
55b5ddd3ca
* Added parsing of manifests in ATerm format.
2010-04-19 12:10:04 +00:00
Eelco Dolstra
5c31995bb8
* Updated some more primops.
2010-04-16 15:13:47 +00:00
Eelco Dolstra
8ca4a001cb
* Improve sharing a bit.
2010-04-16 14:03:26 +00:00
Eelco Dolstra
497e4ad126
* Remove some redundant tests.
2010-04-16 13:51:01 +00:00
Eelco Dolstra
02c1dac909
* In an nested with' where the inner with is a variable (
with ...;
...
with someVar; ...'), the contents of the variable would be
clobbered. (The attributes in the outer `with' were added to the
variable.)
2010-04-16 13:44:02 +00:00
Eelco Dolstra
04c4bd3624
* Store lists as lists of pointers to values rather than as lists of
...
values. This improves sharing and gives another speed up.
Evaluation of the NixOS system attribute is now almost 7 times
faster than the old evaluator.
2010-04-15 00:37:36 +00:00
Eelco Dolstra
e41b5828db
* Better stats.
2010-04-14 23:48:46 +00:00
Eelco Dolstra
d39d3c6264
* Implemented inherit.
2010-04-14 23:25:05 +00:00
Eelco Dolstra
267dc693d2
* Fix builtins.
2010-04-14 22:59:39 +00:00
Eelco Dolstra
81de12bc8f
* Refactoring: move variable uses to a separate class.
2010-04-14 15:14:23 +00:00
Eelco Dolstra
110d155778
* Implemented withs.
2010-04-14 15:01:04 +00:00
Eelco Dolstra
9985230c00
* After parsing, compute level/displacement pairs for each variable
...
use site, allowing environments to be stores as vectors of values
rather than maps. This should speed up evaluation and reduce the
number of allocations.
2010-04-14 14:42:32 +00:00
Eelco Dolstra
816dd3f061
* Remove more obsolete code.
2010-04-14 12:49:05 +00:00
Eelco Dolstra
85d13c8f93
* Change the semantics of "with" so that inner "withs" take
...
precedence, i.e. `with {x=1;}; with {x=2;}; x' evaluates to 2'.
This has a simpler implementation and seems more natural. There
doesn't seem to be any code in Nixpkgs or NixOS that relies on the
old behaviour.
2010-04-14 08:37:08 +00:00
Eelco Dolstra
816f9c0f6f
* Use std::tr1::unordered_set instead of std::set for the symbol
...
table. This gives a 10% speed increase on `nix-instantiate
/etc/nixos/nixos -A system --readonly-mode'.
2010-04-13 14:34:11 +00:00
Eelco Dolstra
7d47498b5e
* Evaluate lets directly (i.e. without desugaring to `rec { attrs...;
...
<let-body> = e; }.<let-body>). This prevents the unnecessary
allocation of an attribute set.
2010-04-13 13:42:25 +00:00
Eelco Dolstra
ac1e8f40d4
* Use a symbol table to represent identifiers and attribute names
...
efficiently. The symbol table ensures that there is only one copy
of each symbol, thus allowing symbols to be compared efficiently
using a pointer equality test.
2010-04-13 12:25:42 +00:00
Eelco Dolstra
10e8b1fd15
* Finished the ATerm-less parser.
2010-04-12 23:33:23 +00:00