I concur, and funnily enough was about open a thread about the boundaries between our core tooling before seeing this topic.
There are things that GHC knows too much about despite belonging to the area of package management (for which we have cabal) or documentation (for which we have haddock). I understand GHC was created before cabal but we ought to enshrine Cabal (not necessarily cabal-install
) as the package manager for Haskell projects, with clearly defined roles and interactions that are not only driven by historical needs.
Edit: While vendoring a data structure from cabal, GHC ended up with a very particular field in the GenericUnitInfo
record… See ghc/ghc#25073