v0.9.3
0.9.3 - 2023-03-20
This release adds a new detector for high complexity functions, improves Echidna's performance (on enums), adds support for less common and new Solidity features (ternary operations, using for
, and yul support), and improves slither-read-storage
and existing detectors.
Additionally, we're so excited that Slither has been nominated in the latest round of @optimismFND 's RetroPGF's program! If you vote for these projects, please select Slither as one of your favorite tools from now until March 23!
We have also opened a GitHub discussion page for Slither to more easily communicate with our community of users and developers.
Finally, we would like to thank all of our external contributors:
Added
- Detector: High cyclomatic complexity @bart1e in #1618
- Clarify requirement of installing solc by @CodeSandwich in #1599
- Slither-check-upgradeability: support complex datatypes by @webthethird in #1535
- Add enums to echidna printer's list of constants by @samalws in #1665
- Add cyclomatic complexity to function-summary by @smonicas in #1685
- Add github pages docs by @0xalpharush in #1656
- Add issue template for trouble with installation by @0xalpharush in #1623
- APIs
- Add unregister_detector by @sidarth16 in #1722
- Add unregister_printer by @sidarth16 in #1724
Changed
- Detectors improvements
- Detect local shadowing of return vars by @0xalpharush in #1510
- Consider constants in divide-before-multiply by @0xalpharush in #1641
- Do not recommend to making strings immutable by @0xalpharush in #1639
- Restrict variable-scope detector to only solc 0.4.x by @0xalpharush in #1731
- Minor codex improvements by @montyly in #1600
- Minor API improvements by @montyly in #1601
- Use enum string formatting by @0xalpharush in #1636
- Add more types by @montyly in #1624
- Update list of external publications by @montyly in #1738
- Abstract contract property by @bsamuels453 in #1679
- Improve echidna printer for user defined types by @montyly in #1690
- Revert "show ignored findings by default for checklist" by @0xalpharush in #1643
- Improve tests from 1625 by @montyly in #1741
- Improve parsing of contract's comment by @montyly in #1734
- Update filter-paths help by @0xalpharush in #1749
- Slithir printer improve top level functions format by @smonicas in #1744
- Add issue template for false neg. and positive by @0xalpharush in #1753
- Make web3 required dependency by @0xalpharush in #1743
- Update reentrancy_eth.py by @sidarth16 in #1706
- CI
- Run tests in parallel by @0xalpharush in #1637
- Only run python linters when .py changed by @0xalpharush in #1638
- Cancel action on new commits by @montyly in #1661
- Improvements to GH actions by @montyly in #1662
- Further CI improvements by @montyly in #1663
- Update linter.yml name by @0xalpharush in #1770
- Upgrade nix installation to fix CI installation by @0xalpharush in #1711
Fixed
- Fix ternary in nested expressions @0xalpharush in #1650
- Fix CI badge in README by @elopez in #1603
- Bugs fixed in strongly connected components and cyclomatic complexity algorithms by @bart1e in #1617
- 'Not in UPPER_CASE_WITH_UNDERSCORES' warning for public constant vars removed by @bart1e in #1530
- Missing references fix by @bart1e in #1604
- Fix support for constant variable lookup in yul by @montyly in #1611
- Uninitialized storage fix by @0xalpharush in #1725
- Fix stdout capture by @0xalpharush in #1740
- Move assertion to proper branch by @montyly in #1691
- Include salt in operation,
NewContract
, reads by @0xalpharush in #1762 - Fix declaration and evm printer by @0xalpharush in #1765
- Fix IR operation when initializing array with one-element array literal by @Troublor in #1761
- WIKI URL fixed by @bart1e in #1695
- Fix using for global function name collision by @0xalpharush in #1625
New Contributors
- @CodeSandwich made their first contribution in #1599
- @samalws made their first contribution in #1665
- @sidarth16 made their first contribution in #1722
- @bsamuels453 made their first contribution in #1679
- @Troublor made their first contribution in #1761
Full Changelog: 0.9.2...0.9.3