aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/eval.hh
AgeCommit message (Collapse)Author
2010-04-22* Simplify the implementation of `with'. This gives a 7% speedup inEelco Dolstra
evaluating the NixOS system configuration.
2010-04-22* String equality tests should take the context into account. All theEelco Dolstra
evaluation test cases now succeed.
2010-04-21* Fixed builtins.genericClosure.Eelco Dolstra
2010-04-21* Store user environment manifests as a Nix expression inEelco Dolstra
$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 Dolstra
2010-04-15* Store lists as lists of pointers to values rather than as lists ofEelco Dolstra
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 Dolstra
2010-04-14* Fix builtins.Eelco Dolstra
2010-04-14* Refactoring: move variable uses to a separate class.Eelco Dolstra
2010-04-14* After parsing, compute level/displacement pairs for each variableEelco Dolstra
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 Dolstra
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 Dolstra
<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 Dolstra
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 Dolstra
finished yet.
2010-04-09* Keep more statistics about stack space usage.Eelco Dolstra
* Reduce stack space usage.
2010-04-07* Update autoCallFunction() and findAlongAttrPath().Eelco Dolstra
2010-04-07* Implemented the primops necessary for generating the NixOS manual.Eelco Dolstra
2010-04-01* Improve sharing.Eelco Dolstra
2010-04-01* Make `derivation' lazy again for performance. It also turns outEelco Dolstra
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 Dolstra
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 Dolstra
expressions.
2010-03-31* Implemented derivations.Eelco Dolstra
2010-03-30* More primops.Eelco Dolstra
2010-03-30* More operators / primops.Eelco Dolstra
2010-03-30* More primops.Eelco Dolstra
2010-03-30* More primops.Eelco Dolstra
2010-03-30* Implemented `map'.Eelco Dolstra
2010-03-30* Make `import' work.Eelco Dolstra
2010-03-29* Started integrating the new evaluator.Eelco Dolstra
2009-05-12* Allow unsafe (unspecified) comparisons between attrsets unlessEelco Dolstra
NIX_NO_UNSAFE_EQ is set, for now.
2007-01-13* Memoize strict evaluation.Eelco Dolstra
2006-10-16* Big cleanup of the semantics of paths, strings, contexts, stringEelco Dolstra
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 Dolstra
* Put common test functions in tests/lang/lib.nix.
2006-09-04* Use a proper namespace.Eelco Dolstra
* Optimise header file usage a bit. * Compile the parser as C++.
2006-08-30* Okay, that's a bit harder than expected.Eelco Dolstra
2006-08-24* Refactoring: move strictEval to libexpr.Eelco Dolstra
2006-07-28* `nix-instantiate ... --arg NAME VALUE': allow arguments to be passedEelco Dolstra
to functions from the command line. * nix-build: started removing backticks.
2006-07-26* Refactoring: get the selection path stuff out of getDerivations()Eelco Dolstra
and put it into a separate function findAlongAttrPath().
2006-07-19* Better error messages (especially wrt types).Eelco Dolstra
2006-05-02* Optimise null-ary term builders. Also declare all term builderEelco Dolstra
functions as pure, which might improve performance a bit.
2006-05-01* Allow string concatenations involving derivations, e.g.,Eelco Dolstra
configureFlags = "--with-freetype2-library=" + freetype + "/lib";
2006-03-23* In `nix-env', look for derivations inside attribute sets that haveEelco Dolstra
the `recurseForDerivations' attribute set to `true'.
2006-03-10* `nix-env -qa --description' shows human-readable descriptions ofEelco Dolstra
packages (provided that they have a `meta.description' attribute). E.g., $ ./src/nix-env/nix-env -qa --description gcc gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for sparc-linux) gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for mips-linux) gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for arm-linux) gcc-4.0.2 GNU Compiler Collection, 4.0.x
2006-03-09* Big speedup (factor > 2.5) in all nix-env operations that do actualEelco Dolstra
instantiation, e.g. "nix-env -i" and "nix-env -qas" (but not "nix-env -qa"). It turns out that many redundant calls to addToStore(path) were made, which reads and hashes the entire path. For instance, the bash bootstrap binary in Nixpkgs would be read and hashed many times. As a result nix-env would spend around 92% of its time in the function sha256_block (according to callgrind). Some simple memoization fixes this.
2006-03-08* Some refactoring of the exception handling code so that we can catchEelco Dolstra
Nix expression assertion failures.
2005-07-25* Added a list concatenation operator:Eelco Dolstra
[1 2 3] ++ [4 5 6] => [1 2 3 4 5 6]
2004-10-25* Allow certain operations to succeed even if we don't have writeEelco Dolstra
permission to the Nix store or database. E.g., `nix-env -qa' will work, but `nix-env -qas' won't (the latter needs DB access). The option `--readonly-mode' forces this mode; otherwise, it's only activated when the database cannot be opened.
2004-08-04* Allow primops with more that 1 arguments.Eelco Dolstra
2004-02-04* Use a map to lookup primops.Eelco Dolstra
* Various performance improvements in the evaluator. * Do not link against unused (and missing!) libraries (-lsglr, etc.).
2003-11-19* Refactoring: put the Nix expression evaluator in its own library soEelco Dolstra
that it can be used by multiple programs.