|Version 7 (modified by nominolo, 8 years ago) (diff)|
GHC API Improvement Status
This Wiki page shall serve as a central place to collect all issues and ideas related to the GHC API. If you feel that something is missing from this page, please put it here.
Simon Marlow reported that the last time he tried to work on the GHC API, it turned into a huge refactoring task. This could mean that it may take a while until bigger changes are visible and it is very likely that programs that currently use the GHC API will break. Hopefully, though, it will lead to a more usable GHC API and maybe to a more hackable code base in general.
I plan to work with a use case and try to make it as clear and simple as possible by adapting the GHC API.
Trac Tickets Related to the GHC API
- #1467 - GHC API: expose separate compilation stages
- #1886 - GHC API should preserve and provide access to comments
- #654 - Cabalization of the GHC library.
- #1631 - Make the External Package Table contain ModDetails not ModIface
- #2159 - Use a more efficient representation than [DynFlag]
Related Documents and Discussions
- The GSoC proposal
- Related GSoC project Dynamically Loaded Plugins for the Glasgow Haskell Compiler
- Haskell-cafe question: How to get the typechecked AST?
- Porting HaRe to the GHC API Technical report describing some difficulties with the current API.
- GHC as a Library, the Haskell Wiki page
- GHC Commentary on the GHC API (may be outdated)
Various Ideas, Comments, Questions
- Interface Stability - Is there a way to reduce version-skew for clients of the GHC API (currently, there is no stability guaranteed at all, so if you don't want to live with lots of #ifdefs and breakage, you keep delaying your fantastic GHC API-base projects "until the dust settles") (Claus Reinke)
- Is it possible to use standalone deriving to get a generic programming framework over the ASTs without blowing up GHC's code for its own use (deriving Data, etc.)? (Claus Reinke)
- From compiler/main/GHC.hs:
-- NOTE: -- - things that aren't in the output of the typechecker right now: -- - the export list -- - the imports -- - type signatures -- - type/data/newtype declarations -- - class declarations -- - instances -- - extra things in the typechecker's output: -- - default methods are turned into top-level decls. -- - dictionary bindings
- dynamic loading of Haskell code, ala hs-plugins, but without the version/platform issues (GHCi has to be able to do this anyway, but it would be nice to have the ugly bits hidden, such as unsafeCast#, or whatever it was). that might require a standard for typeReps, if I recall correctly.. (Claus Reinke)