|
Version 3 (modified by simonpj, 7 years ago)
|
|
--
|
0. Overview (SPJ)
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
Download in other formats: