Skip to content

Latest commit

 

History

History
59 lines (59 loc) · 1.68 KB

TODO.md

File metadata and controls

59 lines (59 loc) · 1.68 KB

TODO

Next

  • Remove warnings
  • Start planning refactor
  • Finish MIR

Backlog

  • 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 functions
    • Typecheck records
    • Add named types
    • Constraint solve type variables (kinda done?)
    • Add sum and product types
    • Add generics
  • Control flow analysis
  • Closures
    • Get closures working
    • Get anonymous closures working
  • Code gen
    • Get something working.
    • Add local variables
    • Add control flow (Kinda)
    • Add function calls
    • Add nested functions
    • Add first class functions
    • Add structs/records
    • Add strings
    • Garbage collection!
    • Hook up garbage collection to code gen
    • Convert to walrus
    • LLVM backend?
  • IR
    • Design IR
  • Tests/Debugging
    • Write some tests
    • Add locations in errors with row/col
    • Add better error messages using name and type tables
    • Get automated testing
  • Build System
    • Automate TypeScript compilation for runtime
    • Create 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 Option
    • Make it easier to get a function's captures. Consolidate function scope with function entry?
  • Runtime
    • Add closure captures as structs to runtime