mirror of
https://github.com/grin-compiler/grin.git
synced 2024-10-03 19:17:42 +03:00
Added abstract and notes for STG/GRIN Haskell Exchange presentation
This commit is contained in:
parent
abfe9cb78a
commit
c9ab95d987
5
papers/haskell-exchange-2019/stg-grin/stg-grin.abstract
Normal file
5
papers/haskell-exchange-2019/stg-grin/stg-grin.abstract
Normal file
@ -0,0 +1,5 @@
|
||||
A comparison between STG and GRIN
|
||||
|
||||
In this talk, I am going to discuss the main differences between the Glasgow Haskell Compiler's STG language and the Graph Reduction Intermediate Notation.
|
||||
|
||||
Both STG and GRIN are intermediate representations for non-strict higher-order functional languages. Both representations can express laziness, higher-order functions, partial function applications and many more features. The real question is how they express those features. What kind of design decisions were made during the construction of the intermediate language? During the talk, we will examine both languages by reviewing the constructs they use to express the most important features mentioned above. Furthermore, we will discuss how these design decisions impact the compiler as a whole: what kind of advantages they have and what limitations they impose. Finally, we will talk about how GRIN can be improved based on past experience, and contemporary research.
|
25
papers/haskell-exchange-2019/stg-grin/stg-grin.note
Normal file
25
papers/haskell-exchange-2019/stg-grin/stg-grin.note
Normal file
@ -0,0 +1,25 @@
|
||||
- STG in GHC pipeline (rewrite rules, core plugins, core opts before STG, core has types, STG has none)
|
||||
- type systems of STG and GRIN
|
||||
- constructs of STG
|
||||
- constructs of GRIN
|
||||
- lazines
|
||||
- HOF
|
||||
- partial application
|
||||
- function pointers
|
||||
- defunctionalization
|
||||
- modular compliation vs whole program compilation (interpolation between the two)
|
||||
- available optimizations and analyses
|
||||
- future of GRIN: syntax, SSA, Soufflé
|
||||
|
||||
NOTES:
|
||||
- Past presentation of STG
|
||||
- past presentaion of core?
|
||||
- no optimizations on STG
|
||||
- STG is stable
|
||||
- type info of Haskell does not express low level invariant
|
||||
- data-flow analyses can express those
|
||||
- in core, we only think about types like in the surface language (can types match, type theory background)
|
||||
|
||||
- contrast GRIN to STG, what is GRIN's goal?
|
||||
- STG's goal is to evaluate lambda calculus
|
||||
- GRIN optimizes further
|
Loading…
Reference in New Issue
Block a user