## 🚀 New features
### 
- ✨ add subtract operation and refactor span handling
- ✨ support for type structs and aliases
- ✨ add structs as a type
- ✨ Add variable declarations
- ✨ Add conditional expressions
- ✨ Add negative unary operator
- ✨ Add expression grouping
- ✨ Add anonymous functions
- ✨ Add function types
- ✨ Typecheck conditional expressions
- ✨ Add scoped variables
- ✨ Add type environment
- ✨ Check for binary operations
- ✨ Allow for multiple type errors to be caught
- ✨ Add primitive type checker
- ✨ Add typing system
- ✨ Add syntax highlighting
-  ✨ (scanner): Add `enum` keyword
-  ✨ (parser): Add `combine` for `Diagnostic`
-  ✨ (parser): Enforce `;` after expression statements
-  ✨ (scanner): Add `Lexeme`
-  ✨ (tokenizer): Create `ParenOpen` and `ParenClose`
-  ✨ (tokenizer): Create `tokenizer`
### Parser
- ✨ Add enum parsing
- ✨ Add struct initializer expression
- ✨ Add tuples
- ✨ Add struct parsing
- ✨ Add typing
- ✨ Add assignment and unary expressions
- ✨ Add variable declarations
- ✨ Add expression groupings
- ✨ Add basic error diagnostic messages
- ✨ Add PRATT parser
### Scanner
- ✨ Add indentation as a token
- ✨ Add struct keyword
- ✨ Seperate lexeme to own file and add more tokens
### Tokenizer
- ✨ Curly braces
- ✨ Characters

## 🐛 Bug fixes
### 
-  👽️ remove redundant import of `Diagnostic` in `prelude.rs`
-  ✏️ refactor help message in `type_checker_type_mismatch`
-  ✏️ update `TypeCheckerError` for type mismatch error message
-  👔 add `Identifier` struct and expand `Statement` functionalities
- 👔 refactor parse and type_check functions for clarity and add boolean expression support
-  ➖ remove `span_derive` package and its references
-  🐛 refactor `main` to utilize `expect` with error context
-  👔 update `Token` struct with custom `Debug` implementation
-  👔 refactor `FunctionCall` to use `function` instead of `identifier`
-  👔 add `LambdaSignatureParameter` struct and refactor typing logic
- ✏ ️ remove unused imports and simplify formatting in code
-  👔 rename `LambdaSignature` to `FunctionSignature` throughout
-  👔 refactor `Typer` and related functions for improved clarity
-  ⬆️ bump cranelift dependencies to version 0.119.0
-  🐛 refactor `StructDeclaration`
- 🐛 refactor spans
-  🩹 refactor error handling using `Diagnostics` struct
- 🚸 Improve error messages
- 🚸 Improve binary operator error message
-  3.0 (#28)
- 🐛 Fix compiler warnings
- 🐛 Fix function calls
- ➖ Remove unused dependencies
-  ➕ Add `inkwell`
- 🐛 Fix unit types not having a correct span
- 🐛 Fix duplicate typing error messages
- 🐛 Fix debug typing printing
-  🐛 (parser): Fix `no expression handler` error starting at wrong position
-  🐛 (scanner): Fix `var` regex
-  ✏️ (scanner): Rename `Token::Equiality` to `Token::Equality`
-  ➖ Remove unused `codespan` dependency
-  🐛 (scanner): Fix `Lexeme` `position` being invalid for `Invalid` tokens
- 📌 Pin anyhow and regex crates
### Tokenizer
- 🐛 Remove unintended character
### ️ (parser
- ♿ Improve error messages
- ♿ Add panic recovery mode
### Scanner
- 🩹 Fix invalid lexemes having a wrong starting range index
### Parser
- 🐛 Fix panic mode skipping over the second token
- 🚸 Improve error messages
- 🚸 Improve type handler not found error message
- 🚸 Improve expect_tokens error message
- 🚸 Improve expression handler not found error message
- 🚸 Improve error messages
- 🚸 Gather multiple diagnostics
- 🐛 Fix binding power not propegating correctly

