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
ShrinkLimitconfiguration 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
medusaexit codes.0means the fuzzer exited successfully.1meansmedusaencountered an unexpected error.7means thatmedusaencountered a failing test case. - Renamed
DeploymentOrdertoTargetContractsand renamedAssertionModesConfigtoPanicCodeConfig. - Added a
TargetContractBalancesconfiguration parameter to allow target contracts to have starting ETH balances. - Enabled all testing modes (assertion, property, and optimization) by default. The
--assertion-modeand--optimization-modeflags were removed from the CLI. Testing modes can now be disabled only through the configuration file. - Renamed the
--targetCLI flag to--compilation-target. - Improved logging during fuzzer startup.
- Updated the behavior of
TestAllContractsto 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
NoColorconfiguration parameter to disable colored CLI output.
Bug Fixes
- Fixed a memory leak in the test chain object that caused
medusato 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
parseBytes32cheatcode. - Fixed the
warpcheatcode to acceptuint256arguments. - 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