Eelco Dolstra
7af6a2fd71
* intersectAttrs: optimise for the case where the second set is larger
...
than the first set. (That's usually the case with callPackage.)
2010-08-02 11:54:44 +00:00
Eelco Dolstra
f16fe2af8d
* builtins.toXML: propagate the string context. This is a regression
...
from the old ATerm-based evaluator.
2010-06-10 10:29:50 +00:00
Eelco Dolstra
1ab67cf437
2010-06-02 09:43:04 +00:00
Eelco Dolstra
89865da76d
* Turn build errors during evaluation into EvalErrors.
2010-06-01 11:19:32 +00:00
Eelco Dolstra
93cd5a4a13
* The << operator on values should be const.
2010-05-18 10:36:37 +00:00
Eelco Dolstra
b2235d81d1
* Restore the __overrides feature that was lost somewhere in the
...
fast-eval branch.
2010-05-15 08:10:12 +00:00
Eelco Dolstra
bd25ac2260
* Print attributes in sorted order.
2010-05-12 12:15:49 +00:00
Eelco Dolstra
81a4b4e49b
* Implemented tryEval, the last missing primop in the fast-eval
...
branch. Also added a test for tryEval.
2010-05-12 11:23:44 +00:00
Eelco Dolstra
1a8eb6e3ec
2010-05-07 15:26:33 +00:00
Eelco Dolstra
83dfa89870
* Sync with the trunk.
2010-05-07 14:46:47 +00:00
Eelco Dolstra
01e58adce0
* Store position info for inherited attributes.
2010-05-07 12:43:57 +00:00
Eelco Dolstra
83d7b89660
* Updated addErrorContext.
2010-05-07 12:33:14 +00:00
Eelco Dolstra
e2d5e40f4f
* Keep track of the source positions of attributes.
2010-05-07 12:11:05 +00:00
Eelco Dolstra
84ce7ac76f
* Store attribute positions in the AST and report duplicate attribute
...
errors with position info.
* For all positions, use the position of the first character of the
first token, rather than the last character of the first token plus
one.
2010-05-06 16:46:48 +00:00
Eelco Dolstra
2be6118f4c
* Don't need the test program anymore.
2010-04-23 09:09:32 +00:00
Eelco Dolstra
0bc468f195
* Simplify the implementation of `with'. This gives a 7% speedup in
...
evaluating the NixOS system configuration.
2010-04-22 15:08:09 +00:00
Eelco Dolstra
ebade9ff8b
* Check for duplicate attribute names / function arguments. `make
...
check' now succeeds :-)
* An attribute set such as `{ foo = { enable = true; };
foo.port = 23; }' now parses. It was previously rejected, but I'm
too lazy to implement the check. (The only reason to reject it is
that the reverse, `{ foo.port = 23; foo = { enable = true; }; }', is
rejected, which is kind of ugly.)
2010-04-22 11:02:24 +00:00
Eelco Dolstra
2d7636529f
* String equality tests should take the context into account. All the
...
evaluation test cases now succeed.
2010-04-22 09:54:11 +00:00
Eelco Dolstra
6f0f16497a
* Fix the interpretation of ''\<character> in indented strings.
2010-04-21 16:18:27 +00:00
Eelco Dolstra
0777448ca6
* Fixed builtins.genericClosure.
2010-04-21 15:57:11 +00:00
Eelco Dolstra
fe2d869e04
* Store user environment manifests as a Nix expression in
...
$out/manifest.nix rather than as an ATerm.
(Hm, I thought I committed this two days ago...)
2010-04-21 15:08:58 +00:00
Eelco Dolstra
f3b8833a48
* Drop the dependency on the ATerm library.
2010-04-19 14:51:58 +00:00
Eelco Dolstra
efc7a579e8
* Don't use the ATerm library for parsing/printing .drv files.
2010-04-19 13:46:58 +00:00
Eelco Dolstra
55b5ddd3ca
* Added parsing of manifests in ATerm format.
2010-04-19 12:10:04 +00:00
Eelco Dolstra
5c31995bb8
* Updated some more primops.
2010-04-16 15:13:47 +00:00
Eelco Dolstra
8ca4a001cb
* Improve sharing a bit.
2010-04-16 14:03:26 +00:00
Eelco Dolstra
497e4ad126
* Remove some redundant tests.
2010-04-16 13:51:01 +00:00
Eelco Dolstra
02c1dac909
* In an nested with' where the inner with is a variable (
with ...;
...
with someVar; ...'), the contents of the variable would be
clobbered. (The attributes in the outer `with' were added to the
variable.)
2010-04-16 13:44:02 +00:00
Eelco Dolstra
04c4bd3624
* Store lists as lists of pointers to values rather than as lists of
...
values. This improves sharing and gives another speed up.
Evaluation of the NixOS system attribute is now almost 7 times
faster than the old evaluator.
2010-04-15 00:37:36 +00:00
Eelco Dolstra
e41b5828db
* Better stats.
2010-04-14 23:48:46 +00:00
Eelco Dolstra
d39d3c6264
* Implemented inherit.
2010-04-14 23:25:05 +00:00
Eelco Dolstra
267dc693d2
* Fix builtins.
2010-04-14 22:59:39 +00:00
Eelco Dolstra
81de12bc8f
* Refactoring: move variable uses to a separate class.
2010-04-14 15:14:23 +00:00
Eelco Dolstra
110d155778
* Implemented withs.
2010-04-14 15:01:04 +00:00
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
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
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
Ludovic Courtès
aac5fcfbb5
Re-add drvPath' and
outPath' attributes to <derivation> XML nodes.
...
This fixes a regression introduced in r20882 ("Add source location
information to the XML output.").
* src/libexpr/expr-to-xml.cc (nix::printTermAsXML): Dereference the
attribute RHS from "drvPath" and "outPath".
2010-04-09 21:30:55 +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
Ludovic Courtès
09381cccff
Make source location info in the XML output optional.
...
* src/libexpr/expr-to-xml.cc (nix::showAttrs): Add `location'
parameter. Provide location XML attributes when it's true. Update
callers.
(nix::printTermAsXML): Likewise.
* src/libexpr/expr-to-xml.hh (nix::printTermAsXML): Update prototype;
have `location' default to `false'.
* src/nix-instantiate/nix-instantiate.cc (printResult, processExpr): Add
`location' parameter; update callers.
(run): Add support for `--no-location'.
* src/nix-instantiate/help.txt: Update accordingly.
* tests/lang.sh: Invoke `nix-instantiate' with `--no-location' for the
XML tests.
* tests/lang/eval-okay-toxml.exp, tests/lang/eval-okay-to-xml.nix: New
files.
2010-03-31 12:38:31 +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
Ludovic Courtès
471419d1fa
Add source location information to the XML output.
...
* src/libexpr/expr-to-xml.cc (nix::showAttrs): Dereference the attribute
RHS. Add "path", "line", and "column" XML attributes to the node when
source location information is available.
(nix::printTermAsXML): Likewise for functions.
2010-03-31 08:29:05 +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
Eelco Dolstra
8da118e4d0
* Measure stack usage.
2010-03-25 16:35:24 +00:00
Eelco Dolstra
c2ba4313fb
* Implemented lists.
2010-03-25 15:38:37 +00:00
Eelco Dolstra
25eedf085d
* Quick and dirty implementation of with'.
with e1; e2' is
...
basically desugared to `let <with> = e1; e2', and `lookupVar' looks
in each <with> in the environment chain for an attribute with the
specified name.
2010-03-25 14:51:04 +00:00
Eelco Dolstra
3c9f8fc9b6
* Don't convert variable names to strings.
2010-03-25 13:10:04 +00:00
Eelco Dolstra
f450384ded
* Implement blackholing.
2010-03-25 12:51:14 +00:00
Eelco Dolstra
ef8bd919fc
* Implement `...' and default function arguments.
2010-03-25 12:45:23 +00:00
Eelco Dolstra
8a10360c91
* Simplify @-patterns: only {attrs}@name' or
name@{attrs}' are now
...
allowed. So `name1@name2', `{attrs1}@{attrs2}' and so on are now no
longer legal. This is no big loss because they were not useful
anyway.
This also changes the output of builtins.toXML for @-patterns
slightly.
2010-03-25 12:19:41 +00:00
Eelco Dolstra
7482349fe8
* Implemented attribute set pattern matches.
2010-03-24 23:40:00 +00:00
Eelco Dolstra
0fd3648d34
* Store values in environments.
2010-03-24 12:41:08 +00:00
Eelco Dolstra
b70bd8fe56
* Reduce the number of value allocations in eval() by moving
...
responsibility for allocation of the result to the caller.
2010-03-24 12:11:38 +00:00
Eelco Dolstra
d31c59eb17
* Plain lambdas.
2010-03-24 11:06:05 +00:00
Eelco Dolstra
0910ae9568
* Start of an evaluator that uses call-by-need (with thunk updating)
...
instead of (memoised) call-by-name.
2010-03-23 17:30:50 +00:00
Nicolas Pierron
741b7577c1
Merge r20344 & r20346.
2010-03-14 11:58:07 +00:00
Eelco Dolstra
327a232c85
* Remove support for old (before Nix 0.12pre12020) databases.
2009-11-06 01:15:44 +00:00
Eelco Dolstra
deb342fb08
* builtins.trace: in the common case that the value is a string, then
...
show the string, not the ATerm, so we get `trace: bla' instead of
`trace: Str("bla",[])'.
2009-10-22 08:10:12 +00:00