Added abstract and notes for STG/GRIN Haskell Exchange presentation

This commit is contained in:
anabra 2019-06-09 18:46:59 +02:00
parent abfe9cb78a
commit c9ab95d987
2 changed files with 30 additions and 0 deletions

View 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.

View 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