about summary refs log tree commit diff
path: root/src/libexpr/nixexpr.cc
AgeCommit message (Collapse)AuthorFilesLines
2004-02-16 * Inherited attributes in recursive attribute sets are in scope of theEelco Dolstra1-4/+11
non-inherited attributes.
2004-02-04 * Use a map to lookup primops.Eelco Dolstra1-2/+21
* Various performance improvements in the evaluator. * Do not link against unused (and missing!) libraries (-lsglr, etc.).
2004-02-03 * Verify that all variables in a Nix expression are defined.Eelco Dolstra1-12/+63
2004-02-02 * Added syntactic sugar to the construction of attribute sets toEelco Dolstra1-4/+6
`inherit' variables from the surrounding lexical scope. E.g., {stdenv, libfoo}: derivation { builder = ./bla; inherit stdenv libfoo; xyzzy = 1; } is equivalent to {stdenv, libfoo}: derivation { builder = ./bla; stdenv = stdenv; libfoo = libfoo; xyzzy = 1; } Note that for mutually recursive attribute set definitions (`rec {...}'), this also works, that is, `rec {inherit x;}' is equivalent to `let {fresh = x; body = rec {x = fresh;};}', *not* `rec {x = x}'.
2004-01-21 * Fixed a subtle uninitialised variable bug in ATermMaps copied fromEelco Dolstra1-1/+3
ATermMaps. Found thanks to Valgrind!
2004-01-15 * Catch SIGINT to terminate cleanly when the user tries to interruptEelco Dolstra1-0/+4
Nix. This is to prevent Berkeley DB from becoming wedged. Unfortunately it is not possible to throw C++ exceptions from a signal handler. In fact, you can't do much of anything except change variables of type `volatile sig_atomic_t'. So we set an interrupt flag in the signal handler and check it at various strategic locations in the code (by calling checkInterrupt()). Since this is unlikely to cover all cases (e.g., (semi-)infinite loops), sometimes SIGTERM may now be required to kill Nix.
2003-11-19 * Refactoring: put the Nix expression evaluator in its own library soEelco Dolstra1-0/+215
that it can be used by multiple programs.