I just found out that GHC 9.4 seems to have brought a major improvement (for me at least):
If I have diamond dependencies Main.hs
→ A.hs
, B.hs
→ Lib.hs
, and I change Lib.hs
breaking both A
and B
, ghc --make
now tries compiling both A
and B
, showing errors for both. It used to be that ghc --make
would switch between trying to compile A
and B
, making iteration very painful.
So, big thanks to the GHC team for addressing this!
I couldn’t really make this out in the changelog, was it a side-effect of the multiple home module work?
(I ran across this trying to reproduce cabal issue Nondeterministic build order makes iterating painful · Issue #8215 · haskell/cabal · GitHub to see about reporting it against GHC.)