Skip to content

Releases: paradigmxyz/solar

0.1.8

01 Oct 18:09
v0.1.8
d284850

Choose a tag to compare

Release Notes

Notable changes:

  • Reduced size of AST for lower memory usage and better performance (#500, #546, #497)
  • Faster parsing, lexing (#516, #502, #533)
  • Implemented fmt::Debug for more types (#537)

Bug Fixes

  • [sema] Remap Sources::file_to_id when sorting (#548)
  • [sema] Do not expose mutable Session access while entered (#542)
  • [diagnostics] Render footers at the bottom (#538)
  • [lexer] Str_from_to_end (#532)
  • [interface] Check longest context matches (#529)
  • [ast] Debug for Token (#512)
  • [CONTRIBUTING.md] Fmt check needs nightly toolchain (#501)
  • [ast] Store yul::Expr even if only Call is allowed (#496)
  • [sema] Peel parens when lowering call args (#495)

Dependencies

  • [deps] Weekly cargo update (#539)
  • [deps] Weekly cargo update (#534)
  • Bump codspeed 4 (#522)
  • [deps] Weekly cargo update (#511)

Features

  • [ast] Spanned optional commasep elements (#543)
  • [data-structures] Add ThinSlice (#545)
  • Add ItemId::as_struct (#544)
  • [sema] Allow delaying/manual import resolution (#531)
  • [sema] Add sources getters (#528)
  • Checks on upper bounds of contract storage sizes (#169)
  • [sema] Add validation for assembly memory-safe flags (#263)
  • Configurable logging destination (#498)
  • [parser] Introduce Recovered enum to improve code readability (#517)

Miscellaneous Tasks

  • Add some traits to AstPath (#549)
  • Simplify pointer projection (#541)
  • Remove feature(doc_auto_cfg) (#540)
  • [sema] Simplify perform_imports (#530)
  • [sema] Fix parse dbg log (#527)
  • Update benchmarks (#523)
  • [interface] Make SessionGlobals private (#506)

Other

  • Use meta crate (#526)
  • Lowering benchmarks (#521)
  • Add source & parser capabilities (#519)
  • Update benchmarks (#504)

Performance

  • [ast] Use ThinSlice (#546)
  • [sema] Pre-compute topo_sort map (#533)
  • [sema] Use a map in AST Sources (#535)
  • [parser] General improvements (#516)
  • [interface] Estimate capacity for SourceFile::lines (#515)
  • [parser] Pass Token in registers (#509)
  • [lexer] Avoid thread locals when we have a Session (#507)
  • [lexer] Use eat_until_either in eat_string (#505)
  • [lexer] Use lookup tables for char info (#502)

Refactor

  • [ast] Boxed yul::StmtKind::For to reduce the size of yul::Stmt (#500)

Styling

  • Implement fmt::Debug for more types (#537)

Testing

  • Add unit test and debug assertion for sources inconsistency (#550)
  • Track node sizes (#497)

Install solar 0.1.8

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.8/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.8/solar-installer.ps1 | iex"

Download solar 0.1.8

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

0.1.7

11 Sep 19:09
v0.1.7
a05c847

Choose a tag to compare

Release Notes

Bug Fixes

  • [sema] Handle linearization failure fallout (#472)
  • Pin dependencies on ourselves

Dependencies

  • [deps] Weekly cargo update (#482)
  • [lexer] Inline token glueing into Cursor (#479)
  • [deps] Weekly cargo update (#459)

Features

  • [interface] Add Session::reconfigure (#491)
  • [sema] Add Compiler::stage getter (#490)
  • Diagnostic suggestions (#474)
  • Add error format options for human-readable diagnostics (#473)
  • [interface] Impl Default for Session, create dcx from opts (#471)
  • [parser] Implement recursion depth limit for expr, stmt, and yul_stmt (#464)
  • Bump to annotate-snippets 0.12, diagnostic tweaks (#465)
  • [sema] Add Compiler::enter{,_mut}_sequential (#457)
  • Add another utility method for extracting diagnostics (#455)
  • [diagnostics] Track notes + expose notes/warn counts (#447)
  • InMemoryEmitter (#451)

Miscellaneous Tasks

  • Improve 'parsed' debug log (#489)
  • Rename lexer methods to slop (#481)
  • [interface] Rename dcx flag setters (#478)
  • Update signal handler (#463)
  • Use json_type to sort ABIs (#456)
  • Move VERSION to config::version::SEMVER_VERSION and log it (#454)
  • Hide more source map implementation details (#450)
  • Chore!(data-structures): remove aliases in sync re-exports (#452)
  • Remove deprecated items (#449)
  • [meta] Update solidity links (#448)
  • Cap default threads at available_parallelism (#445)
  • Make all features reachable from meta crate (#444)

Performance

  • Diagnostic suggestions (#483)
  • [lexer] Minor improvements (#480)
  • [interface] Cache thread pool inside of session (#458)

Testing

  • Add CLI test suite (#453)

Install solar 0.1.7

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.7/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.7/solar-installer.ps1 | iex"

Download solar 0.1.7

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

0.1.6

25 Aug 21:02
v0.1.6
6569fd9

Choose a tag to compare

Release Notes

Notable changes:

  • Rename enter to enter_sequential (#392)
  • Manual parser (solar_parse) usage is unchanged, but solar_sema API now goes through Compiler. See: Add Compiler (#397)

Bug Fixes

  • Don't print fs errors twice (#440)
  • [ast] Visit array size (#437)
  • Error on dummy instead of empty args (#407)
  • OnDrop drops, rename to DropGuard (#399)

Dependencies

  • [deps] Weekly cargo update (#433)
  • [deps] Weekly cargo update (#402)
  • [deps] Weekly cargo update (#395)
  • [deps] Weekly cargo update (#393)
  • [deps] Bump breakings (#388)
  • [deps] Weekly cargo update (#387)
  • [deps] Weekly cargo update (#384)

Documentation

  • Typo in benchmarks (#431)
  • Link to benchmarks in readme (#398)

Features

  • Add getters for source by file name (path) (#442)
  • [interface] Add FileLoader abstraction for fs/io (#438)
  • Implement base_path, streamline creating pcx (#436)
  • Allow session mutable access (#435)
  • Make Literals implement Copy (#414)
  • Add ByteSymbol, use in LitKind::Str (#425)
  • Add Compiler (#397)
  • Support cargo binstall (#396)
  • [sema] Add helper methods to Function (#385)
  • Visit_override when walking fn (#383)

Miscellaneous Tasks

  • Update analyze_source_file (#430)
  • Downgrade some debug spans to trace (#412)
  • Abstract implementation of Declarations (#410)
  • Add some more #[track_caller] (#409)
  • Remove query tracing (#406)
  • Clean up contract inheritance linearization (#405)
  • Update docs, fix ci (#403)
  • Update cargo-dist and move off of fork (#400)
  • Rename enter to enter_sequential (#392)
  • Update benchmarks (#390)

Other

  • Enforce typos (#423)
  • Update to actions/checkout@v5 (#404)

Performance

  • Load input source files in parallel (#429)
  • [sema] Better parallel parser scheduling (#428)
  • [parser] Improve parse_lit for integers (#427)
  • Tweak inlining (#426)
  • Pool symbol resolver scopes, refactor (#413)
  • [sema] Add some reserve calls (#411)
  • [sema] Use Cell<usize> in lowering (#408)
  • Implement likely/unlikely with #[cold] (#386)

Testing

  • Add non existant import test (#441)

Install solar 0.1.6

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.6/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.6/solar-installer.ps1 | iex"

Download solar 0.1.6

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

0.1.5

14 Jul 04:40
v0.1.5
3062e90

Choose a tag to compare

Release Notes

Bug Fixes

  • Visit modifiers in hir visitor (#373)

Dependencies

  • [deps] Weekly cargo update (#381)
  • [deps] Weekly cargo update (#376)
  • Bump to edition 2024, MSRV 1.88 (#375)
  • [deps] Weekly cargo update (#372)
  • [deps] Weekly cargo update (#365)
  • Bump & remove mimalloc patch (#361)
  • [deps] Weekly cargo update (#358)
  • [deps] Weekly cargo update (#351)
  • [deps] Weekly cargo update (#345)

Documentation

  • Add CLAUDE.md for Claude Code guidance (#357)
  • Recommend default-features=false in README.md

Features

  • Resolve ctor base args (#322)
  • Flatten diag msg with style (#368)
  • Add span visitor debug tool (#355)
  • [lexer] Add Cursor::with_position (#348)

Miscellaneous Tasks

  • Store SessionGlobals inside of Session (#379)
  • [benches] Extract Session initialization to its own benchmark (#380)
  • [meta] Add .git-blame-ignore-revs
  • Use Option in the AST (#374)
  • Fn header spans (#371)
  • Clippy
  • Misc cleanup, util methods (#367)
  • Add span to TryCatchClause (#364)
  • [parser] Move unescaping from lexer to parser (#360)

Other

  • Add ds store (#362)
  • Rm bench concurrency

Performance

  • Use inturn as the interner (#349)
  • [lexer] Optimize is_id_continue_byte using bitwise operations (#347)

Refactor

  • Remove redundant EoF check (#366)

Install solar 0.1.5

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.5/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.5/solar-installer.ps1 | iex"

Download solar 0.1.5

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

0.1.4

29 May 19:07
7d4c0db

Choose a tag to compare

Release Notes

Minor bug fixes and lexer/parser performance improvements.

Bug Fixes

  • Windows eol lexing (#340)
  • [parser] Allow EVM builtins to be present in yul paths (#336)
  • [sema] Don't warn 3628 if no interface functions (#330)
  • Try absolute paths in file resolver too (#323)

Dependencies

  • [deps] Weekly cargo update (#333)
  • [lexer] Rewrite prefixed literal lexing (#325)
  • [deps] Weekly cargo update (#320)
  • [deps] Weekly cargo update (#311)

Documentation

  • Remove outdated section in CONTRIBUTING.md

Features

  • [sema] Implement receive function checks (#321)
  • [sema] Display more types, add Ty::display (#328)
  • Add span in FunctionHeader (#318)
  • [ast] Add spans to blocks (#314)
  • Typecheck for external type clashes (#312)

Miscellaneous Tasks

  • [lexer] Cursor cleanup (#338)
  • [benches] Add Optimism
  • [benches] Add Solady
  • [meta] Fix deny.toml

Other

  • Remove concurrency from bench

Performance

  • [lexer] Use slice::Iter instead of Chars in Cursor (#339)
  • [lexer] Use memchr in block_comment (#337)
  • [lexer] Add eat_until (#324)

Install solar 0.1.4

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.4/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.4/solar-installer.ps1 | iex"

Download solar 0.1.4

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

0.1.3

10 May 00:00
1887ab5

Choose a tag to compare

Release Notes

Bug Fixes

  • [parser] Clear docs if not consumed immediatly (#309)
  • [sema] Declare selfdestruct builtin (#297)
  • [sema] Correct variable declaration scopes (#300)
  • [parser] Named call arguments are allowed to be empty (#283)
  • Invalid underscores check (#281)
  • [parser] Typo in concatenated string literals
  • [parser] Align number parsing with solc (#272)
  • [parser] Correct token precedence (#271)
  • [parser] Ignore comments in lookahead (#267)
  • [ast] BinOpToken::Caret is BinOpKind::BitXor (#262)
  • [parser] Remove RawTokenKind::UnknownPrefix (#260)
  • [parser] Don't panic when parsing hex rationals (#256)

Dependencies

  • [deps] Weekly cargo update (#306)
  • [deps] Weekly cargo update (#286)
  • [deps] Weekly cargo update (#278)
  • Add update=none to submodules (#270)
  • [deps] Weekly cargo update (#257)
  • [deps] Bump breaking deps (#253)

Documentation

  • [meta] Update RELEASE_CHECKLIST.md
  • Fix newtype_index! generated doc comments (#288)
  • Update library usage in README
  • Update release checklist

Features

  • Update solidity to 0.8.30 (#307)
  • [ast] Add helpers to Delimiter (#296)
  • Allow constructing DiagId with a string (#295)
  • Warn when payable fallback function found but no receive function (#170)
  • --no-warnings (#293)
  • Literal checks (#287)
  • [parser] Accept non-checksummed addresses, to be validated later (#285)
  • [ast] Store concatenated string literals (#266)
  • [ast] Add span to CallArgs (#265)
  • Pretty printing utilities (#264)
  • Add CompilerStage::ParsedAndImported (#259)
  • [parser] Use impl Into (#258)

Miscellaneous Tasks

  • [meta] Update dist
  • [lexer] Add tokens.capacity log
  • Use astral-sh/cargo-dist fork (#292)
  • Shorter Debug impls (#291)
  • Rust 1.86 (#290)
  • Update hint fns (#289)
  • [benches] Add seaport (#282)
  • Add linguist-vendored
  • [benches] Add tree-sitter (#280)
  • Misc map cleanups (#277)
  • [benches] Update and plot data (#274)
  • Add some more non_exhaustive (#261)
  • Tweak tracing events (#255)
  • Sync sourcemap from upstream (#254)
  • Add 'fetchRecurseSubmodules = false' to solidity submodule
  • Revert extra changelog

Performance

  • [lexer] Deal with bytes instead of chars in Cursor (#279)
  • Add and default to using mimalloc (#276)
  • [lexer] Filter out comments again (#269)
  • [lexer] Double tokens capacity estimate (#268)

Testing

  • Add a test for global storage param (#299)
  • Add another try catch resolve test (#298)

Install solar 0.1.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.3/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.3/solar-installer.ps1 | iex"

Download solar 0.1.3

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

v0.1.2

07 Apr 16:31
v0.1.2
5852b7e

Choose a tag to compare

Install solar 0.1.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.2/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.2/solar-installer.ps1 | iex"

Download solar 0.1.2

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.1.1

05 Jan 23:44
b23d974

Choose a tag to compare

Release Notes

Notable and breaking changes (!):

  • The parser now fully supports doc-comments in any position (#154). This was the last major feature needed to support the full Solidity grammar, as implemented in solc. The parser and AST are now considered feature-complete.
  • Fixed some bugs in the parser
  • Implemented some more syntax checks and validations

Library

  • (!) Return ControlFlow from AST visitor methods (#115)
  • (!) Remove Pos trait (#137)
  • (!) Re-export solar_ast::ast::* internal module (#141)
  • Unify CLI and Session options (#176)
    • Session::builder's individual config option methods have been removed in favor of using Args directly.
  • Install rayon pool in Session::enter (#123)
    • Add Session::enter_parallel (#183)
    • The session is now parallel by default; enter will behave the same, use enter_parallel to be able to make use of rayon inside of the closure.

Install solar 0.1.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.1/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.1/solar-installer.ps1 | iex"

Download solar 0.1.1

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

What's Changed

New Contributors

Read more

0.1.0

08 Nov 04:41
fff9d9f

Choose a tag to compare

Release Notes

Initial release. See the announcement blog post: https://www.paradigm.xyz/2024/11/solar

Install solar 0.1.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/paradigmxyz/solar/releases/download/v0.1.0/solar-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm https://github.com/paradigmxyz/solar/releases/download/v0.1.0/solar-installer.ps1 | iex"

Download solar 0.1.0

File Platform Checksum
solar-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
solar-x86_64-apple-darwin.tar.gz Intel macOS checksum
solar-x86_64-pc-windows-msvc.zip x64 Windows checksum
solar-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
solar-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum