|
|
## 0. Overview (SPJ)
|
|
|
|
|
|
- the pieces, how they fit together
|
|
|
- source tree roadmap
|
|
|
- the compilation pipeline
|
|
|
|
|
|
## 1. Building (SM)
|
|
|
|
|
|
- Getting the code (do a live build...)
|
|
|
- Setting up the build
|
|
|
- Building
|
|
|
- tweaking & recompiling, etc.
|
|
|
- how libraries/packages are built
|
|
|
- ghc-inplace vs. installed ghc, how does it run inplace (find its bits)
|
|
|
- how to "use" the build system and common tasks, pointer to docs
|
|
|
- using/extending the testsuite
|
|
|
|
|
|
## 2. The Compiler
|
|
|
|
|
|
- SPJ inside-out view: start with a single module (HscMain downwards)
|
|
|
- SPJ the main datatypes (RdrName, Name, Id, Var, TyVar, Type, Core, HsSyn, Cmm).
|
|
|
- SPJ renamer, typechecker, desugarer, core-\>core
|
|
|
- SPJ ModIface, ModDetails, ModGuts
|
|
|
- SPJ Core-\>CorePrep-\>Stg-\>Cmm
|
|
|
- SM PrimOPs: primops.txt.pp - what is generated from it?
|
|
|
- SM GHC API
|
|
|
- SM HscMain upwards: ModSummary, Finder, upsweep, downsweep,
|
|
|
|
|
|
## 3. Back end (SM)
|
|
|
|
|
|
- SM execution model STG + eval/apply
|
|
|
- SM Cmm-\>NCG
|
|
|
- SM Cmm-\>BCO (simple compilation scheme, no primops: GHC.PrimopWrappers)
|
|
|
- SM Cmm-\>C
|
|
|
|
|
|
## 4. The Runtime (SM)
|
|
|
|
|
|
- .c vs. .cmm files
|
|
|
- diff between .cmm and C--
|
|
|
- roadmap
|
|
|
- heap objects, info tables
|
|
|
- architecture: storage manager, MBlock, Blocks, Storage, GC
|
|
|
- architecture: scheduler, capabilities, tasks
|
|
|
- FFI (adjustors)
|
|
|
- Linker
|
|
|
- BCO interpreter
|
|
|
- asyncrhonous & synchronous exceptions
|
|
|
- STM |