[Nix-dev] Dataflow

James Cook james.cook at utoronto.ca
Thu Dec 25 11:02:47 CET 2014


On 25 December 2014 at 01:13, stewart mackenzie <setori88 at gmail.com> wrote:
> So I've packaged together a number of erlang dependencies together,
> then compiled them a number of times in a row.
>
> I noticed that the error outputs were different each time.
>
> To me this means nix isn't deterministic.
>
> I'd like to discuss the inclusion of the dataflow language concept into nix.
>
> By including this concept the builds become deterministic, one could
> go a step further and introduce light weight language level threads.
> Should unbound variable Z in thread X become bound on thread Y then
> execution of thread X continues.
>
> This makes nix deterministic.
>
> Great efforts have been made to refining the nix way, ie reproducible
> builds. This is achieved by downloading dependencies first then making
> them immutable. This means we're half way there as the immutable
> nature of these packages is critical for the implementation of
> dataflow.
>
> Though having said that, there might not be need for concern as there
> seems to be an element of dataflow, in that should one execute nix
> expressions in multiple shells which touch the same packages one shell
> will simply wait for those packages to be built by the other.
>
> Might I hear the community's opinion on this?

My understanding was that non-determinacy in nix appears during the
build process. That is, when nix calls make or configure or whatever
other programs are responsible for producing the final output, those
programs might not give repeatable output (sometimes related to
parallel builds using the -j option to make). So I don't think any
change to the nix tools themselves will help here, unless you want the
nix tools to take over some of the responsibilities that we usually
pass on to these other programs.

James


More information about the nix-dev mailing list