diff --git a/TODO.md b/TODO.md index 92a3ff5d..79e9d5f3 100644 --- a/TODO.md +++ b/TODO.md @@ -7,21 +7,26 @@ - generate unique names when branching (unique name A + branching direction = unique name B) - efficient substitution - type safer and easy to use AST -- add simple frontend language with grin conversion +- add simple frontend language with grin conversion (GHC/STG -> GRIN) - generate apply -# JIT requirements - -simplifaction transformations required by the codegen - -- [x] vectorisation -- [x] case simplification -- [x] split fetch operation -- [x] right hoist fetch operation -- [x] register introduction # CodeGen -- LLVM codegen from high level GRIN (HPT + Type Set + Tagged Union) -- GRIN type system (typed simplification) - simplify/refactor LLVM codegen +- vectorisation = tagged union conversion (on branch: var-tag-node-is-tagged-union) ; better syntax for tagged union (parser + pretty printer) +- read back LLVM reduced result to Haskell data (including the heap) + +# GRIN framework + +- scoped type environment +- scoped names ; it would make inlining easy (the idea is similar to bound) + - HPT + - optimisiations + - type env + +# HPT + +- LLVM backend for HPT IR +- inline support +- sharing analysis