All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.19.14 - 2026-01-22
- Use absolute path for exists() check in resolve_library_import (#355)
- Disable sparse output optimization when AST is requested (#352)
- Apply remappings to resolved relative import paths (#353)
- Match artifact by profile when writing extra output files (#350)
- Add snake_case aliases for ModelCheckerSettings fields (#348)
- Normalize Vyper EVM version during input creation (#345)
- Sort remapping candidates to avoid non deterministic output (#343)
- Bump version, prepare for release
- Bump 0.19.12 (#347)
- Update to tempoxyz (#344)
0.19.10 - 2025-11-19
- Handle solc versions with +commit (#341)
- Release 0.19.10
0.19.9 - 2025-11-19
- Preserve pre release version (#340)
- Release 0.19.9
0.19.7 - 2025-11-18
- Preserve version to install if prerelease (#339)
- Always mark mocks as dirty (#335)
- Expose VyperSourceLocation fields (#333)
- Finalize_imports node ordering (#329)
- Resolve imports at the end (#326)
- Make sources' paths absolute (#312)
- Sanitize
stopAfter(#309) - Remove superfluous assertion (#304)
- [flatten] Sort by loc path and loc start (#302)
- Bump 0.19.6 (#337)
- Bump version number in README (#336)
- [
ci] Pin deps in workflow and adddependabotto update them weekly (#321) - [deps] Bump solar (#315)
- [deps] Switch to solar meta crate (#307)
- [deps] Bump to 0.18.3 (#303)
- Update deps + fix clippy (#297)
- Add
SourceParser(#300)
- Release 0.19.7
- Release 0.19.6 (#338)
- Make clippy happy (#334)
- [
ci] Merge incodeql.ymland mark as requirement for ci-success (#331) - Release 0.19.5 (#330)
- Release 0.19.4 (#328)
- Remove feature(doc_auto_cfg) (#327)
- Release 0.19.3 (#325)
- [
ci] Rescope permissions according to principle of least privilege (#323) - [
ci] Harden workflow by setting default permission to read only (#320) - [
ci] Add CodeQL (#319) - Release 0.19.2 (#317)
- [
ci] Addci-successstep so we can make this a condition for merging (#316) - Release 0.19.1 (#313)
- Use FnMut instead of FnOnce + Copy (#310)
- Release 0.19.0 (#306)
- Release 0.18.4 (#305)
- Use svm instead of manual svm dir logic (#301)
- Add @0xrusowsky to
CODEOWNERS(#299) - Update
CODEOWNERSto improve visibility (#298)
- Cache/is_dirty impls (#311)
0.18.2 - 2025-08-01
- Allow single sol file remappings (#295)
- Release 0.18.2
0.18.1 - 2025-07-31
- Consistent handle of unresolved imports (#294)
- Release 0.18.1
- Add more instrumentation (#293)
- Remove duplicate assembly check in is_dirty (#292)
0.18.0 - 2025-07-14
- Release 0.18.0
- Release 0.18.0
0.17.4 - 2025-06-30
- Fix typos in comments and variable names across solc-related modules (#286)
- Bump vyper to 0.4.3 which adds support for
prague(#285)
- Release 0.17.4
- Upstreamed
strip_bytecode_placeholdersfrom foundry (#287)
0.17.3 - 2025-06-14
- Release 0.17.3
- Revert "fix: implement proper serde handling for unknown AST node typ… (#284)
0.17.2 - 2025-06-10
- Implement proper serde handling for unknown AST node types (#280)
- Release 0.17.2
0.17.1 - 2025-06-02
- Bump to latest version in README
- Update MSRV policy, bump to
1.87inclippy.tomlin line withCIandCargo.toml(#277)
- Release 0.17.1
- Release 0.17.1
- Add language matcher on
MultiCompilerLanguage(#276)
0.17.0 - 2025-05-29
- Release 0.17.0
- Release 0.17.0
- Release 0.17.0
0.16.4 - 2025-05-29
- Bump solar v0.1.4 (#275)
- Release 0.16.4
0.16.3 - 2025-05-28
- Update Tera documentation link in cliff.toml (#270)
- Some fields are optional during
"stopAfter":"parsing"(#271)
0.16.2 - 2025-05-21
- Release 0.16.2
- Support
transientinStorageLocation(#269)
0.16.1 - 2025-05-16
- Is_dirty to use additional_files (#268)
- Release 0.16.1
0.16.0 - 2025-05-12
- Bump solar version (#264)
- Release 0.16.0
0.15.0 - 2025-05-07
- [deps] Bump alloy 1.0 (#263)
- Update CHANGELOG.md
- Release 0.15.0
0.14.1 - 2025-04-19
- Fix Update CONTRIBUTING.md (#261)
- Release 0.14.1
- Switch md5 to xxhash (#262)
0.14.0 - 2025-04-07
- Add support for preprocessing sources (#252)
- Release 0.14.0
- Simplify pragma parsing (#260)
- Update file extension for compatibility (#258)
0.13.5 - 2025-03-14
- Missing check for normalization (#257)
- Release 0.13.5
0.13.4 - 2025-03-14
- Update normalization (#256)
- Add osaka evm version (#254)
- Release 0.13.4
- Allow unmaintained paste (#255)
0.13.3 - 2025-02-14
- Allow top level event declarations (#251)
- Impl
.path(&self)forContractInfo(#250)
- Release 0.13.3
0.13.2 - 2025-02-06
- Ordering for flattener (#247)
- Release 0.13.2
- Fix spelling issues (#248)
0.13.1 - 2025-02-02
- Handle displaying multiline errors correctly (#245)
- [deps] Bump dirs (#243)
0.13.0 - 2025-01-21
- Better artifact filenames for different profiles (#241)
- Add more features to reduce dependencies (#239)
- Release 0.13.0
- More lints (#238)
0.12.9 - 2025-01-05
- EvmVersion
from_str(#235)
- [deps] Bump solar 0.1.1 (#237)
- Release 0.12.9
- Clippy (#236)
0.12.8 - 2024-12-13
- Correctly merge restrictions (#234)
- Release 0.12.8
- Move deny to ci (#233)
0.12.7 - 2024-12-05
- Vyper version comparison typo (#232)
- Release 0.12.7
0.12.6 - 2024-12-04
- Release 0.12.6
- Don't request unnecessary output (#231)
0.12.5 - 2024-12-04
- Release 0.12.5
- Release 0.12.5
- Make Contract generic for Compiler and add metadata to CompilerOutput (#224)
0.12.4 - 2024-12-02
- Add fallback parser for contract names (#229)
- Fix minor grammatical issue in project documentation (#226)
- Bump MSRV to 1.83 (#230)
- Release 0.12.4
- Add note about grammar,spelling prs (#228)
0.12.3 - 2024-11-20
- Imports regex fallback (#225)
- Release 0.12.3
0.12.2 - 2024-11-20
- Re-add version regex parsing (#223)
- Release 0.12.2
- Don't color punctuation in output diagnostics (#222)
0.12.1 - 2024-11-18
collect_contract_names(#221)
- Release 0.12.1
0.12.0 - 2024-11-18
- Sanitize
settings.optimizer.details.inliner(#216) - [tests] Always try installing pinned solc (#217)
- Outdated merge build error
- Correctly handle b as pre-release in Vyper version (#213)
- Release 0.12.0
- Remove outdated
refpatterns (#218) - Inline constants in Settings::sanitize (#219)
- Use Version::new over .parse (#220)
- Release 0.11.6
0.11.5 - 2024-10-14
- Accept partial first sourcemap element (#209)
- Release 0.11.5
- Allow adding vyper sources with
add_raw_sourcew/.vy/.vyiextension (#211) - [
ci] Fix deny (addZLibexception) (#212)
0.11.4 - 2024-10-02
- Better extra_args handling (#208)
- Release 0.11.4
0.11.3 - 2024-09-30
- Release 0.11.3
- Proper generate legacy asm extra output file (#207)
0.11.2 - 2024-09-30
- Include
evm.legacyAssemblyoutput (#206)
- Fix typos (#202)
0.11.1 - 2024-09-17
- Better error messages for incompatible versions (#200)
- Release 0.11.1
- Improve error handling in source map parsing (#201)
- Clippy happy (#195)
- Fix up the README example (#194)
0.11.0 - 2024-09-02
- [deps] Bump alloy (#193)
- Release 0.11.0
0.10.3 - 2024-08-26
- [flatten] Update license handling logic (#184)
- Docs fix spelling issues (#190)
- Always provide
DefaultforMultiCompiler(#188) - [vyper] Add experimental codegen to settings (#186)
- More user-friendly error when no compiler is available (#185)
- Release 0.10.3
- Incorrect Default EVM Version for Solidity Compiler 0.4.21-0.5.4 (#189)
0.10.2 - 2024-08-01
- Unify logic for ignored warnings (#179)
- Remove outdated build infos (#177)
- Make remappings resolution more deterministic (#176)
- Sanitize EVM version for vyper (#181)
- Release 0.10.2
- Update README to link docs and update install instructions (#180)
0.10.1 - 2024-07-26
- Better compatibility with older AST (#175)
- Add Prague evm version (#166)
- Release 0.10.1
0.10.0 - 2024-07-18
- Allow empty modifier body in AST (#169)
- Avoid errors when parsing empty sourcemap (#165)
- Fix inconsistent trailing slash in remappings (#49)
- Release 0.10.0
0.9.0 - 2024-06-29
- Cleanup workspace deps (#158)
- Respect
paths.librariesfor Vyper (#159)
- Release 0.9.0
- Improve stripping file prefixes (#164)
- Improve some trace-level logs (#163)
- Remove most impl AsRef<str,Path> (#157)
- Clarify version cache lock (#160)
- Sort derives, derive Eq more (#161)
- [meta] Update CODEOWNERS
- Release 0.8.0
- Rename foundry-compilers-project into foundry-compilers (#152)
- Clippy
- Move lints to workspace (#149)
- Remove unused files and workflow (#148)
- Symlink readme
- Sync workflows
- Cache --version output (#144)
- Unify sources and filtered sources (#162)
- [flatten] Move compilation logic into
Flattener(#143) - Extract artifacts to a separate crate (#142)
- Use similar-asserts (#145)
0.7.0 - 2024-06-11
- Always fix windows line endings (#139)
- Track and cache context of each compiler invocation (#140)
- Release 0.7.0
0.6.2 - 2024-06-06
- Better tracking of cache entries (#138)
- Release 0.6.2
0.6.1 - 2024-06-05
- Release 0.6.1
- Sync cliff.toml
- Sparse output (#135)
0.6.0 - 2024-06-03
- [deps] Bump itertools (#133)
- Allow multiple languages for compilers (#128)
- Release 0.6.0
0.5.2 - 2024-06-01
- Make CompactContractBytecodeCow implement Artifact (#130)
- Release 0.5.2
- Clippy (#132)
- Reduce size of source map (#131)
0.5.1 - 2024-05-23
- Release 0.5.1
0.5.0 - 2024-05-21
- Vyper imports parser (#125)
- Release 0.5.0
- Swap generics on
Project(#124)
0.4.3 - 2024-05-13
- Re-enable yul settings sanitization (#122)
- Release 0.4.3
0.4.2 - 2024-05-13
- Do not remove dirty artifacts from disk (#123)
- Release 0.4.2
0.4.1 - 2024-05-07
- Absolute paths in build info (#121)
- Add a few Solc install helpers back (#120)
- Release 0.4.1
0.4.0 - 2024-05-03
- Compiler abstraction (#115)
- Release 0.4.0
0.3.20 - 2024-04-30
- Release 0.3.20
0.3.19 - 2024-04-22
- Remove
simpleCounterForLoopUncheckedIncrementfrom--ir-minimum(#114) - Add YulCase and YulTypedName to NodeType (#111)
- Use serde default for optimizer (#109)
- Replace line endings on Windows to enforce deterministic metadata (#108)
- Release 0.3.19
0.3.18 - 2024-04-19
- Release 0.3.18
- Warn unused (#106)
- Update yansi to 1.0 (#107)
0.3.17 - 2024-04-17
- Dirty files detection (#105)
- Additional helpers for contract name -> path lookup (#103)
- Release 0.3.17
0.3.16 - 2024-04-17
- Invalidate cache for out-of-scope entries (#104)
- Optimization field (simpleCounterForLoopUncheckedIncrement) (#100)
- Release 0.3.16
- Remove main fn (#101)
0.3.15 - 2024-04-12
- [deps] Bump svm to 0.5 (#97)
- Release 0.3.15
- Derive
CloneforProject(#98)
0.3.14 - 2024-04-03
- Set evmversion::cancun as default (#94)
- Bump alloy-core (#96)
- Release 0.3.14
0.3.13 - 2024-03-18
- Release 0.3.13
- Svm04 (#93)
0.3.12 - 2024-03-18
- Release 0.3.12
- Update svm (#92)
0.3.11 - 2024-03-13
- Release 0.3.11
- Caching logic (#90)
0.3.10 - 2024-03-11
- Use cached artifacts if solc config is almost the same (#87)
- Release 0.3.10
- Extra files logic (#88)
0.3.9 - 2024-02-22
- Account for Solc inexplicably not formatting the message (#85)
- Release 0.3.9
0.3.8 - 2024-02-22
- Release 0.3.8
- Use Path::new instead of PathBuf::from (#83)
0.3.7 - 2024-02-20
- Release 0.3.7
- Print compiler input as JSON in traces (#79)
- Remove unused imports (#80)
- Reduce trace output (#78)
0.3.6 - 2024-02-13
- Release 0.3.6
- Small flattener features (#75)
0.3.5 - 2024-02-10
- Fix
DoWhileStatementAST (#74)
- Release 0.3.5
0.3.4 - 2024-02-09
- Option to ignore warnings from dependencies in foundry.toml (#69)
- Release 0.3.4
0.3.3 - 2024-02-08
- Release 0.3.3
- Helper method for
Libraries(#72)
0.3.2 - 2024-02-07
- Also cleanup build info dir (#71)
- Release 0.3.2
0.3.1 - 2024-02-02
- Release 0.3.1
- Flatten fix (#68)
0.3.0 - 2024-01-31
- Release 0.3.0
- Enable some lints (#64)
- Remove wasm cfgs (#61)
- Add more tracing around spawning Solc (#57)
- Rename output to into_output (#56)
- Add some tracing (#55)
- Flatten fixes (#63)
- Update actions@checkout (#66)
- Add concurrency to ci.yml (#62)
- Fix tests name (#60)
- Rewrite examples without wrapper functions and with no_run (#58)
- Ignore old solc version test (#67)
0.2.5 - 2024-01-29
- Release 0.2.5
- [clippy] Make clippy happy (#54)
- New flattening impl (#52)
0.2.4 - 2024-01-27
- Bump svm builds (#53)
- Release 0.2.4
0.2.3 - 2024-01-26
- Add EVM version Cancun (#51)
- Release 0.2.3
- Add unreleased section to cliff.toml
- Add error severity fn helpers (#48)
- Small fixes to typed AST (#50)
0.2.2 - 2024-01-19
- Release 0.2.2
- Rewrite dirty files discovery (#45)
0.2.1 - 2024-01-10
- Release 0.2.1
- Exclude useless directories
- Exclude useless directories
0.2.0 - 2024-01-10
- [deps] Bump alloy (#42)
- Release 0.2.0
0.1.4 - 2024-01-06
- Account for unicode width in error syntax highlighting (#40)
- Release 0.1.4
0.1.3 - 2024-01-05
0.1.2 - 2023-12-29
- Create valid Standard JSON to verify for projects with symlinks (#35)
- Create verifiable Standard JSON for projects with external files (#36)
- Add more getter methods to bytecode structs (#30)
- Release 0.1.2
- Add
set_compiled_artifactsto ProjectCompileOutput impl (#33)
- Trim test matrix (#32)
- Update rustfmt config (#31)
0.1.1 - 2023-11-23
- Bump Alloy
- Bump solc (#21)
- Release 0.1.1
- [meta] Update CODEOWNERS
- Remove LosslessAbi (#27)
- Don't prettify json when not necessary (#24)
- Toml
- More test in report/compiler.rs and Default trait for CompilerInput (#19)
0.1.0 - 2023-11-07
- Add changelog.sh (#18)
- [
ci] Add unused deps workflow (#15) - Migration to Alloy (#3)
- [
ci] Add deny deps CI (#6) - [
ci] Add & enable ci/cd (#1) - Move ethers-solc into foundry-compilers
- Release 0.1.0
- Add missing cargo.toml fields + changelog tag (#17)
- Add missing telegram url (#14)
- Remove alloy-dyn-abi as its an unused dep (#12)
- Make clippy happy (#10)
- Run ci on main (#5)
- Add more files to gitignore (#2)
- Correct readme
- Repo improvements (#13)