<div dir="ltr">I don't think we should be overly controlling on this and lean towards being flexible with making changes in the source code as needed. Overall my experience with the GHC API has been that it can be very handy, but I've never managed to get anything done by just sticking to the API proper---I inevitably end up using other "unofficial" modules from GHC, and I don't think it is reasonable to expect that none of those would change. Long term, it would be nice to have a stable GHC API, but the actual API depends very much on what you are trying to do, so I can even imagine there being more than one API. Until that day though, I like Joachim's phrasing.<div><br></div><div><br><div><br></div><div><br><div><br></div><div><br><div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 6, 2018 at 5:57 AM Joachim Breitner <<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Am Dienstag, den 06.02.2018, 09:27 +0000 schrieb Simon Peyton Jones:<br>
> I think we should cover GHC API changes.<br>
><br>
> * The committee is meant to cover the "users-eye-view" of GHC.<br>
> The GHC API is a major asset, used by many users. OK, so they<br>
> are nestling a bit closer to the implementation, but still.<br>
><br>
> * There is no other forum to discuss API changes.<br>
><br>
> * In principle a user of GHC-as-a-library can call any old internal<br>
> function; we should /not/ cover this. Only the high-level<br>
> "advertised" API.<br>
><br>
> * We don't do a good job of advertising that API; it's basically<br>
> what is exported by module GHC. But I think it that proposals<br>
> focused on improving it would be quite helpful.<br>
<br>
just for the reference, that would be this module:<br>
<a href="https://downloads.haskell.org/~ghc/latest/docs/html/libraries/ghc-8.2.2/src/GHC.html" rel="noreferrer" target="_blank">https://downloads.haskell.org/~ghc/latest/docs/html/libraries/ghc-8.2.2/src/GHC.html</a><br>
<br>
So in particular, every change in HsSyn is no longer an internal change<br>
under that view, as is any modification to DynFlags.<br>
<br>
And I presume you’d include<br>
<a href="https://downloads.haskell.org/~ghc/latest/docs/html/libraries/ghc-8.2.2/Plugins.html" rel="noreferrer" target="_blank">https://downloads.haskell.org/~ghc/latest/docs/html/libraries/ghc-8.2.2/Plugins.html</a><br>
and/or<br>
<a href="https://downloads.haskell.org/~ghc/latest/docs/html/libraries/ghc-8.2.2/GhcPlugins.html" rel="noreferrer" target="_blank">https://downloads.haskell.org/~ghc/latest/docs/html/libraries/ghc-8.2.2/GhcPlugins.html</a><br>
to be considered part of the API as well, right? But the latter re-<br>
exports really many internal modules.<br>
<br>
Under this rule, a change like<br>
<a href="https://git.haskell.org/ghc.git/commitdiff/0e022e56b130ab9d277965b794e70d8d3fb29533" rel="noreferrer" target="_blank">https://git.haskell.org/ghc.git/commitdiff/0e022e56b130ab9d277965b794e70d8d3fb29533</a><br>
would have required committee approval?<br>
<br>
<br>
I am worried about adding too much red tape to GHC development and<br>
overloading the committee. How about this as a compromise:<br>
<br>
Changes to the GHC or Plugin API are not automatically within the<br>
scope of the committee, and can be contributed following the usual<br>
GHC workflow. Should the GHC maintainers deem a change significant<br>
or controversial enough to warrant that, they may, at their<br>
discretion, involve the committee and ask the contributor to write a<br>
formal proposal.<br>
<br>
Cheers,<br>
Joachim<br>
<br>
<br>
<br>
--<br>
Joachim Breitner<br>
<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
<a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank">http://www.joachim-breitner.de/</a><br>
_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div>