Refactor tracker
Collection of things that should be refactored at some point. Including a cursed-ness score: 0 (good) .. 10 (unreadable / understandable)
-
SourceSpans: Currently the spans can only handle one file. That is not a problem yet, since there is no module system yet. Must be refactored once we add something like rust's mod
or C'sinclude
.cursedness: 3
-
DebugInfo handling: Right now source spans and and human readable names for things are mostly saved in structs. That makes sense as long as each node has some kind of equivalent in the source code. Eventually we leave that realm however, in which case we need to tag regions in the graph, or clusters of nodes. In that case we currently use the FlagStore<Span>
. Would be nice to unify all of it.cursedness: 7
-
FieldDispatch: The field dispatcher currently works, but documentation is lacking. Mostly because it changed so often, that there are bits of documentation hanging around everywhere. Needs to be rewritten to the current version. cursedness: 8
-
Refactor TypeDerive: Right now the derive pass only uses region's argument/result ports to derive types. And it also doesn't handle λ-node-definitions at all. The refactor would also consider pre-set edge-types as well as handle the λs. cursedness: 3
. -
SPIR-V rule fixing: We currently only use the SPIR-V rules to check for valid SPIR-V usage. However, we could actually fix things with those. cursedness: 2
. -
Implement Mat x Scalar operations. cursedness: 0
(should be easy) -
Implement a module
system to reuse code. Possibly implement a standard library.cursedness: 0
. -
Implement if
/for
. I think some functionallet if
andlet loop
would be best though, since we don't want endless loops and mutable variables anyways.
Edited by Tendsin Mende