aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
AgeCommit message (Collapse)Author
2007-02-27* Greatly reduced the amount of stack space used by the Nix expressionEelco Dolstra
evaluator. This was important because the NixOS expressions started to hit 2 MB default stack size on Linux. GCC is really dumb about stack space: it just adds up all the local variables and temporaries of every scope into one huge stack frame. This is really bad for deeply recursive functions. For instance, every `throw Error(format("error message"))' causes a format object of a few hundred bytes to be allocated on the stack. As a result, every recursive call to evalExpr2() consumed 4680 bytes. By splitting evalExpr2() and by moving the exception-throwing code out of the main functions, evalExpr2() now only consumes 40 bytes. Similar for evalExpr().
2007-02-27* When NIX_SHOW_STATS=1, show the amount of stack space consumed byEelco Dolstra
the Nix expression evaluator.
2007-02-02* nix-env now maintains meta info (from the `meta' derivationEelco Dolstra
attribute) about installed packages in user environments. Thus, an operation like `nix-env -q --description' shows useful information not only on available packages but also on installed packages. * nix-env now passes the entire manifest as an argument to the Nix expression of the user environment builder (not just a list of paths), so that in particular the user environment builder has access to the meta attributes. * New operation `--set-flag' in nix-env to change meta info of installed packages. This will be useful to pass per-package policies to the user environment builder (e.g., how to resolve collision or whether to disable a package (NIX-80)) or upgrade policies in nix-env (e.g., that a package should be "masked", that is, left untouched by upgrade actions). Example: $ nix-env --set-flag enabled false ghc-6.4
2007-01-29* computeStorePathForText: take the references into account whenEelco Dolstra
computing the store path (NIX-77). This is an important security property in multi-user Nix stores. Note that this changes the store paths of derivations (since the derivation aterms are added using addTextToStore), but not most outputs (unless they use builtins.toFile).
2007-01-29* Don't capitalise the primop functions.Eelco Dolstra
2007-01-29* Organise primops.cc a bit better.Eelco Dolstra
2007-01-29New primitives:Eelco Dolstra
* `sub' to subtract two numbers. * `stringLength' to get the length of a string. * `substring' to get a substring of a string. These should be enough to allow most string operations to be expressed.
2007-01-29* filterSource: pass strings to the predicate function instead ofEelco Dolstra
paths. Paths can have unexpected semantics.
2007-01-15* Handle multiple indirect symlinks when loading a Nix expression.Eelco Dolstra
2007-01-15* builtins.filterSource: pass the type of the file ("regular",Eelco Dolstra
"directory", "symlink") as the second argument to the filter predicate.
2007-01-14* Option --argstr for passing string arguments easily. (NIX-75)Eelco Dolstra
2007-01-13* Canonicalise ASTs in `nix-instantiate --eval': remove positionEelco Dolstra
info, sort attribute sets.
2007-01-13* Memoize strict evaluation.Eelco Dolstra
2007-01-13* printTermAsXML: treat derivations specially; emit an elementEelco Dolstra
<derivation outPath=... drvPath=...> attrs </derivation>. Only emit the attributes of any specific derivation only. This prevents exponententially large XML output due to the absense of sharing.
2007-01-13* Make printing an expression as XML interruptible.Eelco Dolstra
2007-01-13* Cleanup.Eelco Dolstra
2006-12-13* Remove debug message.Eelco Dolstra
2006-12-12* New primop builtins.filterSource, which can be used to filter filesEelco Dolstra
from a source directory. All files for which a predicate function returns true are copied to the store. Typical example is to leave out the .svn directory: stdenv.mkDerivation { ... src = builtins.filterSource (path: baseNameOf (toString path) != ".svn") ./source-dir; # as opposed to # src = ./source-dir; } This is important because the .svn directory influences the hash in a rather unpredictable and variable way.
2006-12-12* New built-in function `builtins.attrNames' that returns theEelco Dolstra
names of the attributes in an attribute set.
2006-12-02* Remove SwitchToOriginalUser, we're not going to need it anymore.Eelco Dolstra
2006-12-01* Replace read-only calls to addTextToStore.Eelco Dolstra
2006-12-01* Merge addToStore and addToStoreFixed.Eelco Dolstra
* addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath).
2006-11-30* Put building in the store API.Eelco Dolstra
2006-11-30* Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra
containing functions that operate on the Nix store. One implementation is LocalStore, which operates on the Nix store directly. The next step, to enable secure multi-user Nix, is to create a different implementation RemoteStore that talks to a privileged daemon process that uses LocalStore to perform the actual operations.
2006-11-03* Fix importing of derivation outputs.Eelco Dolstra
2006-10-23* Some better error messages.Eelco Dolstra
2006-10-19* Better message.Eelco Dolstra
2006-10-19* toFile: maintain the references.Eelco Dolstra
2006-10-17* Backwards compatibility hack for user environments made by Nix <= 0.10.Eelco Dolstra
2006-10-17* Backwards compatibility with old user environment manifests.Eelco Dolstra
2006-10-17* Print out the offending path.Eelco Dolstra
2006-10-17* An awful backwards compatibility hack.Eelco Dolstra
2006-10-17* baseNameOf: paths don't have to be absolute.Eelco Dolstra
2006-10-17* toPath: should be the identity on paths.Eelco Dolstra
2006-10-17* dirOf: return a path if the argument is a path.Eelco Dolstra
2006-10-17* toString: don't copy paths. So toString can be used to passEelco Dolstra
non-store paths to a builder.
2006-10-17* Do the path check on the normal form.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-10-11* Removed URIs from the evaluator (NIX-66). They are now just anotherEelco Dolstra
kind of notation for strings.
2006-10-10* Quick hack to fix NIX-67: evaluation result differing if the NixEelco Dolstra
expression resides in the store.
2006-10-10* `import': unwrap the context. Necessary to make `import (x + y)'Eelco Dolstra
work, where x is a store path.
2006-10-03* toXML: propagate the context to allow derivations to be used in theEelco Dolstra
argument.
2006-10-03* toFile: added an additional argument to specify the store pathEelco Dolstra
suffix, e.g., `builtins.toFile "builder.sh" "..."'. * toFile: handle references to other files correctly.
2006-10-02* Finally, a real "let" syntax: `let x = ...; ... z = ...; in ...'.Eelco Dolstra
2006-10-02* Hack for Bison 2.3 compatability.Eelco Dolstra
2006-09-24* The result of a concatenation with a derivation on the left-handEelco Dolstra
side should be a path, I guess. * Handle paths that are in the store but not direct children of the store directory. * Ugh, hack to prevent double context wrapping.
2006-09-24* Primop `toPath' to convert a string to a path.Eelco Dolstra
* Primop `pathExists' to check for path existence.
2006-09-24* Builtin function `getEnv' for getting environment variables.Eelco Dolstra
2006-09-24* lessThan primitive for integer comparison.Eelco Dolstra
2006-09-22* Builtin function `add' to add integers.Eelco Dolstra
* Put common test functions in tests/lang/lib.nix.