[GHC-Releases] Feedback on potential change in boot library

Ben Gamari ben at well-typed.com
Wed Nov 27 18:21:14 UTC 2024


"Sebastian Graf" <sgraf1337 at gmail.com> writes:

> Hi,
>
> Do we have concrete evidence that minor bumps in a boot library have 
> caused breakage in the past? (That would of course be a bug in the boot 
> library according to the PVP.)
>
Yes, I cited two such examples that came to mind in the original
message. These weren't hard to find, despite boot library bumps in GHC
minor releases being historically rather rare.

Contrary to what one might be tempted to conclude, PVP-compliant,
non-buggy minor bumps can cause breakage for downstream users. The
reason for this is typically the introduction of new exports. For
instance, in #25411 we found that the bump of `deepseq` in 9.8.3
introduced a new export (`Unit`) from `Control.DeepSeq`. This is, of
course, a minor change under the PVP but renders previously working
modules unbuildable due to ambiguous occurrences.

Perhaps in an ideal world all `import`s would be either `qualified` or
include an explicit import list but, sadly, this is not the world in
which we live. Consequently, the principle difference between a major
and minor bump is that the breakage from the latter is usually "easy" to
fix. However, it is breakage nevertheless and even easy breakage can
cost significant time when migrating large code-bases.

> I would think that such breakage is even less of an issue for a new GHC 
> minor release (say GHC 9.8.4).
> The hackage ecosystem is likely prepared to compile with the GHC 9.8 
> series at this point, so it should be possible to detect such breakages 
> by compiling stackage/hackage and running testsuites.
>
Indeed head.hackage identified the breakage in 9.8.3. However, we
decided to move ahead regardless since the maintainer requested it.
The policy proposed in the head of thread will make this sort of
breakage considerably more likely to appear in future releases.

> Besides, the only reliable way to prevent such breakage is not to bump 
> any boot library *at all*.
> If a boot library breaks on a minor bump, it is just as likely that it 
> breaks on a super-minor bump.
>
I am not sure I agree. While the PVP is silent on this matter, IMHO
patch-level bumps should not touch external interfaces at all, only
implementation and packaging. This makes it much less likely for
breakage to manifest.

Cheers,

- Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-releases/attachments/20241127/40b8d5f0/attachment.sig>


More information about the ghc-releases mailing list