Go to file
Eelco Dolstra c4ac2a164a * The recent change in nixpkgs of calling `stdenv.mkDerivation'
instead of `derivation' triggered a huge slowdown in the Nix
  expression evaluator.  Total execution time of `nix-env -qa' went up
  by a factor of 60 or so.

  This scalability problem was caused by expressions such as

    (x: y: ... x ...) a b

  where `a' is a large term (say, the one in
  `all-packages-generic.nix').  Then the first beta-reduction would
  produce

    (y: ... a ...) b

  by substituting `a' for `x'.  The second beta-reduction would then
  substitute `b' for `y' into the body `... a ...', which is a large
  term due to `a', and thus causes a large traversal to be performed
  by substitute() in the second reduction.  This is however entirely
  redundant, since `a' cannot contain free variables (since we never
  substitute below a weak head normal form).

  The solution is to wrap substituted terms into a `Closed'
  constructor, i.e.,

    subst(subs, Var(x)) = Closed(e) iff subs[x] = e

  have substitution not descent into closed terms,

    subst(subs, Closed(x)) = Closed(x)

  and otherwise ignore them for evaluation,

    eval(Closed(x)) = eval(x).

* Fix a typo that caused incorrect substitutions to be performed in
  simple lambdas, e.g., `(x: x: x) a' would reduce to `(x: a)'.
2004-03-30 15:05:35 +00:00
corepkgs * Make perl a dependency of Nix. 2004-03-15 15:23:53 +00:00
doc * Lots of manual stuff. Reference pages for most Nix commands. 2004-02-10 16:14:47 +00:00
externals * Don't build ATerm library if we don't need to. 2004-02-16 16:48:06 +00:00
scripts * Make perl a dependency of Nix. 2004-03-15 15:23:53 +00:00
src * The recent change in nixpkgs of calling `stdenv.mkDerivation' 2004-03-30 15:05:35 +00:00
testpkgs * Argument support in Fix. Arguments can be passed through the 2003-08-15 13:01:45 +00:00
AUTHORS * Autoconf / Automake configuration and building. 2003-04-04 16:14:56 +00:00
COPYING * Autoconf / Automake configuration and building. 2003-04-04 16:14:56 +00:00
ChangeLog * Autoconf / Automake configuration and building. 2003-04-04 16:14:56 +00:00
INSTALL * Autoconf / Automake configuration and building. 2003-04-04 16:14:56 +00:00
Makefile.am * Allow linking against an external Berkeley DB / ATerm library. 2004-02-16 16:37:16 +00:00
NEWS * Autoconf / Automake configuration and building. 2003-04-04 16:14:56 +00:00
README * Manual updates. 2004-01-20 11:49:32 +00:00
configure.ac * Added a utility that can be used to produce nice HTML pages from Nix 2004-03-15 21:51:14 +00:00
nix.spec.in * Specify Perl as a dependency for the RPM. 2004-03-29 12:10:15 +00:00
substitute.mk * Make perl a dependency of Nix. 2004-03-15 15:23:53 +00:00

README

                             *** Nix ***

For installation and usage instructions, please read the manual, which
can be found in docs/manual/manual.html, and additionally at the Nix
website at <http://www.cs.uu.nl/groups/ST/Trace/NixDeploymentSystem>.