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
  • Variable lifetimes
  • Branches
  • Loops
  • Hexadecimal, octal and binary literals
  • Escape sequences
  • Multiple return values
  • Data structures
  • Type system
  • Slices
  • Register spilling
  • Dynamic libraries: Linux Mac Windows
  • Unsigned types
  • Floating-point arithmetic
  • Self-hosted compiler

Library

  • Efficient memory allocator
  • Error handling
  • Concurrency

Keywords

  • assert
  • const
  • else
  • extern
  • 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 unrolls

Linter

  • Unused variables
  • Unused parameters
  • Unused imports

Operators

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

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] Variable 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 - [ ] Register spilling - [ ] Dynamic libraries: Linux Mac ~~Windows~~ - [ ] Unsigned types - [ ] Floating-point arithmetic - [ ] Self-hosted compiler # Library - [ ] Efficient memory allocator - [ ] Error handling - [ ] Concurrency # Keywords - [x] `assert` - [x] `const` - [x] `else` - [x] `extern` - [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 - [ ] Constant folding - [ ] Constant propagation - [ ] Function call inlining - [ ] Loop unrolls # Linter - [x] Unused variables - [x] Unused parameters - [x] Unused imports # Operators - [x] `=`, `:=` - [x] `+`, `-`, `*`, `/`, `%` - [x] `+=`, `-=`, `*=`, `/=`, `%=` - [x] `&`, `|`, `^` - [x] `&=`, `|=`, `^=` - [x] `<<`, `>>` - [x] `<<=`, `>>=` - [x] `==`, `!=`, `<`, `<=`, `>`, `>=` - [x] `&&`, `||` - [x] `-` - [ ] `!` # 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.