<div dir="ltr">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:<div><br></div><div><b>1. Cabal-1.22.1.2 isn't on Hackage</b></div><div>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.</div><div><div><br></div></div><div><b>2. Still need old-local and old-time</b></div><div>Because....wait for it... cabal-install needs them! So do cgi and HTTP packages.</div><div><br></div><div><b>3. Slower compilation</b></div><div>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.</div><div><br></div><div><b>4. GHC is a disk monster</b></div><div>Now weighing in at 900+MB! That is 100MB over 7.8!</div><div><br></div><div><b>5. Warnings Galore</b></div><div>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.</div><div><br></div><div><b>6. Bit by additions to the Prelude</b><br></div><div>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!</div><div><br></div><div><b>7. Cabal incompatible API change</b></div><div>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!</div><div><br></div><div><b>8. Haddock messaging</b></div><div>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.</div><div><br></div><div><b>9. Library divergence</b></div><div>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.</div><div><br></div><div><br></div><div>Summary: </div><div>1, 2 & 8 are minor, 3 & 4 are sad.</div><div>5 ~ 7 will make the job of anyone who wants their code to work with even one prior major GHC rev. hard, and ugly.</div><div>9 is what makes me worry most...</div><div> </div><div>— Mark</div></div>