Specifics aside (because they were just examples, sometimes poor ones), the
point here is that Nix can only express tightly coupled dependencies. Lack
of the ability to correctly express loosely coupled relationships causes
needless rebuilds. It really doesn't matter whether Java has achieved
perfect isolation from the host environment. The important point is that
recompiling java code merely because some change in the
environment triggered a rebuild of the JDK or JRE will not make a bit of
difference--especially if the same JDK or JRE is installed.

Likewise with Ruby, Python, etc. (the exception is for impure/native
code.)

BTW: "Loosely coupled" should be able to distinguish between Python 3 and
Python 2. Or Java 1.4 vs Java 1.5. As in "Any package claiming to be a jdk
version 1.4 will do."

And again, this is not to automatically select an implementation. It's to
check and see if the user forgot to include something vital in their system
configuration, or to offer them a choice of available implementations in an
interactive setting.

Bryce
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to