about summary refs log tree commit diff
path: root/src/libexpr/primops.cc
AgeCommit message (Collapse)AuthorFilesLines
2008-07-11 * Generalised the dependencyClosure primop to builtins.genericClosure,Eelco Dolstra1-137/+55
which is hopefully more useful. * New primops: length, mul, div.
2008-07-01 * Export the nix-env derivation name parsing and version comparisonEelco Dolstra1-14/+49
logic through the `parseDrvName' and `compareVersions' primops. This will allow expressions to easily check whether some dependency is a specific needed version or falls in some version range. See tests/lang/eval-okay-versions.nix for examples.
2008-01-20 Probably fixed __exprToStringMichael Raskin1-1/+4
2008-01-15 Fixed exportBuildReferenceGraphMichael Raskin1-0/+18
2008-01-04 * New primop `unsafeDiscardStringContext' to get rid of stringEelco Dolstra1-0/+10
contexts. Needed to prevent unnecessary dependencies when building the NixOS manual.
2007-12-31 * More release notes.Eelco Dolstra1-2/+2
2007-11-21 * New primop `readFile' to get the contents of a file as a string.Eelco Dolstra1-0/+12
2007-10-31 * Documented multi-user Nix.Eelco Dolstra1-0/+3
2007-10-26 * "trace" primop: write the trace to standard error.Eelco Dolstra1-6/+7
2007-10-09 * listToAttrs: the list now should consist of {name, value} attributeEelco Dolstra1-28/+29
sets instead of {attr, value}. "name" is better than "attr" because the *combination* of the two forms the attribute.
2007-09-18 * Pass various options to the worker so that flags like -K or -j workEelco Dolstra1-2/+1
in multi-user Nix (NIX-72). * Client/worker: exchange a protocol version number for future compatibility.
2007-08-18 primop functions listToAttrs (+test), __isAttrs, __trace addedMarc Weber1-0/+53
new configuration style proposal in lib/default-unstable.nix
2007-05-16 * New builtin function "isFunction". You're not supposed to use itEelco Dolstra1-0/+13
;-) * Channels: fix channels that are plain lists of derivations (like strategoxt-unstable) instead of functions (like nixpkgs-unstable). This fixes the error message "error: the left-hand side of the function call is neither a function nor a primop (built-in operation) but a list".
2007-04-16 * New primop "throw <string>" to throw an error. This is like abort,Eelco Dolstra1-0/+9
only thrown errors are caught by the top-level derivation evaluation in nix-env -qa / -i.
2007-01-29 * computeStorePathForText: take the references into account whenEelco Dolstra1-1/+1
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 Dolstra1-76/+81
2007-01-29 * Organise primops.cc a bit better.Eelco Dolstra1-321/+376
2007-01-29 New primitives:Eelco Dolstra1-1/+43
* `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 Dolstra1-1/+1
paths. Paths can have unexpected semantics.
2007-01-15 * builtins.filterSource: pass the type of the file ("regular",Eelco Dolstra1-1/+18
"directory", "symlink") as the second argument to the filter predicate.
2007-01-13 * Cleanup.Eelco Dolstra1-5/+5
2006-12-13 * Remove debug message.Eelco Dolstra1-1/+0
2006-12-12 * New primop builtins.filterSource, which can be used to filter filesEelco Dolstra1-0/+38
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 Dolstra1-0/+21
names of the attributes in an attribute set.
2006-12-01 * Replace read-only calls to addTextToStore.Eelco Dolstra1-1/+3
2006-11-30 * Put building in the store API.Eelco Dolstra1-2/+1
2006-11-30 * Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra1-3/+3
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 Dolstra1-2/+9
2006-10-23 * Some better error messages.Eelco Dolstra1-3/+10
2006-10-19 * Better message.Eelco Dolstra1-1/+1
2006-10-19 * toFile: maintain the references.Eelco Dolstra1-10/+4
2006-10-17 * baseNameOf: paths don't have to be absolute.Eelco Dolstra1-1/+1
2006-10-17 * toPath: should be the identity on paths.Eelco Dolstra1-3/+1
2006-10-17 * dirOf: return a path if the argument is a path.Eelco Dolstra1-2/+6
2006-10-17 * toString: don't copy paths. So toString can be used to passEelco Dolstra1-3/+4
non-store paths to a builder.
2006-10-16 * Big cleanup of the semantics of paths, strings, contexts, stringEelco Dolstra1-233/+75
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 Dolstra1-2/+1
kind of notation for strings.
2006-10-10 * Quick hack to fix NIX-67: evaluation result differing if the NixEelco Dolstra1-9/+8
expression resides in the store.
2006-10-10 * `import': unwrap the context. Necessary to make `import (x + y)'Eelco Dolstra1-13/+14
work, where x is a store path.
2006-10-03 * toXML: propagate the context to allow derivations to be used in theEelco Dolstra1-2/+3
argument.
2006-10-03 * toFile: added an additional argument to specify the store pathEelco Dolstra1-3/+32
suffix, e.g., `builtins.toFile "builder.sh" "..."'. * toFile: handle references to other files correctly.
2006-09-24 * The result of a concatenation with a derivation on the left-handEelco Dolstra1-4/+12
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 Dolstra1-7/+26
* Primop `pathExists' to check for path existence.
2006-09-24 * Builtin function `getEnv' for getting environment variables.Eelco Dolstra1-6/+18
2006-09-24 * lessThan primitive for integer comparison.Eelco Dolstra1-0/+9
2006-09-22 * Builtin function `add' to add integers.Eelco Dolstra1-0/+9
* Put common test functions in tests/lang/lib.nix.
2006-09-22 * Added a builtin function `isList' to test whether a value is a list.Eelco Dolstra1-0/+9
With this primitive, a list-flattening function can be implemented (NIX-55, example is in tests/lang/eval-okay-flatten.nix).
2006-09-22 * Builtin functions `head' and `tail' to return the head and tail ofEelco Dolstra1-0/+25
list. Useful for lots of things, such as implementing a fold function (see NIX-30, example is in tests/lang/eval-okay-list.nix).
2006-09-22 * New builtin functions builtins.{hasAttr, getAttr} to check forEelco Dolstra1-0/+16
attribute existence and to return an attribute from an attribute set, respectively. Example: `hasAttr "foo" {foo = 1;}'. They differ from the `?' and `.' operators in that the attribute name is an arbitrary expression. (NIX-61)
2006-09-21 * Fix comment.Eelco Dolstra1-3/+1