Shea Levy
b0c5c2ac34
import derivation: cleanup
...
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-20 22:48:12 -05:00
Shea Levy
2719627bbe
realiseContext: Handle all context types
...
Avoids an assertion
2014-11-15 21:43:51 -05:00
Shea Levy
997defa166
Add functors (callable attribute sets).
...
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-11-15 16:12:05 -05:00
Eelco Dolstra
3a9b4a1467
Fix more warnings
2014-10-31 08:49:15 +01:00
Shea Levy
6062b12160
Fix build on gcc < 4.7
2014-10-20 12:15:50 -04:00
Eelco Dolstra
ecc2c8f464
Improve printing of ASTs
2014-10-20 09:13:21 +02:00
Shea Levy
d16e3c7f09
Export realiseContext in libnixexpr
...
Useful for importNative plugins
2014-10-17 22:15:09 -04:00
Eelco Dolstra
6bb4c0b712
mkList: Scrub better
...
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 13:08:53 +02:00
Eelco Dolstra
986fbd6fab
Typo
2014-10-09 11:34:48 +02:00
Eelco Dolstra
b6809608cc
Get rid of some unnecessary ExprConcatStrings nodes in dynamic attrs
...
This gives a ~18% speedup in NixOS evaluation (after converting
most calls to hasAttr/getAttr to dynamic attrs).
2014-10-05 01:04:58 +02:00
Eelco Dolstra
1418806969
Show total allocations
2014-10-05 00:39:28 +02:00
Eelco Dolstra
c3f0a489f9
Add primop ‘catAttrs’
2014-10-04 18:15:03 +02:00
Eelco Dolstra
d4fcbe1687
Add primop ‘attrValues’
2014-10-04 16:41:24 +02:00
Eelco Dolstra
58d8a213b0
Tweak
2014-10-04 11:27:23 +02:00
Eelco Dolstra
3f8576a6ab
Remove some duplicate code
2014-10-03 22:37:51 +02:00
Shea Levy
c08c802bf3
Add readDir primop
2014-10-03 22:32:11 +02:00
Eelco Dolstra
3b5fa8d50c
Don't recompile the same regex over and over
2014-10-03 21:29:40 +02:00
Eelco Dolstra
104e55bb7f
nix-env: Add regular expression support in selectors
...
So you can now do things like:
$ nix-env -qa '.*zip.*'
$ nix-env -qa '.*(firefox|chromium).*'
2014-10-03 21:29:40 +02:00
Eelco Dolstra
a17c23426e
printValue(): Don't print <CYCLE> for repeated values
2014-10-01 15:54:40 +02:00
Eelco Dolstra
d61853430a
Support control characters in JSON output
2014-09-30 00:41:18 +02:00
Eelco Dolstra
0ed1b924be
Bindings: Remove copy constructor
2014-09-24 15:29:05 +02:00
Eelco Dolstra
ebb1dbb3e1
Add missing static
2014-09-23 15:08:27 +02:00
Eelco Dolstra
53b044c2f6
Don't evaluate inside a "throw"
...
Workaround for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41174 . This caused
hydra-eval-jobs to ignore SIGINT.
2014-09-22 19:18:05 +02:00
Eelco Dolstra
0cd6596b0e
Add ‘deepSeq’ primop
...
Note that unlike ‘lib.deepSeq’ in Nixpkgs, this handles cycles.
2014-09-22 16:05:00 +02:00
Eelco Dolstra
831fc8ea21
Make forceValueDeep work on values with cycles
2014-09-22 16:05:00 +02:00
Eelco Dolstra
1e0a799bef
Rename strictForceValue -> forceValueDeep
2014-09-22 16:05:00 +02:00
Eelco Dolstra
022618c794
Handle cycles when printing a value
...
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 16:05:00 +02:00
Eelco Dolstra
a54c263402
Add ‘seq’ primop
2014-09-22 16:05:00 +02:00
Eelco Dolstra
eff120d1b9
Add a function ‘valueSize’
...
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-22 16:05:00 +02:00
Eelco Dolstra
2d6cd8aafd
attrNames: Don't allocate duplicates of the symbols
2014-09-19 18:11:46 +02:00
Eelco Dolstra
ea525a261f
Fix off-by-one
2014-09-19 18:08:14 +02:00
Eelco Dolstra
93e4f01ee3
Inline Bindings::find()
2014-09-19 16:56:13 +02:00
Eelco Dolstra
5b58991a71
Store Attrs inside Bindings
...
This prevents a double allocation per attribute set.
2014-09-19 16:49:41 +02:00
Eelco Dolstra
d4a71ec3bf
Update spec file
...
http://hydra.nixos.org/build/14344391
2014-09-18 15:42:01 +02:00
Eelco Dolstra
8be9990cdb
Install some pkgconfig files
2014-09-18 12:00:40 +02:00
Eelco Dolstra
6e5b02bee4
Add some instrumentation for debugging GC leaks
2014-09-17 15:19:07 +02:00
Eelco Dolstra
9d65287b91
Fix dependency ordering
2014-09-04 20:02:08 +02:00
Eelco Dolstra
9472b4157d
Fix boost::too_many_args error
...
Fixes #333 .
2014-09-02 22:53:01 +02:00
Eelco Dolstra
fefd3650d4
Fix a segfault in ‘nix-env -qa’
...
This was triggered by 47e185847e
, which
turned globals.state into a pointer.
2014-08-21 00:05:17 +02:00
Eelco Dolstra
11849a320e
Use proper quotes everywhere
2014-08-20 18:03:48 +02:00
Eelco Dolstra
373fad75e1
Add some color
2014-08-20 16:50:17 +02:00
Eelco Dolstra
47e185847e
Refactor option handling
2014-08-13 03:50:44 +02:00
Eelco Dolstra
5bed74d1b0
Fix warning about non-existant -I directories
2014-08-13 02:57:59 +02:00
Eelco Dolstra
3d221a7bb1
Rename nixPath to __nixPath
...
The name ‘nixPath’ breaks existing code.
2014-07-30 11:28:39 +02:00
Eelco Dolstra
62ad3dfc43
Remove some obsolete files
2014-07-23 23:56:58 +02:00
Eelco Dolstra
0e5d0c1543
Fix compilation error on some versions of GCC
...
src/libexpr/primops.cc:42:8: error: looser throw specifier for 'virtual nix::InvalidPathError::~InvalidPathError()'
src/libexpr/nixexpr.hh:12:1: error: overriding 'virtual nix::EvalError::~EvalError() noexcept (true)'
http://hydra.nixos.org/build/12385750
2014-07-09 12:14:40 +02:00
Eelco Dolstra
beaf3e90af
Add builtin function ‘fromJSON’
...
Fixes #294 .
2014-07-04 13:34:15 +02:00
Shea Levy
d62f46e500
Only add the importNative primop if the allow-arbitrary-code-during-evaluation option is true (default false)
2014-06-24 10:50:03 -04:00
Shea Levy
5cd022d6c0
Add importNative primop
...
This can be used to import a dynamic shared object and return an
arbitrary value, including new primops. This can be used both to test
new primops without having to recompile nix every time, and to build
specialized primops that probably don't belong upstream (e.g. a function
that calls out to gpg to decrypt a nixops secret as-needed).
The imported function should initialize the Value & as needed. A single
import can define multiple values by creating an attrset or list, of
course.
An example initialization function might look like:
extern "C" void initialize(nix::EvalState & state, nix::Value & v)
{
v.type = nix::tPrimOp;
v.primOp = NEW nix::PrimOp(myFun, 1, state.symbols.create("myFun"));
}
Then `builtins.importNative ./example.so "initialize"` will evaluate to
the primop defined in the myFun function.
2014-06-17 12:08:01 -04:00
Eelco Dolstra
0960d674d4
Drop ImportError and FindError
...
We're not catching these anywhere.
2014-06-12 13:00:54 +02:00