Since the release of the GHC 7.6 RC, I&#39;ve been going through my packages and fixing up build problems so that people who upgrade to 7.6 will have a smooth ride.<div><br></div><div>Sad to say, my experience of 7.6 is that it has felt like a particularly rough release for backwards incompatibility. I wanted to quantify the pain, so I did some research, and here&#39;s what I found.</div>
<div><br></div><div>I maintain 25 open source Haskell packages. Of these, the majority have needed updates due to the GHC 7.6 release:</div><div><ul><li>base16-bytestring</li><li>blaze-textual</li><li>bloomfilter</li><li>
configurator</li><li>criterion</li><li>double-conversion</li><li>filemanip</li><li>HDBC-mysql</li><li>mwc-random</li><li>pcap</li><li>pool</li><li>riak-haskell-client</li><li>snappy</li><li>text</li><li>text-format</li><li>
text-icu</li></ul>That&#39;s 16 out of 25 packages I&#39;ve had to update. I&#39;ve also either reported bugs on, or had to fix, several other people&#39;s packages along the way (maybe four?). So let&#39;s say I&#39;ve run into problems with 20 out of the combined 29 packages of mine and my upstreams.</div>
<div><br></div><div>The reasons for these problems fall into three bins:</div><div><ul><li>Prelude no longer exports catch, so a lot of &quot;import Prelude hiding (catch)&quot; had to change.</li><li>The FFI now requires constructors to be visible, so &quot;CInt&quot; has to be imported as &quot;CInt(..)&quot;.</li>
<li>bytestring finally got bumped to 0.10, so many upper bounds had to be relaxed (<i>cf</i> my suggestion that the upper-bounds-by-default policy is destructive).</li></ul>It has been a lot of work to test 29 packages, and then modify, rebuild, and release 20 of them. It has consumed most of my limited free time for almost two weeks. Worse, this has felt like make-work, of no practical benefit to anyone beyond scrambling to restore the status quo ante.</div>
<div><br></div><div>If over half of my packages needed fixing, I&#39;m alarmed at the thought of the effects on the rest of Hackage.</div><div><br></div><div>I&#39;m torn over this. I understand and agree with the impetus to improve the platform by tidying things up, and yet just two seemingly innocuous changes (catch and FFI) have forced me to do a bunch of running to stand still.</div>
<div><br></div><div>I don&#39;t have any suggestions about what to do; I know that it&#39;s hard to estimate the downstream effects of what look like small changes. And so I&#39;m not exactly complaining. Call this an unhappy data point.</div>