- 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
- support for open/close/read/write "syscalls"
- mini std library (malloc-analogue, alloc-only heap, string utils)
- emulator support for commandline args passing
- 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
-
type Foo struct { ... }
vsstruct Foo { ... }
- semicolons - optional? mandatory? eliminate?
- colon between param/field name and type (RustLike) or not (GoLike)?
- naming scheme for PODs (
i32
vsint32
vsint32_t
, etc)
- use shifts for power-of-two integer mul/div
- lazy spilling of parameters
- lazy spilling of LR / add LR to tmpreg list
- RISCV RV32I backend
- X86-64 backend
- third party writes a backend