Echidna 2.2.4
Echidna 2.2.4 is an exciting release that brings a host of improvements in fuzzing speed and user experience. This update:
-
Boosts performance through optimized shrinking and multicore fuzzing. Adjustments made to our multi-worker implementation will provide increased performance when multiple workers are in use, meaning you can now have a faster and more scalable fuzzing experience. Echidna will now by default run between one to four workers, based on the available CPU cores. While we have set an intelligent default logic, you can continue to manually control the number of workers with the
workers
config option or--workers
CLI switch. Another welcome tweak is in the shrinking process where a single worker now handles a shrinking task to minimize contention. -
Enhances user interface with handy shortcuts, added metrics, more informative messages, and clearer error responses. The new shortcuts allow for swiftly toggling the visibility of the tests and log panels (
t
andl
). The newly introduced performance metricgas/s
should be a more user-friendly indicator of execution performance than its predecessorcalls/s
. Expect insightful time measurements when saving coverage and an added message upon saving reproducers. Last but not least, we improved the error messages in various conditions, for better clarity and ease of understanding. -
Adds initial support to TLOAD/TSTORE opcodes as we continue our work towards achieving full compatibility with Cancun. Note that other new opcodes from Cancun are still not supported, so we recommend working with solc 0.8.24 or older for the time being.
-
Introduces more configuration options including the ability to specify the Etherscan API key via the config file.
Take a peek at Echidna v2.2.4 in action fuzzing assert.sol
:
The full changelog is provided below:
Added
- Toggle tests and log panes on t and l by @arcz in #1197
- Use measureIO when saving coverage by @samalws-tob in #1202
- Adjust default GC allocation area by @elopez in #1228
- Update filterFallbacks to be selective rather than all-or-nothing by @samalws-tob in #1200
- Add symbolic execution by @samalws-tob in #1216
- Support configuring Etherscan API key via config file by @elopez in #1227
- Allow to use specific filter for direct symexec by @ggrieco-tob in #1251
- Display assertion failure immediately once falsified in text mode by @samalws-tob in #1271
- Emit log message when saving reproducers by @samalws-tob in #1273
- Emit "saved reproducer" log message as event rather than putStrLn by @samalws-tob in #1274
- Show gas per second in the UI by @samalws-tob in #1279
- Show trace on UnknownFailure by @samalws-tob in #1283
- Initial support for tstore/tload by @ggrieco-tob in #1286
- Raise default number of workers by @elopez on #1288 [BREAKING CHANGE]
Fixed
- Improve delay shrinking by @arcz in #1196
- Improved shrinking removing reverts from reproducers by @ggrieco-tob in #1250
- Shrink on one worker by @arcz in #1280
- Fix Windows support after crytic-compile changes by @elopez in #1235
- ci, release: pin macOS runners to the correct architectures by @elopez in #1244
- Avoid a crash when invalid filtering is used and provide a better error message by @ggrieco-tob in #1258
- Improve max code size error message by @arcz in #1269
- Fix MVar issue by @samalws-tob in #1281
- Minor change for symExecTimeout comments by @samalws-tob in #1285
- chore: fix some typos by @yetyear in #1215
- Fix typos by @xiaoxianBoy in #1217
- chore: remove repetitive word by @findseat in #1232
- Fix some typos in comments by @momantech in #1238
- chore: fix some comments by @cangqiaoyuzhuo in #1272
- Fix typos by @omahs in #1287
- Docs improvement by @nnsW3 in #1278
Updated
- Bump softprops/action-gh-release from 0.1.15 to 2.0.3 by @dependabot in #1203
- Bump softprops/action-gh-release from 2.0.3 to 2.0.4 by @dependabot in #1220
- Bump softprops/action-gh-release from 2.0.4 to 2.0.5 by @dependabot in #1255
- Bump softprops/action-gh-release from 2.0.5 to 2.0.6 by @dependabot in #1277
- Bump cachix/install-nix-action from 25 to 26 by @dependabot in #1204
- Bump cachix/install-nix-action from 26 to 27 by @dependabot in #1263
- Bump DeterminateSystems/magic-nix-cache-action from 3 to 4 by @dependabot in #1222
- Bump DeterminateSystems/magic-nix-cache-action from 4 to 6 by @dependabot in #1257
- Bump DeterminateSystems/magic-nix-cache-action from 6 to 7 by @dependabot in #1267
- Bump DeterminateSystems/nix-installer-action from 9 to 10 by @dependabot in #122
- Bump DeterminateSystems/nix-installer-action from 10 to 11 by @dependabot in #1256
- Bump DeterminateSystems/nix-installer-action from 11 to 12 by @dependabot in #1268
- Bump cachix/cachix-action from 14 to 15 by @dependabot in #1262
- Bump docker/build-push-action from 5 to 6 by @dependabot in #1275
- Bump sigstore/gh-action-sigstore-python from 2.1.1 to 3.0.0 by @dependabot in #1289
- Upgrade hevm to latest
echidna-patches
commit by @elopez in #1243
New Contributors
- @yetyear made their first contribution in #1215
- @xiaoxianBoy made their first contribution in #1217
- @findseat made their first contribution in #1232
- @momantech made their first contribution in #1238
- @cangqiaoyuzhuo made their first contribution in #1272
- @nnsW3 made their first contribution in #1278
Full Changelog: v2.2.3...v2.2.4