mirror of
https://github.com/grin-compiler/grin.git
synced 2024-09-11 15:37:54 +03:00
add papers and notes
This commit is contained in:
parent
1af7cb2b43
commit
08ed77cc5c
20
Design.md
Normal file
20
Design.md
Normal file
@ -0,0 +1,20 @@
|
||||
# Compiler goals
|
||||
|
||||
- keep mapping between source code and machine code
|
||||
- debugging
|
||||
- step by step execution
|
||||
- breakpoints
|
||||
- observe values/thunks/nodes at runtime
|
||||
- collect statistics at runtime
|
||||
- nice UI (reusing exisiting tools; js libs, etc)
|
||||
|
||||
# Other
|
||||
|
||||
- parallel compilation
|
||||
- local and global optimizer
|
||||
|
||||
# Technology
|
||||
|
||||
- simple AST + shape functor + recursion-schemes
|
||||
- simple name handling
|
||||
- JIT backend as a library (e.g. monad transformer?)
|
25
TODO.md
Normal file
25
TODO.md
Normal file
@ -0,0 +1,25 @@
|
||||
# Todo ideas
|
||||
|
||||
- distinguish Val constuctors (LambdaPattern ConstansPattern SimpleValue Value)
|
||||
- rename Val types to a more descriptive names; see above
|
||||
- GRIN AST gen EDSL
|
||||
- opt-parse-applicative for command line arguments for cli (grin)
|
||||
- better name representation instead of strings
|
||||
- generate unique names when branching (unique name A + branching direction = unique name B)
|
||||
- efficient substitution
|
||||
- bind normalisation
|
||||
- type safer and easy to use AST
|
||||
- add fetch item / indexed fetch (choose a good name)
|
||||
- add simple frontend language with grin conversion
|
||||
- generate apply
|
||||
|
||||
# JIT requirements
|
||||
|
||||
simplifaction transformations required by the codegen
|
||||
|
||||
- [ ] vectorisation
|
||||
- [ ] case simplification
|
||||
- [x] split fetch operation
|
||||
- [ ] right hoist fetch operation
|
||||
- [ ] register introduction
|
||||
|
BIN
papers/The GRIN Project.pdf
Normal file
BIN
papers/The GRIN Project.pdf
Normal file
Binary file not shown.
BIN
papers/boquist.pdf
Normal file
BIN
papers/boquist.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user