├── README.md
├── changelog.md
├── haskell_ghc_illustrated.pdf
└── otherResources.md
/README.md:
--------------------------------------------------------------------------------
1 | GHC(STG,Cmm,asm) illustrated
2 | ============================
3 |
4 | This is an illustrated document about the GHC(Glasgow Haskell Compiler).
5 |
6 | Here is [haskell_ghc_illustrated.pdf](http://takenobu-hs.github.io/downloads/haskell_ghc_illustrated.pdf).
7 |
8 |
9 | Contents
10 | --------
11 |
12 | - Executable binary
13 | - Compile steps
14 | - Runtime System
15 | - Development languages
16 |
17 |
18 | - Machine layer/models
19 | - STG-machine
20 | - Heap object in STG-machine
21 | - STG-machine evaluation
22 | - Pointer tagging
23 | - Thunk and update
24 | - Allocate and free heap objects
25 | - STG - C land interface
26 |
27 |
28 | - Thread
29 | - Thread context switch
30 | - Creating main and sub threads
31 | - Thread migration
32 | - Heap and Threads
33 | - Threads and GC
34 | - Bound thread
35 |
36 |
37 | - Spark
38 |
39 |
40 | - Mvar
41 | - Software transactional memory
42 |
43 |
44 | - FFI
45 | - IO and FFI
46 | - IO manager
47 |
48 |
49 | - Bootstrap
50 |
51 |
52 | - Appendix
53 | - Boxity : boxed and unboxed
54 | - Levity : lifted and unlifted
55 | - Boxity and levity
56 |
57 |
58 | - References
59 |
--------------------------------------------------------------------------------
/changelog.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## 0.5.0 *Feb 2021*
4 |
5 | * Modify references for current files on slide 126
6 |
7 | * Add refference [25] on slide 124
8 |
9 | * Change source code revision for ghc 9.0 on slide 19 and 24
10 |
11 | * Correct to remove stg_ap_v_info on slide 108
12 |
13 |
14 | ## 0.4.0 *Apr 2020*
15 |
16 | * Modify references for current URL on slide 122-126
17 |
18 | * Change source code revision for ghc 8.10 on slide 19 and 24
19 |
20 | * Move boxity and levity slides to appendix
21 |
22 |
23 | ## 0.3.0 *Aug 2018*
24 |
25 | * Add boxity(boxed/unboxed) and levity(lifted/unlifted) on slide 45-52
26 |
27 | * Change the assembly code and registers from x86's 32bit to x86's 64bit on slide 16, 22, 28-31, 37
28 |
29 | * Change source code for ghc 8.6 on slide 19
30 |
31 | * Modify refferences [2], [3], [16], [19], [S9], [S42] for current URL on slide 121-125
32 |
33 | * Add refference [23], [24] on slide 123
34 |
35 |
36 | ## 0.2.0 *Jul 2016*
37 |
38 | * Change for GHC 8.0
39 |
40 | * Change for ghc 8.0 on slide 3
41 |
42 | * Change code for ghc 8.0 on slide 19, 24, 29
43 |
44 | * Remove real_main on slide 53, 108, 110
45 |
46 | * Move initCapabilities on slide 110
47 |
48 | * Change Sync.lhs to Sync.hs on slide 117
49 |
50 | * Fix
51 |
52 | * Fix TRecEntry on slide 90
53 | - thanks to Ryan Yates
54 |
55 | * Fix registerFd on slide 106
56 |
57 | * Fix typo "shared" to "share" on slide 60
58 |
59 | * Fix URL [8] on slide 113
60 |
61 | * Add
62 |
63 | * Add slide 115 and add reference [21], [22]
64 |
65 |
66 | ## 0.1.1 *Jan 2015*
67 |
68 | * Fix orElse result condition on slide 86
69 |
70 | * Fix "#" literals on slide 28, 29, 30, 31, 32
71 |
72 | * Fix typo(primitive) on slide 80
73 | - thanks to Iustin Pop, Maxim Ivanov
74 |
75 | * Fix typo(initCapability) on slide 111
76 | - thanks to Maxim Ivanov
77 |
78 | * Add "static link" commentary on slide slide 6, 10
79 | - thanks to qci at reddit
80 |
81 | * Improve "no fairness" on slide 92, 79,82
82 | - thanks to mallai at reddit
83 |
84 |
--------------------------------------------------------------------------------
/haskell_ghc_illustrated.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/takenobu-hs/haskell-ghc-illustrated/d3b2963393ad5ba7c9ee1afaf6ab06d90ff324d8/haskell_ghc_illustrated.pdf
--------------------------------------------------------------------------------
/otherResources.md:
--------------------------------------------------------------------------------
1 | # other resources
2 |
3 | ## I was inspired from following resources (in Japanese)
4 |
5 | * http://www.kotha.net/hperf/ghc.html
6 | * http://www.slideshare.net/ma0e/2009-haskell
7 | * http://itpro.nikkeibp.co.jp/article/COLUMN/20070501/269948/
8 | * http://d.hatena.ne.jp/suztomo/20111224/1324718354
9 | * http://wiki.haskell.jp/Workshop/ReadGHC/1
10 | * http://waddledoo.hatenablog.com/entry/20120218/1329573684
11 | * http://www.slideshare.net/master_q/dive-into-rts-another-side
12 | * http://d.hatena.ne.jp/kazu-yamamoto/20130417/1366179138
13 | * http://d.hatena.ne.jp/kazu-yamamoto/20110902/1314934306
14 | * http://d.hatena.ne.jp/kazu-yamamoto/20110908
15 | * http://www.slideshare.net/dec9ue/rts-gc
16 | * http://itpro.nikkeibp.co.jp/article/COLUMN/20081006/316216/
17 | * http://d.hatena.ne.jp/tanakh/20040717
18 | * http://yunomu.hatenablog.jp/entry/2012/02/16/051245
19 | * http://www.sampou.org/cgi-bin/haskell.cgi?GHCHacks%3Anobsun
20 | * and many ... :smile:
21 |
22 |
--------------------------------------------------------------------------------