v0.1.3
This marks a minor release of medusa
. Version 0.1.3 brings fixes to a variety of critical and minor bugs, improvements in shrinking performance, improved logging, exit code standardization, and other quality-of-life improvements.
What's Changed
- Added a
ShrinkLimit
configuration parameter that bounds the number of iterations that the call sequence and value shrinking process executes for. This limits worker exhaustion on heavy-processing call sequences. - Standardized
medusa
exit codes.0
means the fuzzer exited successfully.1
meansmedusa
encountered an unexpected error.7
means thatmedusa
encountered a failing test case. - Renamed
DeploymentOrder
toTargetContracts
and renamedAssertionModesConfig
toPanicCodeConfig
. - Added a
TargetContractBalances
configuration parameter to allow target contracts to have starting ETH balances. - Enabled all testing modes (assertion, property, and optimization) by default. The
--assertion-mode
and--optimization-mode
flags were removed from the CLI. Testing modes can now be disabled only through the configuration file. - Renamed the
--target
CLI flag to--compilation-target
. - Improved logging during fuzzer startup.
- Updated the behavior of
TestAllContracts
to only invoke functions within contracts specified inTargetContracts
. - Updated coverage reports to have any files that have non-zero coverage to be opened by default.
- Added a
NoColor
configuration parameter to disable colored CLI output.
Bug Fixes
- Fixed a memory leak in the test chain object that caused
medusa
to crash after a given period of time. - Fixed a panic in the coverage tracer.
- Fixed an array out-of-bounds panic in coverage maps.
- Fixed a non-deterministic copy-length-based panic in the
parseBytes32
cheatcode. - Fixed the
warp
cheatcode to acceptuint256
arguments. - Fixed the CI to support Python 3.12.
- Fixed a bug within corpus call method resolution.
New Contributors
Full Changelog: v0.1.2...v0.1.3