Wednesday, March 14, 2012  The Cabal of my dreams  This post
outlines changes I think we should make to the Cabal build
infrastructure, in order for it to stay relevant to Haskell
developers. This post is intentionally high level and uses
strong statements; I'm trying to establish a direction to go in,
not discuss implementation details. I have a huge amount of
respect and appreciation for the Cabal developers; this post is
in no way intended as a criticism of them or their work.  Here's
what I expect of a build system:  Hermetic builds  Builds should
be completely independent. The build system must behave as if
all artifacts were rebuilt every time. If any artifacts are
shared, they must be both immutable and uniquely determined by
the inputs used to create them (e.g. compiler flags, source
files, dependencies used, etc.)  If artifacts can't be safely
shared, you're better of rebuilding every time than trying to
share them anyway.  Parallel builds  Real world programs are too
large to be built sequentially.