A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community
Find a file
John Ericson 19c5394971 Change "while evaluating <fun>" to "while *calling*" in trace
The old way was not correct.

Here is an example:
```
 $ nix-instantiate --eval --expr 'let x = a: throw "asdf"; in x 1' --show-trace
error: asdf

       … while evaluating 'x'

       at «string»:1:9:

            1| let x = a: throw "asdf"; in x 1
             |         ^

       … from call site

       at «string»:1:29:

            1| let x = a: throw "asdf"; in x 1
             |                             ^
```
and yet also:
```
 $ nix-instantiate --eval --expr 'let x = a: throw "asdf"; in x' --show-trace
<LAMBDA>
```

Here is the thing: in both cases we are evaluating `x`!

Nix is a higher-order languages, and functions are a sort of value. When
we write `x = a: ...`, `a: ...` is the expression that `x` is being
defined to be, and that is already a value. Therefore, we should *never*
get an trace that says "while evaluating `x`", because evaluating `a:
...` is *trival* and nothing happens during it!

What is actually happening here is we are applying `x` and evaluating
its *body* with arguments substituted for parameters. I think the
simplest way to say is just "while *calling* `x`", and so that is what I
changed it to.
2022-12-02 09:14:12 -05:00
.github Bump zeebe-io/backport-action from 0.0.8 to 0.0.9 2022-11-28 22:00:44 +00:00
config
contrib
doc/manual Merge pull request #7251 from RelationalAI-oss/sp-docs-uninstall-prompt 2022-12-01 19:24:09 +01:00
m4
maintainers
misc
mk
perl
scripts Add --yes option for Nix installation script 2022-10-25 16:43:00 -07:00
src Change "while evaluating <fun>" to "while *calling*" in trace 2022-12-02 09:14:12 -05:00
tests Really fix 'nix store make-content-addressed --json' 2022-12-01 16:29:09 +01:00
.dir-locals.el
.editorconfig
.gitignore
.version
boehmgc-coroutine-sp-fallback.diff
bootstrap.sh
configure.ac
COPYING
default.nix
docker.nix Add nobody user/group to Nix docker image 2022-11-29 10:01:46 +00:00
flake.lock
flake.nix Add tests for auto-uid-allocation, uid-range and cgroups 2022-11-27 16:38:34 +01:00
local.mk
Makefile
Makefile.config.in
precompiled-headers.h
README.md
shell.nix

Nix

Open Collective supporters Test

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. Please refer to the Nix manual for more details.

Installation

On Linux and macOS the easiest way to install Nix is to run the following shell command (as a user other than root):

$ curl -L https://nixos.org/nix/install | sh

Information on additional installation methods is available on the Nix download page.

Building And Developing

See our Hacking guide in our manual for instruction on how to build nix from source with nix-build or how to get a development environment.

Additional Resources

License

Nix is released under the LGPL v2.1.