<div dir="ltr">I think it sounds like a potentially good idea in general, but I agree with Ben and Matthew here that a more concrete plan of intended use is needed.<div><br></div><div>Adding "pluggable backends" to spin up new targets seems to require quite a bit of additional infrastructure for initialising a library directory and package database. But there are probably more specific use cases that need inspecting/modifying STG or Cmm where plugins would already be useful in practice.<br></div><div><br></div><div>Hooks (or rather their locations in the pipeline) are rather ad hoc by nature, but for Asterius a hook that takes Cmm and takes over from there seems like a reasonable approach given the current state of things. I think the Cmm hook you implemented (or something similar) would be perfectly acceptable to use for now.<br></div><div><br></div><div>I don't think it's a problem if a hook exists for some time, and at some point it's superseded by a more general plugin mechanism. Especially with the GHC 6 month release cycle there's not much need for future proofing.</div><div><br></div><div>Luite</div><div><br></div><div><div class="gmail_quote"><div dir="ltr">On Thu, Oct 4, 2018 at 3:56 PM Shao, Cheng <<a href="mailto:cheng.shao@tweag.io">cheng.shao@tweag.io</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I'm thinking of adding "backend plugins" in the current Plugins<br>
mechanism which allows one to inspect/modify the IRs post simplifier<br>
pass (STG/Cmm), similar to the recently added source plugins for HsSyn<br>
IRs. This can be useful for anyone creating a custom GHC backend to<br>
target an experimental platform (e.g. the Asterius compiler which<br>
targets WebAssembly), and previously in order to retrieve those IRs<br>
from the regular pipeline, we need to use Hooks which is somewhat<br>
hacky.<br>
<br>
Does this sound a good idea to you? If so, I can open a trac ticket<br>
and a Phab diff for this feature.<br>
<br>
Best,<br>
Shao Cheng<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</blockquote></div></div></div>