Recompilation avoidance on ABI hash changes

Matthew Pickering matthewtpickering at gmail.com
Thu Aug 11 12:20:21 UTC 2022


Facundo,

If the interface in question is from a home package module, then it's
required that the ABI of the specifically used function is modified
rather than the ABI hash of the whole module. If the interface is from
an external package then if the ABI of the entire module changes then
that is sufficient to trigger recompilation.

Matt

On Thu, Aug 11, 2022 at 12:11 PM Domínguez, Facundo
<facundo.dominguez at tweag.io> wrote:
>
> Dear devs,
>
> rules_haskell [1] recently earned the ability to skip recompiling modules when the ABI hashes of dependencies don't change in interface files.
>
> We have noticed since then that sometimes ghc --make does avoid rebuilding even when ABI hashes change. However, so far I've been unable to reproduce this in the small. The wiki page on recompilation avoidance does remark that a changing ABI hash is a necessary but not sufficient condition for recompilation [2].
>
> Does anyone have a small example showing how ghc avoids rebuilding even when the ABI hash of a dependency changes?
>
> Thanks in advance!
> Facundo
>
> [1] https://github.com/tweag/rules_haskell/issues/1760#issuecomment-1179102232
> [2] https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/recompilation-avoidance#interface-file-invariants
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list