grin/docs/TODO.md
2019-02-17 16:06:53 +01:00

1.5 KiB

Todo ideas

  • distinguish Val constuctors (LambdaPattern ConstansPattern SimpleValue Value)
  • rename Val types to a more descriptive names; see above
  • better name representation instead of strings
  • generate unique names when branching (unique name A + branching direction = unique name B)
  • efficient substitution
  • type safer and easy to use AST

CodeGen

  • 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

SIMD / SPMD

GRIN language

shared blocks

  • add support for named blocks and a corresponding call block command i.e. tailcall / continue / join / follow BLOCK_NAME

STG primops

  • add primops to support STG style unknown funtion call. Whith these primops incremental compilation could be supported
  • static analysis of STG primops to transform STG closures and info tables to ordinary GRIN C/F/P nodes