about summary refs log tree commit diff
path: root/src/libexpr/eval.hh
AgeCommit message (Collapse)AuthorFilesLines
2010-10-23 * Make Value smaller by not storing redundant PrimOp info.Eelco Dolstra1-9/+23
* Clear pointers in Values after overwriting them to make sure that no objects are kept alive unnecessarily.
2010-10-23 * Remove allocValues().Eelco Dolstra1-1/+0
2010-10-22 * In environments, store pointers to values rather than values. ThisEelco Dolstra1-9/+1
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 Dolstra1-2/+5
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 Dolstra1-0/+6
2010-10-20 * Keep some more stats.Eelco Dolstra1-0/+3
2010-10-20 * Use the Boehm garbage collector to reclaim unused memory in the NixEelco Dolstra1-1/+4
expression evaluator.
2010-10-04 * Make sure that config.h is included before the system headers,Eelco Dolstra1-2/+2
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 * Hack needed for GCC 4.3.2 on OpenSolaris.Eelco Dolstra1-1/+1
2010-06-10 * builtins.toXML: propagate the string context. This is a regressionEelco Dolstra1-0/+2
from the old ATerm-based evaluator.
2010-05-18 * The << operator on values should be const.Eelco Dolstra1-1/+1
2010-05-15 * Restore the __overrides feature that was lost somewhere in theEelco Dolstra1-1/+2
fast-eval branch.
2010-05-07 * Keep track of the source positions of attributes.Eelco Dolstra1-1/+10
2010-04-22 * Simplify the implementation of `with'. This gives a 7% speedup inEelco Dolstra1-0/+1
evaluating the NixOS system configuration.
2010-04-22 * String equality tests should take the context into account. All theEelco Dolstra1-1/+1
evaluation test cases now succeed.
2010-04-21 * Fixed builtins.genericClosure.Eelco Dolstra1-1/+1
2010-04-21 * Store user environment manifests as a Nix expression inEelco Dolstra1-1/+10
$out/manifest.nix rather than as an ATerm. (Hm, I thought I committed this two days ago...)
2010-04-16 * Updated some more primops.Eelco Dolstra1-0/+1
2010-04-15 * Store lists as lists of pointers to values rather than as lists ofEelco Dolstra1-2/+2
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-14 * Better stats.Eelco Dolstra1-1/+3
2010-04-14 * Fix builtins.Eelco Dolstra1-0/+9
2010-04-14 * Refactoring: move variable uses to a separate class.Eelco Dolstra1-1/+1
2010-04-14 * After parsing, compute level/displacement pairs for each variableEelco Dolstra1-8/+8
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 * Change the semantics of "with" so that inner "withs" takeEelco Dolstra1-2/+0
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-13 * Evaluate lets directly (i.e. without desugaring to `rec { attrs...;Eelco Dolstra1-0/+1
<let-body> = e; }.<let-body>). This prevents the unnecessary allocation of an attribute set.
2010-04-13 * Use a symbol table to represent identifiers and attribute namesEelco Dolstra1-3/+13
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-12 * Don't use ATerms for the abstract syntax trees anymore. NotEelco Dolstra1-13/+33
finished yet.
2010-04-09 * Keep more statistics about stack space usage.Eelco Dolstra1-4/+12
* Reduce stack space usage.
2010-04-07 * Update autoCallFunction() and findAlongAttrPath().Eelco Dolstra1-28/+6
2010-04-07 * Implemented the primops necessary for generating the NixOS manual.Eelco Dolstra1-7/+14
2010-04-01 * Improve sharing.Eelco Dolstra1-0/+7
2010-04-01 * Make `derivation' lazy again for performance. It also turns outEelco Dolstra1-0/+8
that there are some places in Nixpkgs (php_configurable / composableDerivation, it seems) that call `derivation' with incorrect arguments (namely, the `name' attribute missing) but get away with it because of laziness.
2010-03-31 * Handle string contexts. `nix-instantiate' can now correctly computeEelco Dolstra1-0/+1
the `firefoxWrapper' attribute in Nixpkgs, and it's about 3 times faster than the trunk :-)
2010-03-31 * Cache parse trees to prevent repeated parsing of imported NixEelco Dolstra1-0/+2
expressions.
2010-03-31 * Implemented derivations.Eelco Dolstra1-2/+7
2010-03-30 * More primops.Eelco Dolstra1-1/+2
2010-03-30 * More operators / primops.Eelco Dolstra1-14/+4
2010-03-30 * More primops.Eelco Dolstra1-4/+6
2010-03-30 * More primops.Eelco Dolstra1-0/+4
2010-03-30 * Implemented `map'.Eelco Dolstra1-1/+12
2010-03-30 * Make `import' work.Eelco Dolstra1-14/+24
2010-03-29 * Started integrating the new evaluator.Eelco Dolstra1-10/+142
2009-05-12 * Allow unsafe (unspecified) comparisons between attrsets unlessEelco Dolstra1-0/+2
NIX_NO_UNSAFE_EQ is set, for now.
2007-01-13 * Memoize strict evaluation.Eelco Dolstra1-2/+1
2006-10-16 * Big cleanup of the semantics of paths, strings, contexts, stringEelco Dolstra1-7/+16
concatenation and string coercion. This was a big mess (see e.g. NIX-67). Contexts are now folded into strings, so that they don't cause evaluation errors when they're not expected. The semantics of paths has been clarified (see nixexpr-ast.def). toString() and coerceToString() have been merged. Semantic change: paths are now copied to the store when they're in a concatenation (and in most other situations - that's the formalisation of the meaning of a path). So "foo " + ./bla evaluates to "foo /nix/store/hash...-bla", not "foo /path/to/current-dir/bla". This prevents accidental impurities, and is more consistent with the treatment of derivation outputs, e.g., `"foo " + bla' where `bla' is a derivation. (Here `bla' would be replaced by the output path of `bla'.)
2006-09-22 * Builtin function `add' to add integers.Eelco Dolstra1-0/+1
* Put common test functions in tests/lang/lib.nix.
2006-09-04 * Use a proper namespace.Eelco Dolstra1-4/+12
* Optimise header file usage a bit. * Compile the parser as C++.
2006-08-30 * Okay, that's a bit harder than expected.Eelco Dolstra1-2/+5
2006-08-24 * Refactoring: move strictEval to libexpr.Eelco Dolstra1-0/+4
2006-07-28 * `nix-instantiate ... --arg NAME VALUE': allow arguments to be passedEelco Dolstra1-3/+3
to functions from the command line. * nix-build: started removing backticks.