[ghc-steering-committee] Plugin recompilation avoidance interface (#108)

Ben Gamari ben at well-typed.com
Fri Mar 2 17:05:20 UTC 2018


Ben Gamari <ben at well-typed.com> writes:

> Hello everyone,
>
> I have been assigned as the shepard for proposal #108. This proposes a
> change in GHC's plugin interface allowing plugins greater control over
> recompilation, significantly improving compilation times for projects
> relying on compiler plugins.
>
>
> Summary:
>
> The proposal suggests that the existing fields of the `ghc` package's
> Plugin.Plugin type be wrapped with a type capturing a function computing
> the plugin's recompilation desired behavior,
>
>    data PluginRecompile = ForceRecompile
>                         | NoForceRecompile
>                         | MaybeRecompile Fingerprint
>
> GHC can then use this recompilation information to decide whether
> evaluating the plugin (and consequently invalidating any existing
> compilation artifacts) is necessary.
>
>
> Opinion & recommendation:
>
> The proposal addresses a long-standing limitation (#7414) of the GHC
> plugin interface which has become increasingly visible to users in
> recent years. While the particular approach proposed breaks existing
> plugin users, it is expressive enough to allow GHC to perform more
> aggressive recompilation avoidance in the future [1]. Moreover, the
> smart constructors proposed should make for a reasonably smooth
> migration path.
>
> Given that the plugins appears to have buy-in from a few notable plugin
> authors, I recommend that we accept this proposal.
>
I've pinged a number of prominent plugin authors and heard no reply.
Therefore, I would again recommend that we accept.

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-steering-committee/attachments/20180302/ed0ea7ef/attachment.sig>


More information about the ghc-steering-committee mailing list