
I recently submitted a pull request to Cabal to remove a block of code that lived inside a CPP conditional, that I suspect had not been compiled for years: https://github.com/haskell/cabal/pull/1148 I think it would be beneficial if we came up with a policy that allowed us to prune code like this more thoroughly: a clear statement of what libraries and compilers, at what versions, we intend Cabal to be used with. The situation we have at the moment is one where someone bumps a library version in one place, dropping support for some setup in the name of simplicity, but because there is no universal policy, other code to take care of that setup may remain. Code like the stuff I removed continues to exist in a state of limbo, and it is highly likely that when changes are made that break it, no-one will notice, since no-one is testing on that setup anymore. The result is a far more confusing and intricate scattering of CPPery than any of us want to deal with. The README still contains advice for users of GHC 6.4.1. I think it would be wise to bin that and replace it with a more explicit statement of exactly which targets we are programming to. Key questions we need to answer are: - what is the oldest version of GHC we intend to support? - do we still support Hugs? what about other non-GHC implementations?