Skip to content

Files

Latest commit

 

History

History
93 lines (73 loc) · 2.46 KB

roadmap.md

File metadata and controls

93 lines (73 loc) · 2.46 KB

Roadmap

Basic Infrastructure

  • arena allocation of nodes
  • remove extra data from subclasses of Def
  • remove RTTI
  • Lam and App instead of Continuation
  • make analyses work with all nominals, not just Lams
  • remove Type and make it a Def
  • PTS calculus of constructions style IR (mostly done)
  • remove arg/param lists
  • Sigma/Arr + Tuple/Pack and friends
  • use index and arity instead of unsafe int for indexing
  • support for multidemnsional indexing (wip)
  • Union and friends (wip)
  • Intersection and friends (maybe?)
  • new recursive rewrite
  • remove old mangle in favor or rewrite (wip)
  • remove old import in favor of rewrite
  • remove old cleanup in favor of rewrite
  • make IR extensible

Memory

  • div/mod with side effect
  • alloc/dealloc in favor of slot and global

Axioms

  • use axioms instead of C++ classes
  • redesign standard operations to work similar to LLVM
  • remove Lamm::Intrinsics in favor of axioms (wip)
  • rewrite normalizations
  • add function to apply operations polymorphic in rank and dimensions

Optimizations

  • finish new optimizer
    • passes with no fixed point needed
    • passes with fixed point
  • rewrite all optimizations to work with new optimizer
    • inliner
    • partial eval
    • mem2reg
    • scalarize
    • flatten slots
    • eta red
    • eta exp
    • copy prop (wip)
    • tail rec elim
    • closure elim (wip)
    • closure conv (wip)
    • compile ptrn (wip)
    • ret_wrap
    • reg2mem (for aggregates)
    • acc prepare (phase that prepares special vectorize/cuda and friends for code generation)
  • remove old optimizations/passes and replace infrastructure (wip)

Type Checking

  • type checking (wip)
  • ErrorHandler (wip)

Debugging

  • remove static state from logging
  • remove Loc/Debug and make it a Def
  • add meta field
  • unit testing with gtest
  • gcov integration

Module support

  • polish output (wip)
  • frontend to read it again (wip)
  • integrate with debugging infrastructure

Backend

  • rewrite C backend
  • rewrite LLVM backend

Future

  • Thorin-based vectorizer
  • C interface of Thorin?
  • Pyhton interface of Thorin?
  • add possibility to add new thorin nodes/axioms from frontends

Far Future

  • native backends