... | ... | @@ -9,10 +9,7 @@ For the dedicated, there are [videos of Simon and Simon giving an overview of GH |
|
|
## 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 those properties 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).
|
|
|
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). When unsure though please indicate this in the wiki and its best to ask on the GHC mailing list so you can correct the commentary. Please give some though to where in the commentary your contribution belongs. GHC has an older commentary (non wiki based) that 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 those properties 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)]]`. Also try to add appropriate links to other parts of the commentary.
|
... | ... | @@ -21,7 +18,7 @@ Try to link to source files as much as possible by using this macro: `[[GhcFile( |
|
|
|
|
|
- [Getting Started](commentary/getting-started)
|
|
|
|
|
|
- [Abbreviations](commentary/abbreviations) used pervasively in the source code
|
|
|
- [Abbreviations in GHC](commentary/abbreviations)
|
|
|
- [Source Tree Roadmap](commentary/source-tree)
|
|
|
- [Module Structure](commentary/module-structure)
|
|
|
- [Coding Style](commentary/coding-style)
|
... | ... | @@ -31,9 +28,9 @@ Try to link to source files as much as possible by using this macro: `[[GhcFile( |
|
|
|
|
|
- [The compilation pipeline](commentary/pipeline)
|
|
|
|
|
|
- [The Runtime System](commentary/rts) (Rts)
|
|
|
- [The Runtime System (RTS)](commentary/rts)
|
|
|
|
|
|
- [Rts Coding Conventions](commentary/rts/conventions)
|
|
|
- [RTS Coding Conventions](commentary/rts/conventions)
|
|
|
- [The Haskell Execution Model](commentary/rts/haskell-execution)
|
|
|
- [The memory layout of heap and stack objects](commentary/rts/storage)
|
|
|
|
... | ... | @@ -50,44 +47,49 @@ Try to link to source files as much as possible by using this macro: `[[GhcFile( |
|
|
## Contributed Documentation
|
|
|
|
|
|
|
|
|
Please edit and improve the Commentary above, or the [Building Guide](building).
|
|
|
The above commentary covers the source code of GHC. For material that doesn't concern this topic (such as proposals, work-in-progress and status reports) or that don't fit into the existing structure, you will find them below. Feel free to add new material here but please categorise it correctly.
|
|
|
|
|
|
- General Notes on the GHC compiler
|
|
|
|
|
|
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.
|
|
|
- Edward Yang's blog post about [ the entire complilation pipeline for \`factorial\`](http://blog.ezyang.com/2011/04/tracing-the-compilation-of-hello-factorial/)
|
|
|
- [New Prim Ops](adding-new-primitive-operations): How to add new primitive operations to GHC Haskell.
|
|
|
- [Replacing GMP](replacing-gmp-notes): Notes from an effort to replace GMP with another Bignum library.
|
|
|
- [External Core](external-core): Describes the process of bringing External Core up to speed. Once finished, this will simply describe what External Core is, and how it works.
|
|
|
- [ The Scrap your boilerplate homepage](http://sourceforge.net/apps/mediawiki/developers/index.php?title=ScrapYourBoilerplate).
|
|
|
|
|
|
- The Compiler
|
|
|
- Notes on implemented GHC features:
|
|
|
|
|
|
- [The new deriving mechanism](commentary/compiler/generic-deriving)
|
|
|
- Notes about Template Haskell?
|
|
|
- [Rewrite Rules](rewrite-rules): Notes about the implementation of RULEs in GHC
|
|
|
- [Monad Comprehensions](monad-comprehensions): Translation rules and some implementation details
|
|
|
- [Haddock](haddock-comments): Some notes about how the Haddock comment support is implemented.
|
|
|
- [Intermediate Types](intermediate-types): Notes about the type system of GHC's new intermediate language (in the HEAD since ICFP'06)
|
|
|
- [Type families/type functions](type-functions): Notes concerning the implementation of type families, associated types, and equality constraints as well as the extension of the type checker with a contraint solver for equality constraints.
|
|
|
- [Magic to do with \`seq\` and friends](commentary/compiler/seq-magic)
|
|
|
- [memcpy/memmove/memset optimizations](memcpy-optimizations)
|
|
|
- Edward Yang's blog post about [ the entire complilation pipeline for \`factorial\`](http://blog.ezyang.com/2011/04/tracing-the-compilation-of-hello-factorial/)
|
|
|
- [Compiler plug-ins](new-plugins)
|
|
|
- [memcpy/memmove/memset optimizations](memcpy-optimizations)
|
|
|
- [Backend Ideas](back-end-notes): Some ideas and notes about the back end.
|
|
|
- [Notes about the new code generator](commentary/compiler/new-code-gen)
|
|
|
- [DPH](data-parallel): Notes about the implementation of Data Parallel Haskell
|
|
|
- [Safe Haskell](safe-haskell): The design of the GHC Safe Haskell extension
|
|
|
|
|
|
- Notes on proposed or in progress (but out of tree) GHC compiler features:
|
|
|
|
|
|
- [SQL-Like Comprehensions](sql-like-comprehensions): Notes on the ongoing implementation of SPJs "Comprehensive Comprehensions".
|
|
|
- [Type level naturals](type-nats)
|
|
|
- [Proposal to add a kind for facts, e.g. class constraints](kind-fact)
|
|
|
- [Polymorphic Dynamic](polymorphic-dynamic): Notes on adding ad-hoc polymorphic dynamic types
|
|
|
- [Proposal to allow classes to give default implementations for their superclasses](default-superclass-instances)
|
|
|
- [The new deriving mechanism](commentary/compiler/generic-deriving)
|
|
|
- Notes about Template Haskell?
|
|
|
- [Notes about the new code generator](commentary/compiler/new-code-gen)
|
|
|
- [Type families/type functions](type-functions): Notes concerning the implementation of type families, associated types, and equality constraints as well as the extension of the type checker with a contraint solver for equality constraints.
|
|
|
- [Intermediate Types](intermediate-types): Notes about the type system of GHC's new intermediate language (in the HEAD since ICFP'06)
|
|
|
- [DPH](data-parallel): Notes about the implementation of Data Parallel Haskell
|
|
|
- [Rewrite Rules](rewrite-rules): Notes about the implementation of RULEs in GHC
|
|
|
- [Backend Ideas](back-end-notes): Some ideas and notes about the back end.
|
|
|
- [Cmm: Implementing Exception Handling](commentary/cmm-exceptions): Implementing exception handling for primitive operations in Cmm
|
|
|
- [Cmm: Using Kinds to implement calling conventions](commentary/cmm-kinds): Pointers to explanations of what a `CmmKind` is and why you might find one useful.
|
|
|
- [SIMD](simd): Notes on adding SIMD instructions and primOps to GHC
|
|
|
- [Explicit Call Stack](explicit-call-stack): Notes about maintaining an explicit call stack, to support error attribution and profiling.
|
|
|
|
|
|
- GHCi Debuger
|
|
|
|
|
|
- [GHCi Debugger](ghci-debugger): Some notes about the implementation of the GHCi debugger. Probably uninteresting unless you want to work on the debugger.
|
|
|
- [New GHCi Debugger](new-ghci-debugger): The new GHCi debugger.
|
|
|
- [New Prim Ops](adding-new-primitive-operations): How to add new primitive operations to GHC Haskell.
|
|
|
- [Replacing GMP](replacing-gmp-notes): Notes from an effort to replace GMP with another Bignum library.
|
|
|
- [External Core](external-core): Describes the process of bringing External Core up to speed. Once finished, this will simply describe what External Core is, and how it works.
|
|
|
- [Haddock](haddock-comments): Some notes about how the Haddock comment support is implemented.
|
|
|
- [Explicit Call Stack](explicit-call-stack): Notes about maintaining an explicit call stack, to support error attribution and profiling.
|
|
|
- [SQL-Like Comprehensions](sql-like-comprehensions): Notes on the ongoing implementation of SPJs "Comprehensive Comprehensions".
|
|
|
- [SIMD](simd): Notes on adding SIMD instructions and primOps to GHC
|
|
|
- [ Scrap your boilerplate page](http://sourceforge.net/apps/mediawiki/developers/index.php?title=ScrapYourBoilerplate) written by Ralf Lammel.
|
|
|
- [GHC Source Abbreviations](commentary/abbreviations): Abbreviations used in the GHC code
|
|
|
- [Safe Haskell](safe-haskell): The design of an extension to Haskell around 'Safe' code.
|
|
|
- [Monad Comprehensions](monad-comprehensions): Translation rules and some implementation details
|
|
|
- [Polymorphic Dynamic](polymorphic-dynamic): Notes on adding ad-hoc polymorphic dynamic types
|
|
|
|
|
|
- The Runtime System
|
|
|
|
... | ... | @@ -101,14 +103,12 @@ However sometimes you may want to add new material that doesn't quite fit into t |
|
|
- [Haskell Program Coverage](commentary/hpc): How HPC works
|
|
|
- [Benchmarking](building/running-no-fib): The nofib benchmark suite
|
|
|
|
|
|
- [Parallel Haskell Variants](gp-h-eden): All aspects of the GpH and Eden parallel variants of GHC. (*work in progress*)
|
|
|
|
|
|
- [Hackathon presentations](about-videos) (video)
|
|
|
- [Parallel Haskell Variants](gp-h-eden): All aspects of the GpH and Eden parallel variants of GHC.
|
|
|
|
|
|
## Old but useful
|
|
|
## Old Documentation
|
|
|
|
|
|
|
|
|
Finally, here are some generally-useful, but now somewhat-out-of-date resources:
|
|
|
Here are some useful, but somewhat-out-of-date resources:
|
|
|
|
|
|
- [ The old GHC Commentary](http://darcs.haskell.org/ghc/docs/comm/): 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](commentary/migrating-old-commentary) which tracks the progress of migrating information from the old commentary to this wiki.
|
|
|
- [GHC Papers](ghc-papers): Papers and pointers to other documents that relate to the inner workings of GHC. |