quick report using GHC 7.10 RC3

Mark Lentczner mark.lentczner at gmail.com
Mon Mar 23 05:44:41 UTC 2015


I built up a provisional HP 2015.2.0.0 based on GHC 7.10 RC3, and then when
testing it, built my medium-ish project Plush with it all. This is my first
brush with 7.10 and the new base libs, Applicative, FTP and all. For the
most part, it all worked, but here are some observations:

*1. Cabal-1.22.1.2 isn't on Hackage*
Boot strapping HP now needs to bootstrap cabal-install in order to be able
to build with 7.10. My fancy-pants build system for HP doesn't do that
(yet), so I did it by hand. Only hitch: Cabal 1.22.1.2 isn't on hackage, so
I had to build with 1.22.1.1 - so the bootstrap wasn't perfect, but good
enough to work.

*2. Still need old-local and old-time*
Because....wait for it... cabal-install needs them! So do cgi and HTTP
packages.

*3. Slower compilation*
The platform used to take about 20min. to compile. Now it takes a full
hour. Did GHC really slow down that much? The newer OpenGL and OpenGLRaw
packages are significantly larger and slower, and that might account for
about half the extra time... but still GHC seems much slower.

*4. GHC is a disk monster*
Now weighing in at 900+MB! That is 100MB over 7.8!

*5. Warnings Galore*
Of course most of the packages compile with tons of warnings. I mean tons!
Looking at my own packages, since I usually compile -Wall, I will need tons
of work to remove these. The saddness is that if I want my package to
continue to work on 7.8 I'll have to put in tons of CPP statements.

*6. Bit by additions to the Prelude*
In particular, Word, since I had a data type named that. (It was in a
grammar for the shell, and since Data.Word was no where near this, I claim
it was a reasonable choice of name.)  I had to add tons of import Prelude
hiding (Word) statements. Adding common words as new exports from the
Prelude is a real pain!

*7. Cabal incompatible API change*
In particular, the api that a custom Setup.hs uses.
Distribution.Simple.UserHooks changed the type of a hook. It should not, it
should have added another to do what it wanted. The poblem is you can't use
CPP in Setup.hs. And so now anyone using the testHook hook is in a pickle:
Your Setup.hs can't work in both 7.10 and 7.8!

*8. Haddock messaging*
What has gotten into Haddock? There is so much terminal output now - I just
have to ignore it all. It spews more than the compiler does.

*9. Library divergence*
We have random... and now we'll have to have tf-random, too, because alex
and QuickCheck both need it. So now we'll have two random libraries.
Couldn't we have folded tf-random into random? On a similar front, we've
got attoparsec, pulling in scientific. Couldn't that have gone somewhere? I
realize that the trend is for many small minimal libs... but for the core
that is going to all be there always anyway - and more closed set works
better I think.


Summary:
1, 2 & 8 are minor, 3 & 4 are sad.
5 ~ 7 will make the job of anyone who wants their code to work with even
one prior major GHC rev. hard, and ugly.
9 is what makes me worry most...

— Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20150322/c257d1bd/attachment.html>


More information about the ghc-devs mailing list