Using GHC Core as a Language Target
me at ara.io
Thu Oct 25 18:51:26 UTC 2018
Those are exactly the kind of pointers I was hoping for. Thanks Iavor.
I’m sure I’ll have more questions with time, but that’s a great starting point.
> On 25 Oct 2018, at 19:20, Iavor Diatchki <iavor.diatchki at gmail.com> wrote:
> I have not done what you are asking, but here is how I'd approach the problem.
> 1. Assuming you already have some Core, you'd have to figure out how to include it with the rest of the GHC pipeline:
> * A lot of the code that glues everything together is in `compiler/main`. Modules of interest seem to be `DriverPipeline`, `HscMain`, and `PipelineMoand`
> * A quick looks suggests that maybe you want to call `hscGenHardCode` in `HscMain`, with your core program inside the `CgGuts` argument.
> * Exactly how you setup things probably depends on how much of the rest of the Haskell ecosystem you are trying to integrate with (separate compilation, avoiding recompilation, support for packages, etc.)
> 2. The syntax for Core is in `compiler/coreSyn`, with the basic AST being in module `CoreSyn`. Module `MkCore` has a lot of helpers for working with core syntax.
> 3. The "desugarer" (in `compiler/deSugar`) is the GHC phase that translates the front end syntax (hsSyn) into core, so that should have lots of examples of how to generate core.
>> On Mon, Oct 22, 2018 at 1:46 AM Ara Adkins <me at ara.io> wrote:
>> Hey All,
>> I was chatting to SPJ about the possibility of using GHC Core + the rest of the GHC compilation pipeline as a target for a functional language, and he mentioned that asking here would likely be more productive when it comes to the GHC API.
>> I'm wondering where the best place would be for me to look in the API for building core expressions, and also whether it is possible to trigger the GHC code-generation pipeline from the core stage onwards.
>> ghc-devs mailing list
>> ghc-devs at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the ghc-devs