Proposed annotation system + dependency issue
omega.theta at gmail.com
Tue Oct 14 19:12:00 EDT 2008
2008/10/14 Thomas Schilling <nominolo at googlemail.com>:
> So, I've been thinking. How do plugins get used by GHC? Maybe it's
> possible to have a ghc-plugin-api package that exports binary and ghc.
> IIUC, the plugin need not be part of the compiled program, so we
> could expose binary only to the plugins. This way at least only
> plugin-writers would be bound to GHC's version of binary.
One key point that perhaps I haven't expressed very clearly is that
there were basically three seperate concerns in my SoC work:
1) A phase system that allows both controlling when rules AND
plugin-installed Core passes fire
2) An annotations system that is useful both for marking functions
with information interesting to plugins AND for other things (e.g.
marking functions that implement tests so they can be spotted by e.g.
an external QuickCheck runner)
3) A plugins system that depends on 1) and 2)
So the annotations system is really a piece of the puzzle that is
quite seperate from the plugins system (indeed, I intend to submit a
patch that adds it to GHC HEAD without going near any of the plugins
stuff as soon as we resolve this dependency issue).
That being said, I don't think it's possible to tease any dependency
on Binary away from GHC itself. The problem is that during
typechecking of the annotation I really need to be able to serialize
the thing for the interface file by grabbing a Binary instance and
running one of its methods. I believe that is going to tie us to a
particular binary version no matter what we do...
More information about the Cvs-ghc