[Nix-dev] GHC 7.8 plans

Peter Simons simons at cryp.to
Sun Mar 30 22:47:45 CEST 2014


Hi Gergely,

 > This is what I wanted to know, that you want to switch after packages
 > are OK and we're not waiting for a new haskell platform or whatever.
 > I'd prefer this way too, switch as soon as it works reasonably for
 > everything.

personally, I believe that Haskell Platform is useful mainly to
encourage library writers to retain a certain degree of backwards
compatibility even if it's inconvenient. When I tell someone that his
library doesn't build with the latest HP release, then they tend to
perceive that a significant issue and usually make an effort to remedy
the situation.

As a Haskell programmer, however, HP feels irrelevant to me. If I have
to choose between different versions of the same library, I tend to
choose the *latest* version -- regardless of what the latest HP release
recommends. HP releases are far too infrequent to be relevant for
day-to-day programming, IMHO.


 > In the current nixpkgs with ghc763, the default is happy 1.18 and alex
 > 3.0 in the sense that e.g. the pandoc derivation uses these older
 > versions (through haskell-defaults.nix, I guess).  This is a bit
 > unfortunate for me, because on the other hand modern GHC (head and 7.8)
 > requires 1.19 and 3.1 to build.

For every haskellPackages_ghcXYZ package set, we pick a release of the
Haskell Platform that feels "appropriate" for that compiler (i.e. the
latest available version when that compiler was released), and then we
enforce the package versions recommended by that HP release in the
package set. Since we associate GHC 7.6.3 with HP 2013.2.0.0 -- which
mandates alex 3.0.5 and happy 1.18.10 -- this is what you get in
haskellPackages_ghc763.

In fact, this practice has become a serious issue for us: old package
sets like haskellPackages_ghc6123 can build virtually nothing, because
they provide ancient versions of fundamental libraries like 'network',
'parsec', etc. We've locked these old library versions in because that
makes haskellPackages_ghc6123 conform to HP 2009.2.0.2 or something, but
what good is that conformance if you can't build anything in that
environment?

Personally, I'd like to turn our various Haskell Platform environments
into 'ghcWithPackages' expressions that live in all-packages.nix and
provide exactly what they promise -- a properly installed Haskell
Platform X.Y.Z that users can install into their profile. But those
configurations should have no affect on the library versions we choose
as defaults in haskellPackages_ghcXYZ. The default versions chosen there
should always be the latest ones that we can choose without causing
serious build failures.


 > May I ask why nixpkgs still prefers to build tools like pandoc with the
 > older happy?  Will pandoc not build with the newer 1.19 one, or is this
 > because 1.18 is specified in the current haskell platform?  Will this
 > change with 7.8?

It's because 1.18 is specified by the current HP. I would like to change
this behavior ASAP, but it's not exactly a trivial change to make and I
can't say when I'll have the chance to pull it off.

Take care,
Peter



More information about the nix-dev mailing list