# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0](https://github.com/paradigmxyz/solar/releases/tag/v0.2.0)

### Bug Fixes

- [parser] Recover malformed member access ([#914](https://github.com/paradigmxyz/solar/issues/914))
- [docs] Avoid rustdoc ICE on re-exports ([#912](https://github.com/paradigmxyz/solar/issues/912))
- [parser] Clear error literal denominations ([#896](https://github.com/paradigmxyz/solar/issues/896))
- Add codes to warnings ([#839](https://github.com/paradigmxyz/solar/issues/839))
- [parse] Preserve hex escape bytes ([#831](https://github.com/paradigmxyz/solar/issues/831))
- [sema] Align natspec validation ([#771](https://github.com/paradigmxyz/solar/issues/771))
- [parser] Parse exponentiation right-assoc ([#767](https://github.com/paradigmxyz/solar/issues/767))
- [sema] Canonicalize bare integer aliases ([#761](https://github.com/paradigmxyz/solar/issues/761))
- [parse] Ignore mid-line '@' in doc cmnts ([#597](https://github.com/paradigmxyz/solar/issues/597))
- Do not break on close paren for struct ([#562](https://github.com/paradigmxyz/solar/issues/562))
- [parser] Neg. exp. empty check, disallow plus ([#561](https://github.com/paradigmxyz/solar/issues/561))

### Features

- [lsp] Add auto-completion support ([#915](https://github.com/paradigmxyz/solar/issues/915))
- Improve parser/lowering ([#835](https://github.com/paradigmxyz/solar/issues/835))
- [parser] Add import callback ([#823](https://github.com/paradigmxyz/solar/issues/823))
- [sema] Lower inline yul to hir ([#769](https://github.com/paradigmxyz/solar/issues/769))
- [sema] Lower natspec ([#768](https://github.com/paradigmxyz/solar/issues/768))
- SIMD optimizations, bug fixes, and struct codegen improvements
- [ast] Change TypeSize to store bits instead of bytes ([#671](https://github.com/paradigmxyz/solar/issues/671))
- [ast] Naive natspec ([#470](https://github.com/paradigmxyz/solar/issues/470))

### Miscellaneous Tasks

- Warn instead err on invalid natspec tag ([#600](https://github.com/paradigmxyz/solar/issues/600))
- [parse] Natspec w/ ws after '@' is valid ([#585](https://github.com/paradigmxyz/solar/issues/585))

### Other

- Revert "feat: SIMD optimizations, bug fixes, and struct codegen improvements"

### Refactor

- Add diagnostic span helper ([#820](https://github.com/paradigmxyz/solar/issues/820))
- [parser] Move mapping key type validation to semantic analysis ([#574](https://github.com/paradigmxyz/solar/issues/574))

## [0.1.8](https://github.com/paradigmxyz/solar/releases/tag/v0.1.8)

### Bug Fixes

- [lexer] Str_from_to_end ([#532](https://github.com/paradigmxyz/solar/issues/532))
- [ast] Debug for Token ([#512](https://github.com/paradigmxyz/solar/issues/512))
- [ast] Store yul::Expr even if only Call is allowed ([#496](https://github.com/paradigmxyz/solar/issues/496))

### Features

- [ast] Spanned optional commasep elements ([#543](https://github.com/paradigmxyz/solar/issues/543))
- [parser] Introduce `Recovered` enum to improve code readability ([#517](https://github.com/paradigmxyz/solar/issues/517))

### Miscellaneous Tasks

- Remove feature(doc_auto_cfg) ([#540](https://github.com/paradigmxyz/solar/issues/540))

### Performance

- [ast] Use ThinSlice ([#546](https://github.com/paradigmxyz/solar/issues/546))
- [parser] General improvements ([#516](https://github.com/paradigmxyz/solar/issues/516))
- [parser] Pass Token in registers ([#509](https://github.com/paradigmxyz/solar/issues/509))
- [lexer] Avoid thread locals when we have a Session ([#507](https://github.com/paradigmxyz/solar/issues/507))
- [lexer] Use eat_until_either in eat_string ([#505](https://github.com/paradigmxyz/solar/issues/505))
- [lexer] Use lookup tables for char info ([#502](https://github.com/paradigmxyz/solar/issues/502))

### Refactor

- [ast] Boxed `yul::StmtKind::For` to reduce the size of `yul::Stmt` ([#500](https://github.com/paradigmxyz/solar/issues/500))

## [0.1.7](https://github.com/paradigmxyz/solar/releases/tag/v0.1.7)

### Dependencies

- [lexer] Inline token glueing into Cursor ([#479](https://github.com/paradigmxyz/solar/issues/479))

### Features

- [parser] Implement recursion depth limit for `expr`, `stmt`, and `yul_stmt` ([#464](https://github.com/paradigmxyz/solar/issues/464))
- Bump to annotate-snippets 0.12, diagnostic tweaks ([#465](https://github.com/paradigmxyz/solar/issues/465))

### Miscellaneous Tasks

- Rename lexer methods to slop ([#481](https://github.com/paradigmxyz/solar/issues/481))
- Remove deprecated items ([#449](https://github.com/paradigmxyz/solar/issues/449))
- [meta] Update solidity links ([#448](https://github.com/paradigmxyz/solar/issues/448))

### Performance

- [lexer] Minor improvements ([#480](https://github.com/paradigmxyz/solar/issues/480))

## [0.1.6](https://github.com/paradigmxyz/solar/releases/tag/v0.1.6)

### Features

- [interface] Add FileLoader abstraction for fs/io ([#438](https://github.com/paradigmxyz/solar/issues/438))
- Make `Lit`erals implement `Copy` ([#414](https://github.com/paradigmxyz/solar/issues/414))
- Add ByteSymbol, use in LitKind::Str ([#425](https://github.com/paradigmxyz/solar/issues/425))
- Add Compiler ([#397](https://github.com/paradigmxyz/solar/issues/397))

### Miscellaneous Tasks

- Downgrade some debug spans to trace ([#412](https://github.com/paradigmxyz/solar/issues/412))
- Update docs, fix ci ([#403](https://github.com/paradigmxyz/solar/issues/403))

### Other

- Enforce typos ([#423](https://github.com/paradigmxyz/solar/issues/423))

### Performance

- [sema] Better parallel parser scheduling ([#428](https://github.com/paradigmxyz/solar/issues/428))
- [parser] Improve parse_lit for integers ([#427](https://github.com/paradigmxyz/solar/issues/427))
- Tweak inlining ([#426](https://github.com/paradigmxyz/solar/issues/426))

## [0.1.5](https://github.com/paradigmxyz/solar/releases/tag/v0.1.5)

### Dependencies

- Bump to edition 2024, MSRV 1.88 ([#375](https://github.com/paradigmxyz/solar/issues/375))

### Features

- [lexer] Add Cursor::with_position ([#348](https://github.com/paradigmxyz/solar/issues/348))

### Miscellaneous Tasks

- Store SessionGlobals inside of Session ([#379](https://github.com/paradigmxyz/solar/issues/379))
- Use Option<StateMutability> in the AST ([#374](https://github.com/paradigmxyz/solar/issues/374))
- Fn header spans ([#371](https://github.com/paradigmxyz/solar/issues/371))
- Clippy
- Add span to `TryCatchClause` ([#364](https://github.com/paradigmxyz/solar/issues/364))
- [parser] Move unescaping from lexer to parser ([#360](https://github.com/paradigmxyz/solar/issues/360))

### Performance

- [lexer] Optimize `is_id_continue_byte` using bitwise operations ([#347](https://github.com/paradigmxyz/solar/issues/347))

### Refactor

- Remove redundant EoF check ([#366](https://github.com/paradigmxyz/solar/issues/366))

## [0.1.4](https://github.com/paradigmxyz/solar/releases/tag/v0.1.4)

### Bug Fixes

- Windows eol lexing ([#340](https://github.com/paradigmxyz/solar/issues/340))
- [parser] Allow EVM builtins to be present in yul paths ([#336](https://github.com/paradigmxyz/solar/issues/336))

### Dependencies

- [lexer] Rewrite prefixed literal lexing ([#325](https://github.com/paradigmxyz/solar/issues/325))

### Features

- [sema] Implement receive function checks ([#321](https://github.com/paradigmxyz/solar/issues/321))
- Add span in FunctionHeader ([#318](https://github.com/paradigmxyz/solar/issues/318))
- [ast] Add spans to blocks ([#314](https://github.com/paradigmxyz/solar/issues/314))

### Miscellaneous Tasks

- [lexer] Cursor cleanup ([#338](https://github.com/paradigmxyz/solar/issues/338))

### Performance

- [lexer] Use slice::Iter instead of Chars in Cursor ([#339](https://github.com/paradigmxyz/solar/issues/339))
- [lexer] Use memchr in block_comment ([#337](https://github.com/paradigmxyz/solar/issues/337))
- [lexer] Add eat_until ([#324](https://github.com/paradigmxyz/solar/issues/324))

## [0.1.3](https://github.com/paradigmxyz/solar/releases/tag/v0.1.3)

### Bug Fixes

- [parser] Clear docs if not consumed immediatly ([#309](https://github.com/paradigmxyz/solar/issues/309))
- [parser] Named call arguments are allowed to be empty ([#283](https://github.com/paradigmxyz/solar/issues/283))
- Invalid underscores check ([#281](https://github.com/paradigmxyz/solar/issues/281))
- [parser] Typo in concatenated string literals
- [parser] Align number parsing with solc ([#272](https://github.com/paradigmxyz/solar/issues/272))
- [parser] Correct token precedence ([#271](https://github.com/paradigmxyz/solar/issues/271))
- [parser] Ignore comments in lookahead ([#267](https://github.com/paradigmxyz/solar/issues/267))
- [parser] Remove RawTokenKind::UnknownPrefix ([#260](https://github.com/paradigmxyz/solar/issues/260))
- [parser] Don't panic when parsing hex rationals ([#256](https://github.com/paradigmxyz/solar/issues/256))

### Features

- [parser] Accept non-checksummed addresses, to be validated later ([#285](https://github.com/paradigmxyz/solar/issues/285))
- [ast] Store concatenated string literals ([#266](https://github.com/paradigmxyz/solar/issues/266))
- [ast] Add span to CallArgs ([#265](https://github.com/paradigmxyz/solar/issues/265))
- Pretty printing utilities ([#264](https://github.com/paradigmxyz/solar/issues/264))
- [parser] Use impl Into<String> ([#258](https://github.com/paradigmxyz/solar/issues/258))

### Miscellaneous Tasks

- [lexer] Add tokens.capacity log
- Tweak tracing events ([#255](https://github.com/paradigmxyz/solar/issues/255))
- Revert extra changelog

### Performance

- [lexer] Deal with bytes instead of chars in Cursor ([#279](https://github.com/paradigmxyz/solar/issues/279))
- [lexer] Filter out comments again ([#269](https://github.com/paradigmxyz/solar/issues/269))
- [lexer] Double tokens capacity estimate ([#268](https://github.com/paradigmxyz/solar/issues/268))

## [0.1.2](https://github.com/paradigmxyz/solar/releases/tag/v0.1.2)

### Bug Fixes

- [parser] Glob imports require an alias ([#245](https://github.com/paradigmxyz/solar/issues/245))
- Correctly resolve try/catch scopes ([#200](https://github.com/paradigmxyz/solar/issues/200))

### Features

- Refactor FileResolver to allow custom current_dir ([#235](https://github.com/paradigmxyz/solar/issues/235))
- Parse storage layout specifiers ([#232](https://github.com/paradigmxyz/solar/issues/232))

### Miscellaneous Tasks

- Shorten Diagnostic* to Diag ([#184](https://github.com/paradigmxyz/solar/issues/184))

### Performance

- Make Token implement Copy ([#241](https://github.com/paradigmxyz/solar/issues/241))

## [0.1.1](https://github.com/paradigmxyz/solar/releases/tag/v0.1.1)

### Bug Fixes

- Add Session::enter_parallel ([#183](https://github.com/paradigmxyz/solar/issues/183))
- [parser] Accept leading dot in literals ([#151](https://github.com/paradigmxyz/solar/issues/151))
- [parser] Span of partially-parsed expressions ([#139](https://github.com/paradigmxyz/solar/issues/139))
- [parser] Ignore more doc comments ([#136](https://github.com/paradigmxyz/solar/issues/136))

### Documentation

- Add icons ([#109](https://github.com/paradigmxyz/solar/issues/109))

### Features

- Add some more Span utils ([#179](https://github.com/paradigmxyz/solar/issues/179))
- [parser] Allow doc-comments anywhere ([#154](https://github.com/paradigmxyz/solar/issues/154))
- Validate variable data locations ([#149](https://github.com/paradigmxyz/solar/issues/149))
- [parser] Recover old-style fallbacks ([#135](https://github.com/paradigmxyz/solar/issues/135))
- Make parse_semver_req public ([#114](https://github.com/paradigmxyz/solar/issues/114))

### Miscellaneous Tasks

- Remove Pos trait ([#137](https://github.com/paradigmxyz/solar/issues/137))

### Other

- Validate num. variants in enum declaration ([#120](https://github.com/paradigmxyz/solar/issues/120))
- Better error for struct without any fields ([#121](https://github.com/paradigmxyz/solar/issues/121))

### Refactor

- Re-export ast::* internal module ([#141](https://github.com/paradigmxyz/solar/issues/141))

## [0.1.0](https://github.com/paradigmxyz/solar/releases/tag/v0.1.0)

Initial release.

<!-- generated by git-cliff -->
