Eelco Dolstra
fbc48a469c
* Inherited attributes in recursive attribute sets are in scope of the
...
non-inherited attributes.
2004-02-16 09:18:35 +00:00
Eelco Dolstra
9b44480612
* Use a map to lookup primops.
...
* Various performance improvements in the evaluator.
* Do not link against unused (and missing!) libraries (-lsglr, etc.).
2004-02-04 16:03:29 +00:00
Eelco Dolstra
c4f7ae4aa5
* Verify that all variables in a Nix expression are defined.
2004-02-03 14:45:34 +00:00
Eelco Dolstra
1c9c0a5a46
* Added syntactic sugar to the construction of attribute sets to
...
`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-02-02 21:39:33 +00:00
Eelco Dolstra
1109ea0680
* Fixed a subtle uninitialised variable bug in ATermMaps copied from
...
ATermMaps. Found thanks to Valgrind!
2004-01-21 14:49:32 +00:00
Eelco Dolstra
447089a5f6
* Catch SIGINT to terminate cleanly when the user tries to interrupt
...
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.
2004-01-15 20:23:55 +00:00
Eelco Dolstra
ac68840e79
* Refactoring: put the Nix expression evaluator in its own library so
...
that it can be used by multiple programs.
2003-11-19 11:35:41 +00:00