about summary refs log tree commit diff
path: root/src/libexpr
AgeCommit message (Collapse)AuthorFilesLines
2010-03-31 * Implemented `rec { inherit ...; }'.Eelco Dolstra2-0/+17
2010-03-31 * Compare nulls.Eelco Dolstra1-2/+5
2010-03-30 * More primops.Eelco Dolstra3-91/+109
2010-03-30 * More operators / primops.Eelco Dolstra4-184/+138
2010-03-30 * More primops.Eelco Dolstra3-183/+91
2010-03-30 * More primops.Eelco Dolstra4-96/+55
2010-03-30 * Implemented `map'.Eelco Dolstra4-108/+139
2010-03-30 * Make `import' work.Eelco Dolstra4-62/+141
2010-03-29 * Started integrating the new evaluator.Eelco Dolstra7-708/+736
2010-03-29 (no commit message)Eelco Dolstra1-0/+32
2010-03-29 (no commit message)Eelco Dolstra1-0/+1
2010-03-29 (no commit message)Eelco Dolstra1-12/+55
2010-03-28 * Strings.Eelco Dolstra1-0/+45
2010-03-28 (no commit message)Eelco Dolstra1-53/+51
2010-03-28 * Implemented multi-argument primops.Eelco Dolstra1-9/+36
2010-03-26 * Primops (not yet finished).Eelco Dolstra1-16/+114
2010-03-26 * Implemented the `==' and `!=' operators. These now use a deepEelco Dolstra1-0/+67
equality test, so they also work for (finite) attribute sets and lists.
2010-03-25 * Measure stack usage.Eelco Dolstra1-3/+11
2010-03-25 * Implemented lists.Eelco Dolstra1-7/+63
2010-03-25 * Quick and dirty implementation of `with'. `with e1; e2' isEelco Dolstra2-6/+56
basically desugared to `let <with> = e1; e2', and `lookupVar' looks in each <with> in the environment chain for an attribute with the specified name.
2010-03-25 * Don't convert variable names to strings.Eelco Dolstra1-12/+15
2010-03-25 * Implement blackholing.Eelco Dolstra1-8/+9
2010-03-25 * Implement `...' and default function arguments.Eelco Dolstra1-7/+31
2010-03-25 * Simplify @-patterns: only `{attrs}@name' or `name@{attrs}' are nowEelco Dolstra7-156/+73
allowed. So `name1@name2', `{attrs1}@{attrs2}' and so on are now no longer legal. This is no big loss because they were not useful anyway. This also changes the output of builtins.toXML for @-patterns slightly.
2010-03-24 * Implemented attribute set pattern matches.Eelco Dolstra1-13/+117
2010-03-24 * Store values in environments.Eelco Dolstra1-64/+66
2010-03-24 * Reduce the number of value allocations in eval() by movingEelco Dolstra1-26/+38
responsibility for allocation of the result to the caller.
2010-03-24 * Plain lambdas.Eelco Dolstra1-2/+38
2010-03-23 * Start of an evaluator that uses call-by-need (with thunk updating)Eelco Dolstra3-1/+200
instead of (memoised) call-by-name.
2010-03-14 Merge r20344 & r20346.Nicolas Pierron1-1/+7
2009-11-06 * Remove support for old (before Nix 0.12pre12020) databases.Eelco Dolstra1-1/+1
2009-10-22 * builtins.trace: in the common case that the value is a string, thenEelco Dolstra1-1/+6
show the string, not the ATerm, so we get `trace: bla' instead of `trace: Str("bla",[])'.
2009-10-21 * Added a primop unsafeDiscardOutputDependency needed by Disnix toEelco Dolstra1-3/+34
pass derivation paths to a builder without actually building them.
2009-09-23 * tryEval shouldn't catch all exceptions of type Error, since not allEelco Dolstra1-2/+2
of them leave the evaluator in a continuable state. Also, it should be less chatty.
2009-09-15 * Two primops: builtins.intersectAttrs and builtins.functionArgs.Eelco Dolstra1-0/+66
intersectAttrs returns the (right-biased) intersection between two attribute sets, e.g. every attribute from the second set that also exists in the first. functionArgs returns the set of attributes expected by a function. The main goal of these is to allow the elimination of most of all-packages.nix. Most package instantiations in all-packages.nix have this form: foo = import ./foo.nix { inherit a b c; }; With intersectAttrs and functionArgs, this can be written as: foo = callPackage (import ./foo.nix) { }; where callPackage = f: args: f ((builtins.intersectAttrs (builtins.functionArgs f) pkgs) // args); I.e., foo.nix is called with all attributes from "pkgs" that it actually needs (e.g., pkgs.a, pkgs.b and pkgs.c). (callPackage can do any other generic package-level stuff we might want, such as applying makeOverridable.) Of course, the automatically supplied arguments can be overriden if needed, e.g. foo = callPackage (import ./foo.nix) { c = c_version_2; }; but for the vast majority of packages, this won't be needed. The advantages are to reduce the amount of typing needed to add a dependency (from three sites to two), and to reduce the number of trivial commits to all-packages.nix. For the former, there have been two previous attempts: - Use "args: with args;" in the package's function definition. This however obscures the actual expected arguments of a function, which is very bad. - Use "{ arg1, arg2, ... }:" in the package's function definition (i.e. use the ellipis "..." to allow arbitrary additional arguments), and then call the function with all of "pkgs" as an argument. But this inhibits error detection if you call it with an misspelled (or obsolete) argument.
2009-08-25 Adding tryEval builtin. It allows to catch presence of errors in an expression.Michael Raskin1-0/+18
2009-06-30 * Support integers and lists of strings in meta fields. This isEelco Dolstra2-13/+46
useful for fields like meta.maintainers, meta.priority (which can be a proper integer now) and even meta.license (if there are multiple licenses).
2009-06-30 * Don't show trace information by default (`--show-trace' to enable).Eelco Dolstra1-1/+1
NixOS evaluation errors in particular look intimidating and generally aren't very useful. Ideally the builtins.throw messages should be self-contained.
2009-05-15 * Change the scoping of "inherit (e) ..." in recs so that theEelco Dolstra1-2/+3
attributes of the rec are in scope of `e'. This is useful in expressions such as rec { lib = import ./lib; inherit (lib) concatStrings; } It does change the semantics of expressions such as let x = {y = 1;}; in rec { x = {y = 2;}; inherit (x) y; }.y This now returns 2 instead of 1. However, no code in Nixpkgs or NixOS seems to rely on the old behaviour.
2009-05-15 * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as aEelco Dolstra4-26/+83
shorthand for {x = {y = {z = ...;};};}. This is especially useful for NixOS configuration files, e.g. { services = { sshd = { enable = true; port = 2022; }; }; } can now be written as { services.sshd.enable = true; services.sshd.port = 2022; } However, it is currently not permitted to write { services.sshd = {enable = true;}; services.sshd.port = 2022; } as this is considered a duplicate definition of `services.sshd'.
2009-05-14 * Check for duplicate attributes in fixAttrs, rather than doing aEelco Dolstra1-94/+63
separate traversal after parsing. Likewise, check for duplicate pattern variables right away.
2009-05-12 * Allow unsafe (unspecified) comparisons between attrsets unlessEelco Dolstra2-1/+9
NIX_NO_UNSAFE_EQ is set, for now.
2009-05-11 * Disallow equality tests between attribute sets. This was alwaysEelco Dolstra1-6/+42
broken, but now the evaluator checks for it to prevent Nix expressions from relying on undefined behaviour. Equality tests are implemented using a shallow pointer equality test between ATerms. However, because attribute sets are lazy and contain position information, this can give false positives. For instance, previously let y = {x = 1;}; in y == y evaluated to true, while the equivalent expression {x = 1;} == {x = 1;} evaluated to false. So disallow these tests for now. (Eventually we may want to implement deep equality tests for attribute sets, like lib.eqStrict.) * Idem: disallow comparisons between functions. * Implemented deep comparisons of lists. This had the same problem as attribute sets - the elements in the list weren't evaluated. For instance, ["xy"] == [("x" + "y")] evaluated to false. Now it works properly.
2009-05-07 * Remove a right recursion that causes the parser to barf on very longEelco Dolstra1-6/+3
lists. The comment about ATreverse requiring unbounded stack space was unfounded anyway.
2009-04-16 * Fix a few "comparison is always false/true due to limited range ofEelco Dolstra1-1/+1
data type" warnings on 64-bit platforms. The one in parser.y is likely to be a real bug.
2009-03-18 * Unify exportReferencesGraph and exportBuildReferencesGraph, and makeEelco Dolstra1-12/+18
sure that it works as expected when you pass it a derivation. That is, we have to make sure that all build-time dependencies are built, and that they are all in the input closure (otherwise remote builds might fail, for example). This is ensured at instantiation time by adding all derivations and their sources to inputDrvs and inputSrcs.
2009-03-06 (no commit message)Eelco Dolstra1-1/+1
2009-02-05 added primop functions __isBool, __isString, __isIntMarc Weber1-0/+25
2009-01-27 Add the "addErrorContext" builtin to add more information in the stack trace.Nicolas Pierron1-0/+14
2009-01-12 * Make Nix build with Bison 2.4.Eelco Dolstra1-0/+1