This release supports Hardhat v3 and Sourcify, it contains performance improvements and a reduction of false positives for some detectors.
What's Changed
- feat: add performance benchmark script by @dguido in #2933
- perf: optimize transitive closure with worklist algorithm (17-27% faster) by @dguido in #2932
- perf: use set for O(1) membership in _explore_functions by @dguido in #2924
- perf: cache derived_contracts lookup in compilation unit by @dguido in #2925
- feat: add --timing flag for phase-level performance breakdown by @dguido in #2928
- perf: cache Literal.str conversion for numeric types by @dguido in #2934
- perf: optimize Type.eq methods with direct attribute access by @dguido in #2935
- perf: cache filename lookups in _convert_source_mapping by @dguido in #2936
- Add --exclude-location flag to hide file locations in detector messages by @ep0chzer0 in #2872
- Fix external call classification for Yul/Vyper by @edlsh in #2938
- feat: add msg-value-in-nonpayable detector by @ep0chzer0 in #2923
- fix: add ArrayType and complex type support in _find_struct_var_slot by @ep0chzer0 in #2922
- feat: add --warn-unused-ignores flag for detecting unnecessary slither-disable comments by @ep0chzer0 in #2921
- feat: add C3 linearization printer for inheritance analysis by @ep0chzer0 in #2917
- fix: handle unhashable types in using_for lookup by @ep0chzer0 in #2916
- feat: add support for constant and immutable variables in slither-read-storage by @ep0chzer0 in #2920
- fix: output to stdout instead of stderr by @ep0chzer0 in #2912
- fix: only exclude unoverridden virtual functions in inheritance-graph by @ep0chzer0 in #2915
- fix: correct NewContract expression type annotation by @ep0chzer0 in #2914
- Add enum ranges to echidna printer output by @ep0chzer0 in #2908
- Add detector's name for the upgradeability tool by @smonicas in #2942
- Fix dead-code detector incorrectly flagging library functions by @ep0chzer0 in #2905
- chore: add Serena MCP server configuration by @dguido in #2948
- chore: optimize Serena MCP configuration by @dguido in #2949
- Fix dead-code detector false positive for virtual functions by @ep0chzer0 in #2951
- Fix unused-return false positive when return values used in return statement by @ep0chzer0 in #2950
- fix: handle TypeAlias in read_storage for custom value types by @ep0chzer0 in #2911
- feat: add reference URL to JSON output by @ep0chzer0 in #2910
- Fix call-graph printer to distinguish overloaded functions by @ep0chzer0 in #2909
- fix: raise exception for malformed disable comments by @dguido in #2897
- Fix call-graph printer to support top-level functions by @ep0chzer0 in #2904
- Fix super call resolution by @smonicas in #2958
- fix: len should gte 2 by @cuiweixie in #2969
- fix: uvx use docs by @PatrickAlphaC in #2981
- Update crytic-compile version by @smonicas in #3043
- Dockerfile: always use uv, do cleaner layers, upgrade to noble by @elopez in #2966
- feat(parsing): support 0.8.35 erc7201 comptime builtin by @smonicas in #3015
- Fix divide-before-multiply false positive when the divided variable is reassigned by @MarkLee131 in #3040
- Fix naming-convention false positive on Yul-local function parameters by @MarkLee131 in #3038
- Fix incorrect-modifier false positive on revert("msg") and custom-error reverts by @MarkLee131 in #3035
- Fix release workflow for immutable releases by @elopez in #3058
- chore: fix some minor issues in comments by @cuoguojida in #3026
- fix: update register_printer to handle multiple compilation units by @sulphur-swarm in #3025
- Fix typos in detector documentation by @cats2101 in #3017
- fix: accept onlyDelegateCall as protected modifier in unprotected-upgrade by @cats2101 in #3014
- feat: accept slither.conf.json as alternative default config by @cats2101 in #3011
- docs: fix typo in detector documentation by @rajatbeladiya in #2978
- Update crytic-compile by @smonicas in #3060
- Update version by @smonicas in #3062
New Contributors
- @ep0chzer0 made their first contribution in #2872
- @edlsh made their first contribution in #2938
- @cuiweixie made their first contribution in #2969
- @MarkLee131 made their first contribution in #3040
- @cuoguojida made their first contribution in #3026
- @sulphur-swarm made their first contribution in #3025
- @cats2101 made their first contribution in #3017
- @rajatbeladiya made their first contribution in #2978
Full Changelog: 0.11.5...0.11.6
What's Changed
- feat: add performance benchmark script by @dguido in #2933
- perf: optimize transitive closure with worklist algorithm (17-27% faster) by @dguido in #2932
- perf: use set for O(1) membership in _explore_functions by @dguido in #2924
- perf: cache derived_contracts lookup in compilation unit by @dguido in #2925
- feat: add --timing flag for phase-level performance breakdown by @dguido in #2928
- perf: cache Literal.str conversion for numeric types by @dguido in #2934
- perf: optimize Type.eq methods with direct attribute access by @dguido in #2935
- perf: cache filename lookups in _convert_source_mapping by @dguido in #2936
- test: add comprehensive copy_ir and SSA snapshot tests by @dguido in #2937
- Add --exclude-location flag to hide file locations in detector messages by @ep0chzer0 in #2872
- Fix external call classification for Yul/Vyper by @edlsh in #2938
- feat: add msg-value-in-nonpayable detector by @ep0chzer0 in #2923
- docs: clarify traversal pattern guidance in CLAUDE.md by @dguido in #2940
- fix: add ArrayType and complex type support in _find_struct_var_slot by @ep0chzer0 in #2922
- feat: add --warn-unused-ignores flag for detecting unnecessary slither-disable comments by @ep0chzer0 in #2921
- feat: add C3 linearization printer for inheritance analysis by @ep0chzer0 in #2917
- fix: handle unhashable types in using_for lookup by @ep0chzer0 in #2916
- feat: add support for constant and immutable variables in slither-read-storage by @ep0chzer0 in #2920
- fix: output to stdout instead of stderr by @ep0chzer0 in #2912
- fix: only exclude unoverridden virtual functions in inheritance-graph by @ep0chzer0 in #2915
- fix: correct NewContract expression type annotation by @ep0chzer0 in #2914
- Add enum ranges to echidna printer output by @ep0chzer0 in #2908
- Add detector's name for the upgradeability tool by @smonicas in #2942
- chore(deps-dev): bump yamllint from 1.37.1 to 1.38.0 in the all group by @dependabot[bot] in #2945
- Fix dead-code detector incorrectly flagging library functions by @ep0chzer0 in #2905
- chore: add Serena MCP server configuration by @dguido in #2948
- chore: optimize Serena MCP configuration by @dguido in #2949
- Fix dead-code detector false positive for virtual functions by @ep0chzer0 in #2951
- Fix unused-return false positive when return values used in return statement by @ep0chzer0 in #2950
- fix: handle TypeAlias in read_storage for custom value types by @ep0chzer0 in #2911
- feat: add reference URL to JSON output by @ep0chzer0 in #2910
- Fix call-graph printer to distinguish overloaded functions by @ep0chzer0 in #2909
- fix: raise exception for malformed disable comments by @dguido in #2897
- Fix call-graph printer to support top-level functions by @ep0chzer0 in #2904
- Fix super call resolution by @smonicas in #2958
- chore(deps): bump the all group across 1 directory with 5 updates by @dependabot[bot] in #2963
- fix: len should gte 2 by @cuiweixie in #2969
- fix: uvx use docs by @PatrickAlphaC in #2981
- Update crytic-compile version by @smonicas in #3043
- Dockerfile: always use uv, do cleaner layers, upgrade to noble by @elopez in #2966
- chore(deps): bump web3 from 7.14.0 to 7.15.0 by @dependabot[bot] in #3001
- feat(parsing): support 0.8.35 erc7201 comptime builtin by @smonicas in #3015
- Update lockfile by @smonicas in #3051
- chore(deps): bump the all group across 1 directory with 20 updates by @dependabot[bot] in #3053
- Fix divide-before-multiply false positive when the divided variable is reassigned by @MarkLee131 in #3040
- Fix naming-convention false positive on Yul-local function parameters by @MarkLee131 in #3038
- Fix incorrect-modifier false positive on revert("msg") and custom-error reverts by @MarkLee131 in #3035
- Fix release workflow for immutable releases by @elopez in #3058
- chore: fix some minor issues in comments by @cuoguojida in #3026
- fix: update register_printer to handle multiple compilation units by @sulphur-swarm in #3025
- Fix typos in detector documentation by @cats2101 in #3017
- chore(deps): bump the all group across 1 directory with 6 updates by @dependabot[bot] in #3059
- fix: accept onlyDelegateCall as protected modifier in unprotected-upgrade by @cats2101 in #3014
- feat: accept slither.conf.json as alternative default config by @cats2101 in #3011
- docs: fix typo in detector documentation by @rajatbeladiya in #2978
- Update crytic-compile by @smonicas in #3060
- Update version by @smonicas in #3062
New Contributors
- @ep0chzer0 made their first contribution in #2872
- @edlsh made their first contribution in #2938
- @cuiweixie made their first contribution in #2969
- @MarkLee131 made their first contribution in #3040
- @cuoguojida made their first contribution in #3026
- @sulphur-swarm made their first contribution in #3025
- @cats2101 made their first contribution in #3017
- @rajatbeladiya made their first contribution in #2978
Full Changelog: 0.11.5...0.11.6