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 asforge lsponce 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
thisandsuperinto 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
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 | shInstall 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 |