Skip to content
Snippets Groups Projects
  1. Apr 26, 2004
  2. Apr 23, 2004
  3. Apr 22, 2004
  4. Apr 21, 2004
  5. Apr 15, 2004
  6. Apr 14, 2004
  7. Apr 08, 2004
  8. Apr 06, 2004
  9. Apr 05, 2004
    • Eelco Dolstra's avatar
      * When something goes wrong in the evaluation of a Nix expression, · 59b94ee1
      Eelco Dolstra authored
        print a nice backtrace of the stack, rather than vomiting a gigantic
        (and useless) aterm on the screen.  Example:
      
          error: while evaluating file `.../pkgs/system/test.nix':
          while evaluating attribute `subversion' at `.../pkgs/system/all-packages-generic.nix', line 533:
          while evaluating function at `.../pkgs/applications/version-management/subversion/default.nix', line 1:
          assertion failed at `.../pkgs/applications/version-management/subversion/default.nix', line 13
      
        Since the Nix expression language is lazy, the trace may be
        misleading.  The purpose is to provide a hint as to the location of
        the problem.    
        
      59b94ee1
  10. Apr 02, 2004
  11. Mar 30, 2004
    • Eelco Dolstra's avatar
      * The recent change in nixpkgs of calling `stdenv.mkDerivation' · c4ac2a16
      Eelco Dolstra authored
        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)'.
          
      c4ac2a16
  12. Mar 29, 2004
  13. Mar 28, 2004
  14. Mar 27, 2004
    • Eelco Dolstra's avatar
      * Disallow the Nix store or any of its parents from being symlinks. · f8cd904e
      Eelco Dolstra authored
        This is because the contents of these symlinks are not incorporated
        into the hashes of derivations, and could therefore cause a mismatch
        between the build system and the target system.  E.g., if
        `/nix/store' is a symlink to `/data/nix/store', then a builder could
        expand this path and store the result.  If on the target system
        `/nix/store' is not a symlink, or is a symlink that points somewhere
        else, we have a dangling pointer.
      
        The trigger for this change is that gcc 3.3.3 does exactly that (it
        applies realpath() to some files, such as libraries, which causes
        our impurity checker to bail out.)
      
        An annoying side-effect of this change is that it makes it harder to
        move the Nix store to a different file system.  On Linux, bind
        mounts can be used instead of symlink for this purpose (e.g., `mount
        -o bind /data/nix/store /nix/store').
      f8cd904e
    • Eelco Dolstra's avatar
      * Do not close a nesting level twice after close() has been · f0f7a9f2
      Eelco Dolstra authored
        called explicitly on a Nest object.
      f0f7a9f2
  15. Mar 22, 2004
  16. Mar 19, 2004
  17. Mar 18, 2004
  18. Mar 17, 2004
Loading