todo.md (1434B)
1 # Task Lists, Reminders, Etc. 2 3 ### Compiler 4 5 - [ ] support for slices & string constants 6 - [ ] break/continue to label 7 - [ ] const / readonly 8 - [ ] type inference for var definitions 9 - [ ] support for named enums 10 - [ ] simplify use of Type/Symbol for type system 11 - [x] support for global anonymous enums 12 - [x] continue 13 - [x] support for arrays 14 - [x] support for pointers 15 - [x] support for globals, init'ing gp 16 - [x] support for structs 17 - [x] type definition 18 - [x] finish if/while flow control 19 20 ### Emulator / Runtime 21 22 - [ ] support for open/close/read/write "syscalls" 23 - [ ] mini std library (malloc-analogue, alloc-only heap, string utils) 24 - [x] emulator support for commandline args passing 25 26 ### Self-Hosting Cleanup 27 28 - [ ] printf? 29 - [ ] punch though stdio, etc 30 - [ ] abandon all-source-in-ram approach 31 - [x] eliminate #defines 32 - [x] rewrite lexer to use if/else instead of case 33 - [x] table driven lexing 34 35 ### Syntax 36 37 - [ ] `type Foo struct { ... }` vs `struct Foo { ... }` 38 - [ ] semicolons - optional? mandatory? eliminate? 39 - [ ] colon between param/field name and type (RustLike) or not (GoLike)? 40 - [ ] naming scheme for PODs (`i32` vs `int32` vs `int32_t`, etc) 41 42 ### Optimizations 43 44 - [ ] use shifts for power-of-two integer mul/div 45 - [ ] lazy spilling of parameters 46 - [ ] lazy spilling of LR / add LR to tmpreg list 47 48 ### Portability / Modularity 49 50 - [ ] RISCV RV32I backend 51 - [ ] X86-64 backend 52 - [ ] third party writes a backend