Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 1.4 KB

todo.md

File metadata and controls

52 lines (40 loc) · 1.4 KB

Task Lists, Reminders, Etc.

Compiler

  • support for slices & string constants
  • break/continue to label
  • const / readonly
  • type inference for var definitions
  • support for named enums
  • simplify use of Type/Symbol for type system
  • support for global anonymous enums
  • continue
  • support for arrays
  • support for pointers
  • support for globals, init'ing gp
  • support for structs
  • type definition
  • finish if/while flow control

Emulator / Runtime

  • support for open/close/read/write "syscalls"
  • mini std library (malloc-analogue, alloc-only heap, string utils)
  • emulator support for commandline args passing

Self-Hosting Cleanup

  • printf?
  • punch though stdio, etc
  • abandon all-source-in-ram approach
  • eliminate #defines
  • rewrite lexer to use if/else instead of case
  • table driven lexing

Syntax

  • type Foo struct { ... } vs struct Foo { ... }
  • semicolons - optional? mandatory? eliminate?
  • colon between param/field name and type (RustLike) or not (GoLike)?
  • naming scheme for PODs (i32 vs int32 vs int32_t, etc)

Optimizations

  • use shifts for power-of-two integer mul/div
  • lazy spilling of parameters
  • lazy spilling of LR / add LR to tmpreg list

Portability / Modularity

  • RISCV RV32I backend
  • X86-64 backend
  • third party writes a backend