<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">Dear GHC devs</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Given the <a href="https://github.com/haskellfoundation/tech-proposals/pull/51" target="_blank">now-agreed split between ghc-internal and base</a>, what stands in the way of a "reinstallable base"?</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Specifically, suppose that<br></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><ul><li>GHC 9.8 comes out with base-4.9</li><li>The CLC decides to make some change to `base`, so we get base-4.10</li><li>Then GHC 9.10 comes out with base-4.10</li></ul><div>I think we'd all like it if someone could use GHC 9.10 to compile a library L that depends on base-4.9 and either L doesn't work at all with base-4.10, or L's dependency bounds have not yet been adjusted to allow base-4.10.</div><div><br></div><div>We'd like to have a version of `base`, say `base-4.9.1` that has the exact same API as `base-4.9` but works with GHC 9.10.</div><div><br></div><div>Today, GHC 9.10 comes with a specific version of base, <i>and you can't change it</i>. The original reason for that was, I recall, that GHC knows the precise place where (say) the type Int is declared, and it'll get very confused if that data type definition moves around.</div><div><br></div><div>But now we have `ghc-internal`, all these "things that GHC magically knows" are in `ghc-internal`, not `base`.</div><div><br></div><div><b>Hence my question: what (now) stops us making `base` behave like any other library</b>?  That would be a big step forward, because it would mean that a newer GHC could compile old libraries against their old dependencies.</div><div><br></div><div>(Some changes would still be difficult.  If, for example, we removed Monad and replaced it with classes Mo1 and Mo2, it might be hard to simulate the old `base` with a shim.  But getting 99% of the way there would still be fantastic.)</div><div><br></div><div>Simon<br></div></div></div>