[Nix-dev] Dataflow

stewart mackenzie setori88 at gmail.com
Thu Dec 25 10:13:11 CET 2014


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?


More information about the nix-dev mailing list