* improved support for foundry tests
* Extend Foundry support testing (#1512)
* Fix lint failures
* ci: bump python version to 3.10, clone submodules
* some fixes when using foundry mode
* Update hevm to `542986dea3bec4f5898731ff48877a7a21811bf4`
* Fix bugs in Foundry test generation (#1516)
* Fix fallback function bug in Foundry test generation
* Fix null byte in argument bug in Foundry test generation
* Remove unnecessary config file
* Remove unused/redundant imports
* Disable Slither in Foundry test gen tests
* Conditionally run forge-std tests based on the solc version
* Reduce unnecessary test grouping and improve failed assertion messages
---------
Co-authored-by: Emilio López <[email protected]>
* Update hevm to `41e6d1304411749ea8c816d131991663b5dca67a`
* Fix linter and build errors (#1521)
* improve foundry stateful invariant testing
* fix
* Fix foundry test generation linter hints and tests (#1522)
* Foundry updates (#1525)
* Rename dapptest to foundry and support foundry assertX in assertion mode
* Rename basic foundry test contracts dir to `foundry-basic`
* Add testing modes to `README`
* fixes
* fixes
* Add support for Foundry assume (#1528)
* flake: sync hevm version with stack.yaml
* Clarify `optimization` test mode in `README` (#1529)
* IS_TEST fix
---------
Co-authored-by: Radu Bahmata <[email protected]>
Co-authored-by: Emilio López <[email protected]>
Co-authored-by: Emilio López <[email protected]>
* Upgrade `hevm` to `95b5e074c9f27f970011ed53f38f1643d70c3c8a`
* Refactor cache use after hevm upgrade
* fixes
* Added rpc cache serialization code and fixes
* fixes
* fixes
* fixes
* refactor verification code to make sure tests are correctly labeled when the verifiction finishes
* revert b899481b65
* disable RPC logs
* update to the latest hevm
* updated flake
* updated flake
* avoid crashing when trying to do symbolic execution in fallback
* silence RPC warning when there is no RPC configured
* hlint fixes
* switch to stack based loop detection
* Clean up comment, whitespace
---------
Co-authored-by: Emilio López <[email protected]>
* removed old solc versions, use 0.8.x only instead
* fixed harvey test
* started to fix symexec using latest hevm
* added RPC support for symbolic execution + some clean up
* better constraints for block timestamp and number
* improved and simplified symexec code
* removed useless code
* some test fixes
* increase the number of random symbolic transaction if the corpus is empty
* added comments on why we only take one method from the shuffle list when doing symbolic exploration
* allow user to select smt solver
* use slither to filter functions with assert, if any
* started adding full verification mode for stateless campaigns
* refactored tons of code
* improved code for exploration/verification
* finished implementation and get back to hevm master
* fixed issue in addBlockConstraints and upgraded hevm
* disable debug mode when using interactive mode
* corrected array size in symbolic output
* fix decoding of negative numbers
* simplified code for decoding of negative numbers
* removed initialize field from default
* use verification mode for sym-assert test
* added some basic verification tests
* make the harvey test more reliable
* simplified exploration code and added shrinking
* added new test for exploration mode (but disabled so far)
* worker related refactoring code to allow other parts of the codebase to send events
* make sure symExecTarget is used to select methods
* keccak preimage support enabled
* reduced code duplication
* added documentation
* use new types in Types/Config.hs
* removed killed-related files
* Upgrade hevm to latest `echidna-patches` commit
* Upgrade build to GHC 9.6
* Refactor terminal and signal support in preparation for Windows UI
* Enable UI on all platforms
* Use pkgsStatic for Linux
pkgsMusl fails to build for some reason.
* Remove conditional UI compilation
All platforms now support the Echidna UI
* Enable UI on ConHost as well
See the introduction on https://hackage.haskell.org/package/ansi-terminal-1.1.1/docs/System-Console-ANSI.html
* Enable `eager-blackholing`
Observed a ~2% speedup on longer runs when compiling both hevm and
echidna with this flag. Besides, the Haskell documentation encourages
enabling it for parallel code:
https://downloads.haskell.org/~ghc/9.6.5/docs/users_guide/using-concurrent.html#compile-time-options-for-smp-parallelism
* Resolve hlint warnings
* Update Linux Stack CI to 9.6
* Fix compilation failure after merge
* Upgrade hevm to `echidna-patches-20240725`
* Fix lint warnings, unused imports
* flake: align nixpkgs with hevm
* flake: fix libiconv for x86_64 darwin
> app/utf8-troubleshoot/cbits/locale.c:10:10: error:
> fatal error: 'libcharset.h' file not found
> |
> 10 | #include <libcharset.h>
> | ^
> #include <libcharset.h>
> ^~~~~~~~~~~~~~
Also link iconv dynamically on Darwin as well
* switch to tstore branch on hevm fork. all we should need now is a call to clearTStorages
* call clearTStorages after each transaction
* test case
* bump hevm
* bump hevm again
---------
Co-authored-by: Sam Alws <[email protected]>
* Update to GHC 9.4
* ci: Update to GHC 9.4
* ci: fix GHC 9.4 support on Windows
GHC 9.4 has changed toolchains to Clang, which causes issues when building
with our current setup. We perform the following changes to support
GHC 9.4 and later:
* Use MSYS2 CLANG64 MSYS. See https://gitlab.haskell.org/ghc/ghc/-/issues/22561
* Use MSYS2 minimal $PATH. There's many things in the default GitHub
environment that cause conflicts. To achieve this, we have to also
manually re-add the Stack, Cabal and GHC paths.
* Bump the Stack resolver. GHC 9.4.7 has some compilation fixes that
are good to have around.
* Replace the GHC linker with our MSYS2 linker. The GHC linker is old
(~LLVM 14?) and does not fully understand the static libraries
produced by the newer Clang 17 in MSYS2.
* Refactor the way we invoke Stack and take advantage of the Stack
config to indicate extra library and include paths.
* Drop the 'strip' workaround for the test suite, as it is not needed
any longer.
* Fix the linking of the standard C++ library. GHC 9.4 introduces a
nice way to do it in a platform-independent way, but unfortunately
it does not work properly in Nix and it attempts to link clang++
instead of libc++.so, so we have to use some trickery.
addDLL: stdc++ or dependencies not loaded. (Win32 error 126)
See also:
* https://gitlab.haskell.org/ghc/ghc/-/issues/22738
* https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.4?version_id=b60e52482a666d25638d59cd7e86851ddf971dc1#link-against-system-cxx-std-lib-instead-of-stdc
* hevm: pin to newer version supporting GHC 9.4
* ci: linux: update to GHC 9.4.7
* ci: do not cache Stack config
---------
Co-authored-by: Emilio López <[email protected]>