Version 130 (modified by megacz, 9 years ago) (diff)

add link to ModuleStructure

The GHC Commentary

This tree of wiki pages is a "commentary" on the GHC source code. It contains all the explanatory material that doesn't belong in comments in the source code itself, because the material is wide-ranging, usually covers multiple source files, and is more architectural in nature. The commentary can also be considered a design document for GHC.

For the dedicated, there are videos of Simon and Simon giving an overview of GHC, at the 2006 GHC Hackathon.

Editing the Commentary

Please feel free to add material to the rest of the wiki: don't worry too much about accuracy (in due course someone will edit your contribution).

Please feel free to add material to the commentary after you've given some thought to where in the commentary it belongs. The old commentary read like a single coherent narrative, made sure to define terms before using them, and introduced concepts in the order which made them easiest to understand. Please do try to preserve that property in this wiki commentary. If you're unsure or in a hurry, consider creating a wiki page outside the commentary and linking to it from the commentary (or the "contributed documentation" section below).

Try to link to source files as much as possible by using this macro: [[GhcFile(compiler/Makefile)]] (the usual Trac source: macro doesn't work here because the GHC darcs repository isn't integrated into this Trac). Also try to add appropriate links to other parts of the commentary.


Contributed Documentation

Please edit and improve the Commentary above, or the Building Guide.

However sometimes you may want to add new material that doesn't quite fit into the existing structure. Or perhaps your pages are about work-in-progress, status reports and suchlike, which don't belong in the Commentary per se. Regardless, you can add your new material here.

  • The Runtime System
    • Garbage Collector: Notes about GHC's existing single threaded garbage collector and development of a parallel GC.
    • GMP Memory Managment: Describes how the garbage collector cooperates with GMP for Integer.
    • SemiTagging: Describes how the semi-tagging optimisation will be implemented.
    • PAPI: Measurement of program performance using CPU events (cache misses, branch mis-predictions).

Old but useful

Finally, here are some generally-useful, but now somewhat-out-of-date resources:

  • The old GHC Commentary: Information on the internals of GHC, in various states of up-to-dateness. We are keen to move this stuff out of its current location and onto this Wiki. If anyone is willing to help do that, even for just a part in which you are interested, we would be delighted. There is a page which tracks the progress of migrating information from the old commentary to this wiki.
  • GHC Papers: Papers and pointers to other documents that relate to the inner workings of GHC.