Roadmap #1

Open
opened 2025-07-30 20:50:39 +00:00 by ed · 0 comments
Owner

Compiler

  • Tokenizer
  • Scanner
  • Functions
  • Variables
  • Error messages
  • Expression parser
  • Function calls
  • Parallel compilation
  • Syscalls
  • Lifetimes
  • Branches
  • Loops
  • Hexadecimal, octal and binary literals
  • Escape sequences
  • Multiple return values
  • Data structures
  • Type system
  • Slices
  • Resource types
  • Error handling
  • Static allocations
  • Generics
  • Unsigned types
  • Floating-point arithmetic
  • Concurrency
  • Register spilling
  • Dynamic libraries: Linux Mac Windows
  • Algebraic data types
  • Tagged unions
  • Self-hosted compiler

Memory

  • Primitive
  • Primitive on the heap
  • Struct
  • Struct on the heap
  • Array
  • Array on the heap
  • Efficient memory allocator

Keywords

  • assert
  • const
  • else
  • extern
  • go
  • if
  • import
  • loop
  • return
  • switch

Optimizations

  • Exclude unused functions
  • Common subexpression elimination
  • Reordering of operands in commutative operations
  • Elimination of register allocations for instructions using constants
  • Constant folding
  • Constant propagation
  • Function call inlining
  • Loop prioritization in register allocation
  • Loop unrolls

Linter

  • Unused variables
  • Unused parameters
  • Unused imports
  • Partial resource leaks in branches
  • Identical expressions in binary operations

Operators

  • =, :=
  • +, -, *, /, %
  • +=, -=, *=, /=, %=
  • &, |, ^
  • &=, |=, ^=
  • <<, >>
  • <<=, >>=
  • ==, !=, <, <=, >, >=
  • &&, ||
  • -, !
  • as

Architecture

  • arm
  • x86

Platform

  • Linux
  • Mac
  • Windows
# Compiler - [x] Tokenizer - [x] Scanner - [x] Functions - [x] Variables - [x] Error messages - [x] Expression parser - [x] Function calls - [x] Parallel compilation - [x] Syscalls - [x] Lifetimes - [x] Branches - [x] Loops - [x] Hexadecimal, octal and binary literals - [x] Escape sequences - [x] Multiple return values - [x] Data structures - [x] Type system - [x] Slices - [x] Resource types - [x] Error handling - [x] Static allocations - [ ] Generics - [ ] Unsigned types - [ ] Floating-point arithmetic - [ ] Concurrency - [ ] Register spilling - [ ] Dynamic libraries: Linux Mac ~~Windows~~ - [ ] Algebraic data types - [ ] Tagged unions - [ ] Self-hosted compiler # Memory - [x] Primitive - [x] Primitive on the heap - [x] Struct - [x] Struct on the heap - [ ] Array - [x] Array on the heap - [ ] Efficient memory allocator # Keywords - [x] `assert` - [x] `const` - [x] `else` - [x] `extern` - [x] `go` - [x] `if` - [x] `import` - [x] `loop` - [x] `return` - [x] `switch` # Optimizations - [x] Exclude unused functions - [x] Common subexpression elimination - [x] Reordering of operands in commutative operations - [x] Elimination of register allocations for instructions using constants - [x] Constant folding - [x] Constant propagation - [ ] Function call inlining - [ ] Loop prioritization in register allocation - [ ] Loop unrolls # Linter - [x] Unused variables - [x] Unused parameters - [x] Unused imports - [x] Partial resource leaks in branches - [x] Identical expressions in binary operations # Operators - [x] `=`, `:=` - [x] `+`, `-`, `*`, `/`, `%` - [x] `+=`, `-=`, `*=`, `/=`, `%=` - [x] `&`, `|`, `^` - [x] `&=`, `|=`, `^=` - [x] `<<`, `>>` - [x] `<<=`, `>>=` - [x] `==`, `!=`, `<`, `<=`, `>`, `>=` - [x] `&&`, `||` - [x] `-`, `!` - [x] `as` # Architecture - [x] arm - [x] x86 # Platform - [x] Linux - [x] Mac - [x] Windows
ed locked and limited conversation to collaborators 2025-07-30 20:51:28 +00:00
This discussion has been locked. Commenting is limited to contributors.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cli/q#1
No description provided.