- Remove warnings
- Start planning refactor
- Finish MIR
- General
Fix all the damn copies and bad, non idiomatic Rust.Probably add a ref count for types (really no need to copy them since they're relatively immutable)- Convert typechecking and code gen errors to codespan
Add arrays
- Parsing
Convert to expression based syntax- Trailing comma?
- Figure out injective parsing
- Typechecking
Typecheck functionsTypecheck recordsAdd named types- Constraint solve type variables (kinda done?)
- Add sum and product types
- Add generics
- Control flow analysis
- Closures
Get closures workingGet anonymous closures working
- Code gen
Get something working.Add local variablesAdd control flow(Kinda)Add function callsAdd nested functionsAdd first class functionsAdd structs/recordsAdd stringsGarbage collection!- Hook up garbage collection to code gen
Convert to walrus- LLVM backend?
- IR
Design IR
- Tests/Debugging
Write some testsAdd locations in errors with row/colAdd better error messages using name and type tables- Get automated testing
- Build System
Automate TypeScript compilation for runtimeCreate CLI
- Tooling
- Get emacs plugin
- Start figuring out LSP
- Symbol Table
- Clean up, oh man it's messy rn
Consolidate var stuff into Entry and make an OptionMake it easier to get a function's captures. Consolidate function scope with function entry?
- Runtime
Add closure captures as structs to runtime