<div dir="auto">Would this include making those modules not hidden in ghc base? There’s been a few times where that status made it quite hard to build documentation for those modules! </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 21, 2023 at 1:16 PM Ben Gamari <<a href="mailto:ben@well-typed.com">ben@well-typed.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Laurent P. René de Cotret <<a href="mailto:laurent.decotret@outlook.com" target="_blank">laurent.decotret@outlook.com</a>> writes:<br>
<br>
> Dear GHC developers,<br>
><br>
> In recent weeks, John Ericson has fine-tuned a Haskell Foundation<br>
> Technical Proposal to split `base` into two libraries: `ghc-base` and<br>
> `base`, the latter simply re-exporting everything for `ghc-base` (for<br>
> now). You can read about the rationale and specifics more in details<br>
> in the proposal itself:<br>
> <a href="https://github.com/haskellfoundation/tech-proposals/pull/47" rel="noreferrer" target="_blank">https://github.com/haskellfoundation/tech-proposals/pull/47</a><br>
><br>
> Note that this proposal has recently been streamlined into a form<br>
> which is more focused than its initial state, and might be worth a<br>
> re-read.<br>
><br>
> The Haskell Foundation Technical Working Group has reached a consensus<br>
> that this work will benefit the Haskell community. Moreover, the<br>
> Haskell Foundation has agreed to spend some of its resources to<br>
> implement this proposal, which would start by ensuring the completion<br>
> of MR7898 (<a href="https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7898" rel="noreferrer" target="_blank">https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7898</a>).<br>
><br>
> This work will affect GHC developers. Therefore, the Technical Working<br>
> Group would like to get buy-in from the GHC developers before formally<br>
> accepting this proposal.<br>
><br>
Hi Laurent,<br>
<br>
In general I am quite supportive of this proposal. I have discussed the<br>
idea with John on several occassions and agree that separating the<br>
implementation of `base` from its user-facing interfaces with a package<br>
boundary would simplify life for both users and GHC's maintainers (c.f.<br>
[1]).<br>
<br>
I also threw together my own implementation of the idea in a few hours<br>
some weeks back (having forgotten about John's effort); this can be<br>
found in the wip/ghc-base branch [2]. From that experience I have no<br>
doubts that this idea is feasible. The only issues that I am slightly<br>
unsure of are:<br>
<br>
 * whether/how to prevent `ghc-base` references from seeping into error<br>
   messages.<br>
<br>
 * which interfaces should be re-exposed from `base`. In [2] we propose<br>
   that a fair number of interfaces be marked as GHC-internal.<br>
   Those which are marked [3] as "hidden" should likely be <br>
   exposed only via `ghc-base`. However, for compatibility reasons we<br>
   may decide to continue exporting some subset of "internal" modules<br>
   (with frozen export lists) from `base`.<br>
<br>
Regardless, I am very happy to see this split move forward and am<br>
grateful to John for his work in this direction.<br>
<br>
Cheers,<br>
<br>
- Ben<br>
<br>
<br>
<br>
[1] <a href="https://github.com/haskell/core-libraries-committee/issues/146" rel="noreferrer" target="_blank">https://github.com/haskell/core-libraries-committee/issues/146</a><br>
[2] <a href="https://gitlab.haskell.org/ghc/ghc/-/tree/wip/ghc-base" rel="noreferrer" target="_blank">https://gitlab.haskell.org/ghc/ghc/-/tree/wip/ghc-base</a><br>
[3] <a href="https://docs.google.com/spreadsheets/d/1WmyYLbJIMk9Q-vK4No5qvKIIdIZwhhFFlw6iVWd1xNQ/edit#gid=1315971213" rel="noreferrer" target="_blank">https://docs.google.com/spreadsheets/d/1WmyYLbJIMk9Q-vK4No5qvKIIdIZwhhFFlw6iVWd1xNQ/edit#gid=1315971213</a><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>