There is also a nice intro blog post about GHC internals with an example how to compile a custom constructed module AST.
- Dive into GHC: Pipeline <http://www.stephendiehl.com/posts/ghc_01.html> - Dive into GHC: Intermediate Forms <http://www.stephendiehl.com/posts/ghc_02.html> - Dive into GHC: Targeting Core <http://www.stephendiehl.com/posts/ghc_03.html> Cheers, Csaba Hruska On Thu, Oct 25, 2018 at 8:51 PM Ara Adkins <m...@ara.io> wrote: > Heya, > > 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. > > _ara > > On 25 Oct 2018, at 19:20, Iavor Diatchki <iavor.diatc...@gmail.com> wrote: > > Hello, > > 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. > > Cheers, > -Iavor > > > > > > > > On Mon, Oct 22, 2018 at 1:46 AM Ara Adkins <m...@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. >> >> Best, >> Ara >> _______________________________________________ >> ghc-devs mailing list >> ghc-devs@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >> > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs