- arena allocation of nodes
- remove extra data from subclasses of
Def
- remove RTTI
-
Lam
andApp
instead ofContinuation
- make analyses work with all nominals, not just
Lam
s - remove
Type
and make it aDef
- PTS calculus of constructions style IR (mostly done)
- remove arg/param lists
-
Sigma
/Arr
+Tuple/Pack
and friends - use
index
andarity
instead of unsafeint
for indexing - support for multidemnsional indexing (wip)
-
Union
and friends (wip) -
Intersection
and friends (maybe?) - new recursive
rewrite
- remove old
mangle
in favor orrewrite
(wip) - remove old
import
in favor ofrewrite
- remove old
cleanup
in favor ofrewrite
- make IR extensible
-
div
/mod
with side effect -
alloc
/dealloc
in favor ofslot
andglobal
- 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
- 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 (wip)
-
ErrorHandler
(wip)
- remove static state from logging
- remove
Loc
/Debug
and make it aDef
- add
meta
field - unit testing with gtest
- gcov integration
- polish output (wip)
- frontend to read it again (wip)
- integrate with debugging infrastructure
- rewrite C backend
- rewrite LLVM backend
- Thorin-based vectorizer
- C interface of Thorin?
- Pyhton interface of Thorin?
- add possibility to add new thorin nodes/axioms from frontends
- native backends