about summary refs log tree commit diff
path: root/src/libexpr
AgeCommit message (Collapse)AuthorFilesLines
2014-12-12 Remove canary stuffEelco Dolstra3-56/+0
2014-12-10 builtins.readFile: realise context associated with the pathShea Levy1-2/+6
2014-12-02 Make all ExternalValueBase functions constShea Levy4-15/+15
2014-12-02 Allow external code using libnixexpr to add typesShea Levy5-0/+108
Code that links to libnixexpr (e.g. plugins loaded with importNative, or nix-exec) may want to provide custom value types and operations on values of those types. For example, nix-exec is currently using sets where a custom IO value type would be more appropriate. This commit provides a generic hook for such types in the form of tExternal and the ExternalBase virtual class, which contains all functions necessary for libnixexpr's type-polymorphic functions (e.g. `showType`) to be implemented.
2014-11-25 Add a primop for regular expression pattern matchingEelco Dolstra1-1/+29
The function ‘builtins.match’ takes a POSIX extended regular expression and an arbitrary string. It returns ‘null’ if the string does not match the regular expression. Otherwise, it returns a list containing substring matches corresponding to parenthesis groups in the regex. The regex must match the entire string (i.e. there is an implied "^<pat>$" around the regex). For example: match "foo" "foobar" => null match "foo" "foo" => [] match "f(o+)(.*)" "foooobar" => ["oooo" "bar"] match "(.*/)?([^/]*)" "/dir/file.nix" => ["/dir/" "file.nix"] match "(.*/)?([^/]*)" "file.nix" => [null "file.nix"] The following example finds all regular files with extension .nix or .patch underneath the current directory: let findFiles = pat: dir: concatLists (mapAttrsToList (name: type: if type == "directory" then findFiles pat (dir + "/" + name) else if type == "regular" && match pat name != null then [(dir + "/" + name)] else []) (readDir dir)); in findFiles ".*\\.(nix|patch)" (toString ./.)
2014-11-25 forceString(): Accept pos argumentEelco Dolstra3-5/+5
2014-11-20 import derivation: cleanupShea Levy1-8/+11
Before this there was a bug where a `find` was being called on a not-yet-sorted set. The code was just a mess before anyway, so I cleaned it up while fixing it.
2014-11-15 realiseContext: Handle all context typesShea Levy1-2/+2
Avoids an assertion
2014-11-15 Add functors (callable attribute sets).Shea Levy2-1/+13
With this, attribute sets with a `__functor` attribute can be applied just like normal functions. This can be used to attach arbitrary metadata to a function without callers needing to treat it specially.
2014-10-31 Fix more warningsEelco Dolstra1-11/+1
2014-10-20 Fix build on gcc < 4.7Shea Levy1-0/+3
2014-10-20 Improve printing of ASTsEelco Dolstra3-16/+58
2014-10-17 Export realiseContext in libnixexprShea Levy2-9/+11
Useful for importNative plugins
2014-10-09 mkList: Scrub betterEelco Dolstra2-2/+3
Clearing v.app.right was not enough, because the length field of a list only takes 32 bits, so the most significant 32 bits of v.app.left (a.k.a. v.thunk.env) would remain. This could cause Boehm GC to interpret it as a valid pointer. This change reduces maximum RSS for evaluating the ‘tested’ job in nixos/release-small.nix from 1.33 GiB to 0.80 GiB, and runtime by about 8%.
2014-10-09 TypoEelco Dolstra1-1/+1
2014-10-05 Get rid of some unnecessary ExprConcatStrings nodes in dynamic attrsEelco Dolstra3-25/+18
This gives a ~18% speedup in NixOS evaluation (after converting most calls to hasAttr/getAttr to dynamic attrs).
2014-10-05 Show total allocationsEelco Dolstra1-8/+10
2014-10-04 Add primop ‘catAttrs’Eelco Dolstra1-0/+30
2014-10-04 Add primop ‘attrValues’Eelco Dolstra1-1/+23
2014-10-04 TweakEelco Dolstra1-1/+1
2014-10-03 Remove some duplicate codeEelco Dolstra1-15/+8
2014-10-03 Add readDir primopShea Levy1-0/+37
2014-10-03 Don't recompile the same regex over and overEelco Dolstra2-3/+8
2014-10-03 nix-env: Add regular expression support in selectorsEelco Dolstra1-1/+5
So you can now do things like: $ nix-env -qa '.*zip.*' $ nix-env -qa '.*(firefox|chromium).*'
2014-10-01 printValue(): Don't print <CYCLE> for repeated valuesEelco Dolstra1-7/+9
2014-09-30 Support control characters in JSON outputEelco Dolstra2-0/+8
2014-09-24 Bindings: Remove copy constructorEelco Dolstra1-2/+3
2014-09-23 Add missing staticEelco Dolstra1-2/+2
2014-09-22 Don't evaluate inside a "throw"Eelco Dolstra1-3/+4
Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41174. This caused hydra-eval-jobs to ignore SIGINT.
2014-09-22 Add ‘deepSeq’ primopEelco Dolstra1-0/+11
Note that unlike ‘lib.deepSeq’ in Nixpkgs, this handles cycles.
2014-09-22 Make forceValueDeep work on values with cyclesEelco Dolstra1-9/+20
2014-09-22 Rename strictForceValue -> forceValueDeepEelco Dolstra2-4/+4
2014-09-22 Handle cycles when printing a valueEelco Dolstra1-5/+23
So this no longer crashes with a stack overflow: nix-instantiate -E --eval 'let as = { x = as; }; in as' Instead it prints: { x = { x = <CYCLE>; }; }
2014-09-22 Add ‘seq’ primopEelco Dolstra1-0/+12
2014-09-22 Add a function ‘valueSize’Eelco Dolstra4-2/+99
It returns the size of value, including all other values and environments reachable from it. It is intended for debugging memory consumption issues.
2014-09-19 attrNames: Don't allocate duplicates of the symbolsEelco Dolstra1-6/+4
2014-09-19 Fix off-by-oneEelco Dolstra1-1/+1
2014-09-19 Inline Bindings::find()Eelco Dolstra2-10/+8
2014-09-19 Store Attrs inside BindingsEelco Dolstra6-50/+92
This prevents a double allocation per attribute set.
2014-09-18 Update spec fileEelco Dolstra1-1/+1
http://hydra.nixos.org/build/14344391
2014-09-18 Install some pkgconfig filesEelco Dolstra2-0/+12
2014-09-17 Add some instrumentation for debugging GC leaksEelco Dolstra3-0/+57
2014-09-04 Fix dependency orderingEelco Dolstra1-4/+2
2014-09-02 Fix boost::too_many_args errorEelco Dolstra1-1/+1
Fixes #333.
2014-08-21 Fix a segfault in ‘nix-env -qa’Eelco Dolstra1-1/+1
This was triggered by 47e185847e729d49e6aa376e8299fd66ef834a0a, which turned globals.state into a pointer.
2014-08-20 Use proper quotes everywhereEelco Dolstra10-78/+78
2014-08-20 Add some colorEelco Dolstra1-1/+1
2014-08-13 Refactor option handlingEelco Dolstra2-24/+30
2014-08-13 Fix warning about non-existant -I directoriesEelco Dolstra1-1/+1
2014-07-30 Rename nixPath to __nixPathEelco Dolstra2-3/+3
The name ‘nixPath’ breaks existing code.