<div dir="ltr">I spent a little time the other day building all of Hackage with GHC HEAD. Here&#39;s a quick writeup of what I found.<div><br></div><div>Total packages: 5564</div><div>Succeeded with 7.6.3: 3234</div><div>Succeeded with HEAD: 2061</div>
<div>Succeeded with 7.6.3 <b><font color="#cc0000">but failed with HEAD: 1186</font></b></div><div><br></div><div>(A few dozen packages built with HEAD, but not with 7.6.3, which is why the numbers don&#39;t add up.)<br></div>
<div><br></div><div><div>I think the condensed version of the story is that we&#39;re actually in good shape, the above numbers notwithstanding. There are only a few categories of build regression, which I detail below. Except for one genuine bug, the rest (at least those I&#39;ve seen so far) are upgrade details that could be written about in release notes or a blog post.</div>
<div><br></div></div><div>There currently exists just one panic-related bug, which prevents all 23 packages in the Snap web framework from building:</div><div><br></div><div><div>ghc: panic! (the &#39;impossible&#39; happened)</div>
<div>  (GHC version 7.7.20130923 for x86_64-unknown-linux):</div><div>        <a href="http://ghc.haskell.org/trac/ghc/ticket/8329">dmdTransformDictSelSig: split failed</a></div></div><div><br></div><div>Of the 1186 packages that build with 7.6.3 but not HEAD:</div>
<div><br></div><div>311 fail due to cabal being unable to solve dependency constraints. As usual, most (195) have excessively tight constraints on base.</div><div><br></div><div>37 packages fail due to GeneralizedNewtypeDeriving and the new role infrastructure, due to the following failures in packages upon which they depend.</div>
<div><br></div><div><div><font face="courier new, monospace">12 language-c-0.4.2        the last parameter of ‛Error’ is at role Nominal</font></div><div><font face="courier new, monospace">11 logfloat-0.12.1         the last parameter of ‛IArray’ is at role Nominal</font></div>
<div><font face="courier new, monospace"> 5 diagrams-lib-0.7.1.1    the last parameter of ‛Transformable’ is at role Nominal</font></div><div><font face="courier new, monospace"> 4 smallcheck-1.0.4        the last parameter of ‛MonadLogic’ is at role Nominal</font></div>
<div><font face="courier new, monospace"> 2 monadiccp-0.7.6         the last parameter of ‛ReaderM’ is at role Nominal</font></div><div><font face="courier new, monospace"> 2 histogram-fill-0.8.1.0  the last parameter of ‛BinEq’ is at role Nominal</font></div>
<div><font face="courier new, monospace"> 1 acme-schoenfinkel-0.1.1 the last parameter of ‛ArrowApply’ is at role Nominal</font></div></div><div><br></div><div>There&#39;s quite a bit of transitive primop-related breakage.</div>
<div><br></div><div><div><font face="courier new, monospace">    364 template-haskell-2.8.0.0    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div><div><div><font face="courier new, monospace">     48 primitive-0.4.1    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div>
</div><div><div><font face="courier new, monospace">      6 primitive-0.5.0.1    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div></div><div><br></div><div>Most of the breakage could be fixed by loosening the dependencies on the template-haskell and primitive packages, and here are the rest.<br>
</div><div><br></div><div><font face="courier new, monospace">     63 uulib-0.9.15    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div><div><span style="font-family:monospace">     20 utf8-light-0.4.0.1    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</span><br>
</div><div><font face="courier new, monospace">     19 safeint-0.5.3    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div><div><font face="courier new, monospace">     16 permutation-0.4.1    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div>
<div><font face="courier new, monospace">      9 floatshow-0.2.3    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div><div><font face="courier new, monospace">      9 bytestring-show-0.3.5.5    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div>
<div><font face="courier new, monospace">      8 STMonadTrans-0.3.1    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div><div><font face="courier new, monospace">      7 hashtables-1.1.0.2    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div>
<div><span style="font-family:monospace">      2 word24-1.0.3    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</span><br></div><div><font face="courier new, monospace">      2 arithmoi-0.4.0.3    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div>
<div><font face="courier new, monospace">      1 word8-0.0.3    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div><div><font face="courier new, monospace">      1 IORefCAS-0.2.0.1    Couldn&#39;t match expected type ‛Bool’ with actual type ‛Int#’</font></div>
</div><div><br></div><div>Roughly 45 packages are broken by changes to Typeable.</div></div>