compiler

Unnamed Compiled Systems Language Project
git clone http://frotz.net/git/compiler.git
Log | Files | Refs

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