Disclaimers: I’m very much not an experienced compiler engineer, I’m not funded for anything beyond weekend-scale efforts, and I’m very explicit in my desire to not pull any effort off of maintaining, improving, and evolving GHC.
With those bits in mind, this is perhaps most thoroughly directed at those who are not currently contributing to GHC for whatever reason, those who are but might do things differently if they were starting from a cleaner slate (and would be willing to expound on those things), and those who hold strong opinions (possibly even well-founded ones) on what a Haskell compiler could be doing to advance the standardization of the language without the very real maintenance and support burden that an industrial-strength, battle-tested compiler like GHC must grapple with to consider such a thing.
I want to start a conversation with such people about how to build another open source compiler for Haskell. We have the great fortune that the bootstrapping problem is behind us, and we have the right venerable GHC, compiler of a thousand compilers, to get over that hump.
That’s all there really is to the pitch, for the moment. I would like to collect some feedback, do some thinking, and figure out what a plan for such a project would even look like.
For interested parties (implementation, orchestration, or peanut gallery), I guess I’d be interested to understand what a new Haskell compiler would mean to you, what avenues it would open that might otherwise be difficult to pursue, and what expectations of compatibility with existing Haskell-by-the-report could or should exist. This last point I recognize as a bit vexing, since it’s not technically a Haskell compiler if it doesn’t implement Haskell-by-the-report, but dream with me a little and envision the reference implementation for Haskell’.
It’s also potentially valuable to say “there is simply nothing to be gained from this endeavor” if you’ve a strong point to make there.
I have no performance goals and no timetable, so unreasonable dreams like “TRex 2” or “first class Backpack/other module system” or what have you could be discussed. I like algebraic effects and dependent types, myself, and I’d be interested to see where those could be pushed with less critically important architecture around. Could we solve “the IO problem” differently? Could Haskell-the-language evolve from declarative to denotative? Could we start from FunctorOf
? There’s been some previous discussion on this board of fitting GRIN or HVM onto GHC’s pipeline (there’s existing work on the former and some gesticulation on the latter); would that be easier with a less practical and established compiler?
NB: I’m less interested in hearing the nth argument for “you should just work on GHC instead”, since this is particularly a thread to centralize and chew on some other points in the space, and how I choose to burn the back 9 of my creative life is likely to include more contributions to GHC, anyway. You’re welcome to write the argument in this thread, of course.