Eelco Dolstra
9985230c00
* After parsing, compute level/displacement pairs for each variable
...
use site, allowing environments to be stores as vectors of values
rather than maps. This should speed up evaluation and reduce the
number of allocations.
2010-04-14 14:42:32 +00:00
Eelco Dolstra
816dd3f061
* Remove more obsolete code.
2010-04-14 12:49:05 +00:00
Eelco Dolstra
011b5da0f4
* Get nix-env to compile again.
2010-04-14 09:39:06 +00:00
Eelco Dolstra
85d13c8f93
* Change the semantics of "with" so that inner "withs" take
...
precedence, i.e. `with {x=1;}; with {x=2;}; x' evaluates to 2'.
This has a simpler implementation and seems more natural. There
doesn't seem to be any code in Nixpkgs or NixOS that relies on the
old behaviour.
2010-04-14 08:37:08 +00:00
Eelco Dolstra
816f9c0f6f
* Use std::tr1::unordered_set instead of std::set for the symbol
...
table. This gives a 10% speed increase on `nix-instantiate
/etc/nixos/nixos -A system --readonly-mode'.
2010-04-13 14:34:11 +00:00
Eelco Dolstra
7d47498b5e
* Evaluate lets directly (i.e. without desugaring to `rec { attrs...;
...
<let-body> = e; }.<let-body>). This prevents the unnecessary
allocation of an attribute set.
2010-04-13 13:42:25 +00:00
Eelco Dolstra
ac1e8f40d4
* Use a symbol table to represent identifiers and attribute names
...
efficiently. The symbol table ensures that there is only one copy
of each symbol, thus allowing symbols to be compared efficiently
using a pointer equality test.
2010-04-13 12:25:42 +00:00
Eelco Dolstra
10e8b1fd15
* Finished the ATerm-less parser.
2010-04-12 23:33:23 +00:00
Eelco Dolstra
0d272fca79
* Remove some obsolete functions.
2010-04-12 23:31:47 +00:00
Eelco Dolstra
d4f0b0fc6c
* Indented strings.
2010-04-12 22:03:27 +00:00
Eelco Dolstra
a60317f20f
* More missing constructs.
2010-04-12 21:21:24 +00:00
Eelco Dolstra
4d6ad5be17
* Don't use ATerms for the abstract syntax trees anymore. Not
...
finished yet.
2010-04-12 18:30:11 +00:00
Eelco Dolstra
ed711f73bc
* Don't use ATerms to represent integers in the lexer.
2010-04-12 10:38:18 +00:00
Eelco Dolstra
db90b88e65
* Hack to support builderDefs expressions.
2010-04-12 09:50:20 +00:00
Eelco Dolstra
4e49002576
* Doh.
2010-04-12 09:45:00 +00:00
Eelco Dolstra
c3f228f296
2010-04-12 09:14:27 +00:00
Eelco Dolstra
f3dc7ab877
* Keep more statistics about stack space usage.
...
* Reduce stack space usage.
2010-04-09 12:00:49 +00:00
Eelco Dolstra
b7b3dd55f9
* Remove a lot of dead code.
2010-04-08 11:41:19 +00:00
Eelco Dolstra
7e048eddf5
* Fix blackholing. If evaluation fails due to an assertion failure,
...
then the blackhole has to be removed to ensure that repeated
evaluation of the same value gives an assertion failure again rather
than an "infinite recursion" error.
2010-04-08 11:25:14 +00:00
Eelco Dolstra
af2a372bb0
* Update autoCallFunction() and findAlongAttrPath().
2010-04-07 15:47:06 +00:00
Eelco Dolstra
9a64454faa
* expr-to-xml -> value-to-xml.
2010-04-07 13:59:45 +00:00
Eelco Dolstra
fc92244ba8
* Implemented the primops necessary for generating the NixOS manual.
2010-04-07 13:55:46 +00:00
Eelco Dolstra
a353aef0b1
* In eval(), don't use the target value `v' as a temporary.
...
Overwriting `v' breaks when the expression evaluation to an
assertion failure or throw.
2010-04-06 14:15:29 +00:00
Eelco Dolstra
a5ece7d016
* Removed the `~' operator.
2010-04-01 16:59:07 +00:00
Eelco Dolstra
c172274e17
* Quick hack to make coerceToString work more or less correctly on
...
nested lists. `nix-instantiate' can now evaluate the NixOS system
derivation attribute correctly (in 2.1s on my laptop vs. 6.2s for
the trunk).
2010-04-01 14:35:03 +00:00
Eelco Dolstra
7b851915bf
* Improve sharing.
2010-04-01 12:04:57 +00:00
Eelco Dolstra
95cc417d76
* Functions are incomparable.
2010-04-01 10:55:36 +00:00
Eelco Dolstra
71f026292b
* Make `derivation' lazy again for performance. It also turns out
...
that there are some places in Nixpkgs (php_configurable /
composableDerivation, it seems) that call `derivation' with
incorrect arguments (namely, the `name' attribute missing) but get
away with it because of laziness.
2010-04-01 09:55:57 +00:00
Eelco Dolstra
dc31305b38
* Fixed the trace primop and path comparison.
...
* Removed exprToString and stringToExpr because there is no ATerm
representation to work on anymore (and exposing the internals of the
evaluator like this is not a good idea anyway).
2010-03-31 20:09:20 +00:00
Eelco Dolstra
979f163615
* Handle string contexts. `nix-instantiate' can now correctly compute
...
the `firefoxWrapper' attribute in Nixpkgs, and it's about 3 times
faster than the trunk :-)
2010-03-31 19:52:29 +00:00
Eelco Dolstra
d8cd3115d8
* Get nix-env to compile.
2010-03-31 19:12:08 +00:00
Eelco Dolstra
55e207b2dc
* Cache parse trees to prevent repeated parsing of imported Nix
...
expressions.
2010-03-31 16:14:32 +00:00
Eelco Dolstra
3d94be61ea
* Implemented derivations.
2010-03-31 15:38:03 +00:00
Eelco Dolstra
13c2adc897
* Implemented `rec { inherit ...; }'.
2010-03-31 11:05:39 +00:00
Eelco Dolstra
4c53ca2692
* Compare nulls.
2010-03-31 09:54:12 +00:00
Eelco Dolstra
7f19e03c65
* More primops.
2010-03-30 22:39:48 +00:00
Eelco Dolstra
47df476daa
* More operators / primops.
2010-03-30 18:05:54 +00:00
Eelco Dolstra
c9170be2bd
* More primops.
2010-03-30 15:18:20 +00:00
Eelco Dolstra
c3aa615a5f
* More primops.
2010-03-30 14:39:27 +00:00
Eelco Dolstra
5b72d8a749
* Implemented `map'.
2010-03-30 13:47:59 +00:00
Eelco Dolstra
d78a05ab40
* Make `import' work.
2010-03-30 09:22:33 +00:00
Eelco Dolstra
31428c3a06
* Started integrating the new evaluator.
2010-03-29 14:37:56 +00:00
Eelco Dolstra
52090d2418
2010-03-29 10:13:51 +00:00
Eelco Dolstra
e3f32ac5af
2010-03-29 09:43:55 +00:00
Eelco Dolstra
807a67bc74
2010-03-29 09:43:39 +00:00
Eelco Dolstra
392811eb8f
* Strings.
2010-03-28 18:27:07 +00:00
Eelco Dolstra
d96cdcea6b
2010-03-28 16:57:16 +00:00
Eelco Dolstra
3d2b835f30
* Implemented multi-argument primops.
2010-03-28 16:37:39 +00:00
Eelco Dolstra
45d822f29c
* Primops (not yet finished).
2010-03-26 15:45:53 +00:00
Eelco Dolstra
cad8726b2c
* Implemented the ==' and
!=' operators. These now use a deep
...
equality test, so they also work for (finite) attribute sets and
lists.
2010-03-26 13:27:26 +00:00