Skip to content

0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Jul 19:30
v0.2.0
a1f81d0

Release Notes

Highlights

Added unstable implementations of type checking, LSP, and codegen:

  • -Ztypeck. 95% complete, will be stabilized in a release or two, and it's already used in many Foundry features.
  • --standard-json, identical to solc's standard JSON input and output. Can be paired with the other -Z and normal flags.
  • solar lsp. Incomplete implementation, it will be integrated into Forge as forge lsp once more stable
  • -Zcodegen, with --emit bin,bin-runtime. Incomplete, very basic implementations.

Solar will be shipped as part of the Foundry toolchain starting in Foundry 1.8.0.

Bug Fixes

  • [sema] Encode library function signatures like solc (#926)
  • [sema] Resolve public constant member over its getter (#927)
  • [release] Require crate changelogs (#924)
  • [release] Default vergen metadata on error (#923)
  • [config] Handle packaged version builds (#922)
  • [parser] Recover malformed member access (#914)
  • [docs] Avoid rustdoc ICE on re-exports (#912)
  • [lsp] Only scan open files without workspace (#898)
  • [parser] Clear error literal denominations (#896)
  • Avoid unused ui_test patch warning (#894)
  • [foundry] Clean up solc wrapper (#889)
  • [sema] Stabilize diagnostic order (#879)
  • Align import resolution with solc (#860)
  • [bench] Preserve single-threaded session (#859)
  • Add codes to warnings (#839)
  • [parse] Preserve hex escape bytes (#831)
  • [sema] Check variadic builtins (#815)
  • [sema] Allow struct NatSpec params (#827)
  • [sema] Inherit public variable getter docs (#825)
  • [sema] Expose inherited function selectors (#824)
  • [sema] Attach functions to function values (#801)
  • [sema] Expose contract type members (#814)
  • [sema] Reject oversized memory arrays (#803)
  • [sema] Expose contract scoped type members (#793)
  • [sema] Handle storage call lvalues (#808)
  • [sema] Allow tuple assignment holes (#798)
  • [sema] Validate storage layout base slots (#810)
  • [sema] Cast library names to address (#804)
  • [sema] Prefer most derived call target (#800)
  • [sema] Validate inline array literals (#794)
  • [sema] Index calldata slices (#807)
  • [sema] Type yul address literals as words (#799)
  • [sema] Bind storage array methods (#802)
  • [sema] Ignore index args for lvalues (#796)
  • [sema] Reject invalid using modifiers (#790)
  • [sema] Follow up function member kinds (#788)
  • [sema] Model function member kinds (#786)
  • [sema] Type yul string literals as words (#785)
  • [sema] Typeck yul (#774)
  • [typeck] Allow dynamic array new args (#784)
  • [typeck] Preserve mapping element locations (#783)
  • [typeck] Allow address literal casts (#782)
  • [typeck] Locate dynamic casts (#781)
  • [typeck] Allow implicit fixed bytes literals (#780)
  • [typeck] Allow immutable construction writes (#778)
  • [sema] Coerce private function pointers (#776)
  • [sema] Convert hex literals to fixed bytes (#775)
  • [typeck] Cap literal constant evaluation
  • [sema] Align natspec validation (#771)
  • [interface] Honor no_warnings in DiagCtxtFlags::update_from_opts (#744)
  • [parser] Parse exponentiation right-assoc (#767)
  • [sema] Canonicalize bare integer aliases (#761)
  • Address clippy and fmt CI failures
  • [typeck] Explicit type check for payable address (#690)
  • [bench] Skip useless tables and plots in benchmark output (#676)
  • [sema] Add handling for event/error failures (#660)
  • [typeck] Mark event/error typechecking todo (#658)
  • [parse] Ignore mid-line '@' in doc cmnts (#597)
  • Replace unnecessary repetitions of structure name (#581)
  • [interface] Strip prefix from import resolution context (#577)
  • [lowering] Bring this and super into scope for constructor inheritance (#570)
  • Do not break on close paren for struct (#562)
  • [parser] Neg. exp. empty check, disallow plus (#561)

Dependencies

  • [deps] Bump the ci-weekly group with 4 updates (#919)
  • [deps] Bump the npm-weekly group in /editors/vscode with 2 updates (#920)
  • Bump inturn to 0.2.0 (#916)
  • [zed] Bump solidity grammar (#908)
  • [deps] Bump the ci-weekly group with 4 updates (#904)
  • [deps] Bump the npm-weekly group in /editors/vscode with 4 updates (#905)
  • Bump vergen to v10 (#899)
  • [deps] Weekly cargo update (#891)
  • [deps] Bump the ci-weekly group with 5 updates (#876)
  • [deps] Weekly cargo update (#875)
  • [deps] Weekly cargo update (#851)
  • [deps] Weekly cargo update (#843)
  • [deps] Weekly cargo update (#832)
  • [deps] Weekly cargo update (#813)
  • Bump MSRV (#764)
  • [deps] Weekly cargo update (#738)
  • [deps] Weekly cargo update (#736)
  • [deps] Weekly cargo update (#732)
  • [deps] Bump bytes from 1.11.0 to 1.11.1 (#730)
  • [deps] Weekly cargo update (#729)
  • Optimize non-critical deps for size (#728)
  • [deps] Weekly cargo update (#725)
  • [deps] Bump vergen to 10 (#461)
  • [deps] Weekly cargo update (#720)
  • Bump benches/analyze dependencies (#724)
  • [deps] Weekly cargo update (#673)
  • [deps] Run cargo shear (#670)
  • [deps] Weekly cargo update (#668)
  • [deps] Weekly cargo update (#635)
  • test: bump solidity submodule to 0.8.31 (#608)
  • [deps] Weekly cargo update (#607)
  • [deps] Bump actions/checkout from 5 to 6 (#604)
  • [deps] Weekly cargo update (#603)
  • [deps] Weekly cargo update (#601)
  • [deps] Weekly cargo update (#599)
  • [deps] Bump actions/upload-artifact from 4 to 5 (#589)
  • [deps] Bump actions/download-artifact from 4 to 6 (#590)
  • [deps] Weekly cargo update (#583)
  • [deps] Weekly cargo update (#582)
  • [deps] Weekly cargo update (#571)
  • [deps] Weekly cargo update (#558)

Documentation

  • Document FileCheck UI annotations
  • Update SECURITY.md
  • Update benchmarks for 0.1.8 (#553)
  • Typo in CHANGELOG.md (#552)

Features

  • [lsp] Add inlay hints (#918)
  • [lsp] Add auto-completion support (#915)
  • Add solsmith and solreduce tools (#911)
  • [lsp] Add symbol navigation index (#909)
  • [lsp] Add symbol providers (#906)
  • [vscode] Add syntax highlighting (#907)
  • [hir] Add pretty printer (#903)
  • Add HIR stats flag (#893)
  • [lsp] Extract declaration symbol tables (#888)
  • Show AST enum variant sizes (#892)
  • feat(lsp): load workspace config across lifecycle events (#881)
  • Add Fandango source code and runtime fuzzing (#882)
  • Port editor extensions to main repo (#883)
  • Introduce EVM IR (#868)
  • [lsp] Register watched file notifications (#880)
  • [lsp] Add initial language server support (#870)
  • Add erc7201 builtin (#877)
  • Update solidity to 0.8.35 (#874)
  • [codegen] Cost-model load PRE insertions (#863)
  • [codegen] Preserve stack across branch edges (#862)
  • Mem2reg improvements and evm codegen fixes (#861)
  • Codegen (#822)
  • Add solc-compatible wasm API (#850)
  • Continue after frontend errors (#838)
  • Allow warnings by code (#837)
  • Improve parser/lowering (#835)
  • Expose expr types after typeck (#833)
  • [sema] Allow require custom errors (#819)
  • [cli] Support standard json pipeline (#829)
  • [sema] Add implicit tuple conversions (#828)
  • [parser] Add import callback (#823)
  • [sema] Implement using for (#773)
  • [typeck] Implement constant folding for integer literal type preservation (#649)
  • [sema] Lower inline yul to hir (#769)
  • [sema] Lower natspec (#768)
  • [sema] Implement override checker (#685)
  • SIMD optimizations, bug fixes, and struct codegen improvements
  • [sema] Implement call type checking (#717)
  • [sema] Add internal function pointer check and improve check_assign (#718)
  • [sema] Implement variable declaration rules (#681)
  • [sema] Add implicit function pointer conversions (#715)
  • [sema] Add implicit tuple conversions (#713)
  • [sema] Add implicit fixed bytes conversions (#712)
  • [sema] Add implicit integer width conversions (#711)
  • [sema] Add bytes <-> string explicit conversions (#708)
  • [sema] Add function implementation checks (#691)
  • [sema] Integer explicit conversions (#633)
  • [sema] Implicit bytes literal conversion to bytes dynamic/fixed (#642)
  • [typeck] Support negative integer literal coercion (#648)
  • [typeck] Implement implicit integer literal coercion (#647)
  • [ast] Change TypeSize to store bits instead of bytes (#671)
  • [typeck] Contracts/address explicit conversions (#646)
  • [cli] Add tracing-samply (#669)
  • [typeck] Contracts implicit conversions (#634)
  • [typeck] Check lvalue (#641)
  • [typeck,ast_lowering] Constructor base arguments validation (#580)
  • Fix mapping ICE + impl data location coercion (#637)
  • [sema] Explicit bytes conversion (#632)
  • [sema] Address explicit conversion (#626)
  • [sema] Implement explicit conversions for fixed-size byte arrays (#624)
  • Switch default emitter kind to unicode (#629)
  • [sema] Enum explicit conversion (#625)
  • [sema] Implement array slice implicit conversion (#623)
  • [typeck] Payable address implicit conversion (#622)
  • Implement HIR builder (#559)
  • [ast] Naive natspec (#470)
  • [sema] Experimental typeck (#563)
  • Complete hir visitor (#557)
  • [ast] Add some methods to BinOpKind, DataLocation (#555)

Miscellaneous Tasks

  • Fix changelog script
  • Update crossbeam-epoch
  • Link zed rust-analyzer project (#901)
  • Improve AGENTS.md
  • Group npm dependabot updates
  • Update dependabot
  • Rename benchmarks (#857)
  • Dep upgrades (#852)
  • [meta] Add .config/nextest.toml
  • [meta] Stupid bot
  • Migrate benchmarks to Gungraun (#766)
  • Tmp ignore (#765)
  • [meta] Remove RUSTFLAGS from AGENTS.md
  • [meta] Ignore bincode advisory
  • Display bits for int_literal[n] instead of bytes (#672)
  • [meta] Add fuzz directory (#665)
  • [sema] Remove todo (#656)
  • [meta] Compress AGENTS.md, add note about symbols (#644)
  • Sync annotate_snippets impl (#630)
  • [meta] Rename CLAUDE.md to AGENTS.md (#628)
  • [meta] Set issue types on issue templates (#616)
  • Warn instead err on invalid natspec tag (#600)
  • Disable clippy::test_attr_in_doctest (#598)
  • [interface] Expose semver MIN_SOLIDITY_VERSION (#593)
  • [meta] Add dependabot for GHA (#587)
  • [parse] Natspec w/ ws after '@' is valid (#585)
  • [lowering] Allow empty sources (#572)
  • [interface] Expose minimum supported solidity version (#573)
  • Update Cargo.lock
  • Fix -Zdump path parser (#554)

Other

  • Update to tempoxyz (#721)
  • Revert "feat: SIMD optimizations, bug fixes, and struct codegen improvements"
  • Update permissions (#591)
  • Add codeql for GHA (#588)
  • Use actions/checkout@v5 (#565)

Performance

  • [sema] Skip unnecessary visitor walks (#772)
  • Use thin LTO for dist profile (#727)

Refactor

  • [codegen] Pre-phases lowering cleanups (#928)
  • Print stats with comfy-table (#897)
  • [codegen] Deduplicate MIR helpers (#864)
  • Add shared bitset data structures (#865)
  • [evm] Clean up assembler (#858)
  • [sema] Cache override checker (#856)
  • Add diagnostic span helper (#820)
  • [sema] Preintern error type (#811)
  • [sema] Store empty variable docs
  • [sema] Defer type flag checks (#770)
  • Replace index_vec with oxc_index (#742)
  • [sema] Split try_convert_explicit_to into two functions (#719)
  • [sema] Use one match in implicit conversion; use enum globs (#631)
  • [parser] Move mapping key type validation to semantic analysis (#574)
  • [interface] Update annotation_snippets emitter (#602)
  • [sema] Rename abi module to print (#556)

Styling

  • [lsp] Add shared test fixtures (#900)
  • Revert "fix: address clippy and fmt CI failures"

Testing

  • [foundry] Use tempdirs for artifacts (#902)
  • Add FileCheck support to UI runner (#890)
  • Update ui test harness (#845)
  • Split ported UI tests (#816)
  • Normalize solc port annotations (#779)
  • Add implicit array conversions (#714)
  • Add unimplemented constructor test (#692)
  • Add bytes and contract type to mapping key type check test (#636)

Install solar 0.2.0

Install prebuilt binaries via shell script

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

Install prebuilt binaries via powershell script

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

Download solar 0.2.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
solar-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum