about summary refs log tree commit diff
path: root/src/libexpr/primops.cc
AgeCommit message (Collapse)AuthorFilesLines
2005-01-13 * Refactoring to support SHA-1.Eelco Dolstra1-3/+3
2004-11-03 * string2ATerm -> overloaded toATerm.Eelco Dolstra1-5/+5
2004-10-29 * Drop ATmake / ATMatcher also in handling store expressions.Eelco Dolstra1-1/+1
2004-10-26 * Don't use ATmake / ATmatch anymore, nor the ATMatcher class.Eelco Dolstra1-45/+35
Instead we generate data bindings (build and match functions) for the constructors specified in `constructors.def'. In particular this removes the conversions between AFuns and strings, and Nix expression evaluation now seems 3 to 4 times faster.
2004-10-26 * Evaluate argument to `import'.Eelco Dolstra1-1/+2
2004-10-26 * String/path concatenation operator (`+').Eelco Dolstra1-5/+4
2004-10-25 * New language feature: with expressions.Eelco Dolstra1-1/+1
The expression `with E1; E2' evaluates to E2 with all bindings in the attribute set E1 substituted. E.g., with {x = 123;}; x evaluates to 123. That is, the attribute set E1 is in scope in E2. This is particularly useful when importing files containing lots definitions. E.g., instead of let { inherit (import ./foo.nix) a b c d e f; body = ... a ... f ...; } we can now say with import ./foo.nix; ... a ... f ... I.e., we don't have to say what variables should be brought into scope.
2004-10-25 * Allow certain operations to succeed even if we don't have writeEelco Dolstra1-4/+12
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-24 * Validate derivation names. In particular don't allow spaces.Eelco Dolstra1-8/+19
* Drop support for the outPath attribute in derivations.
2004-08-04 * Every real language has a `map' function.Eelco Dolstra1-1/+18
2004-08-04 * Allow primops with more that 1 arguments.Eelco Dolstra1-13/+49
2004-04-05 * When something goes wrong in the evaluation of a Nix expression,Eelco Dolstra1-17/+21
print a nice backtrace of the stack, rather than vomiting a gigantic (and useless) aterm on the screen. Example: error: while evaluating file `.../pkgs/system/test.nix': while evaluating attribute `subversion' at `.../pkgs/system/all-packages-generic.nix', line 533: while evaluating function at `.../pkgs/applications/version-management/subversion/default.nix', line 1: assertion failed at `.../pkgs/applications/version-management/subversion/default.nix', line 13 Since the Nix expression language is lazy, the trace may be misleading. The purpose is to provide a hint as to the location of the problem.
2004-04-02 * Print a more useful error message in case of an invalid derivationEelco Dolstra1-1/+6
binding.
2004-03-28 * Added an operator `~' to select paths within a derivation. E.g.,Eelco Dolstra1-0/+13
{stdenv, bash}: derivation { builder = bash ~ /bin/sh; args = ["-e" "-x" ./builder.sh]; ... } Here the attribute `builder' will evaluate to, e.g., `/nix/store/1234abcd...-bash-2.0.1/bin/sh'.
2004-03-28 * Added plain lambdas, e.g., `let { id = x: x; const = x: y: x; }'.Eelco Dolstra1-33/+37
`bla:' is now no longer parsed as a URL. * Re-enabled support for the `args' attribute in derivations to specify command line arguments to the builder, e.g., ... builder = /usr/bin/python; args = ["-c" ./builder.py]; ...
2004-02-04 * Use a map to lookup primops.Eelco Dolstra1-0/+12
* Various performance improvements in the evaluator. * Do not link against unused (and missing!) libraries (-lsglr, etc.).
2004-02-02 * Added syntactic sugar to the construction of attribute sets toEelco Dolstra1-1/+1
`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}'.
2003-11-25 * Allow integer bindings in derivations.Eelco Dolstra1-0/+7
2003-11-21 * Uninstallation.Eelco Dolstra1-5/+11
2003-11-19 * Refactoring: put the Nix expression evaluator in its own library soEelco Dolstra1-0/+246
that it can be used by multiple programs.