## Todo ### Compiler - [x] Tokenizer - [x] Scanner - [x] Functions - [x] Variables - [x] Error messages - [x] Expression parser - [x] Function calls - [x] Parallel compilation - [x] Syscalls - [x] Variable lifetimes - [x] Branches - [x] Loops - [x] Hexadecimal, octal and binary literals - [x] Escape sequences - [x] Multiple return values - [ ] Type system - [ ] Type operator `?` - [ ] Data structures - [ ] Slices - [ ] Floating-point arithmetic - [ ] Error handling - [ ] Threading library - [ ] Self-hosted compiler ### Keywords - [x] `assert` - [x] `else` - [ ] `for` - [x] `if` - [x] `import` - [x] `loop` - [x] `return` - [x] `switch` ### Optimizations - [x] Exclude unused functions - [x] Constant folding - [ ] Constant propagation - [ ] Function call inlining - [ ] Loop unrolls - [ ] Assembler optimization backend ### Linter - [x] Unused variables - [x] Unused parameters - [x] Unused imports - [ ] Unnecessary newlines - [ ] Ineffective assignments ### Operators - [x] `=`, `:=` - [x] `+`, `-`, `*`, `/`, `%` - [x] `+=`, `-=`, `*=`, `/=`, `%=` - [x] `&`, `|`, `^` - [x] `&=`, `|=`, `^=` - [x] `<<`, `>>` - [x] `<<=`, `>>=` - [x] `==`, `!=`, `<`, `<=`, `>`, `>=` - [x] `&&`, `||` - [ ] `!`, `-` ### Architecture - [ ] arm64 - [ ] riscv - [x] x64 ### Platform - [x] Linux - [x] Mac - [ ] Windows