Version control systems
malcolm.wallace at cs.york.ac.uk
Wed Aug 13 06:21:53 EDT 2008
> - Why does NHC98 break so often? Is it because people are checking in
> code that is not Haskell 98 compatible?
Yes, there is a bit of that. Also, as you point out, there is quite a
lot of CPP conditionally compiled code in the libraries, and I would
say that it is the major contributor to breakage. It is often unclear
which parts of the code are shared and which separate, so a lot of
breakage arises from e.g. exporting a name that is defined for ghc only.
In addition, there are some (once obscure) bugs in nhc98 that are now
triggered increasingly frequently. (We can't blame anyone except
nhc98 for those of course.) These include complex import renaming
resolution, and contexts on pattern variables.
> - It seems to me that implementations "share" libraries using CPP.
> That seems like a bad approach to me.
Agreed. The CPP was always intended to be as temporary as possible,
with the goal to share as much as possible. One of the problems is
that the primitives provided by compilers are different. Really,
there should be a package below 'base' in the dependency tree,
specific to each compiler, and non-shared. Then everything from base
upwards would be cleaner and more portable.
> If it's so difficult to share code without continuously breaking the
> build then we're better of keeping the code separate.
I don't agree. The only way to achieve convergence is to start from
some semi-merged point, and work to eliminate the differences. Igloo
is doing a fantastic job of determining the dependencies and gradually
moving stuff around to enable this to happen.
More information about the Glasgow-haskell-users