hevm-0.51.0: hevm.cabal
cabal-version: 3.0
name:
hevm
version:
0.51.0
synopsis:
Ethereum virtual machine evaluator
description:
Hevm implements the Ethereum virtual machine semantics.
.
It can be used as a library, and it also comes with an executable
that can run unit test suites, optionally with a visual TTY debugger.
homepage:
https://github.com/dapphub/dapptools
license:
AGPL-3.0-only
author:
Mikael Brockman, Martin Lundfall, dxo
maintainer:
mikael@brockman.se, martin.lundfall@gmail.com, git@d-xo.org
category:
Ethereum
build-type:
Simple
extra-source-files:
CHANGELOG.md
bench/contracts/erc20.sol
test/contracts/lib/test.sol
test/contracts/lib/erc20.sol
test/contracts/pass/trivial.sol
test/contracts/pass/abstract.sol
test/contracts/pass/cheatCodes.sol
test/contracts/pass/constantinople.sol
test/contracts/pass/dsProvePass.sol
test/contracts/pass/invariants.sol
test/contracts/pass/libraries.sol
test/contracts/pass/loops.sol
test/contracts/pass/rpc.sol
test/contracts/fail/trivial.sol
test/contracts/fail/cheatCodes.sol
test/contracts/fail/dsProveFail.sol
test/contracts/fail/invariantFail.sol
test/scripts/convert_trace_to_json.sh
flag ci
description: Sets flags for compilation in CI
default: False
manual: True
flag devel
description: Sets flag for compilation during development
default: False
manual: True
source-repository head
type: git
location: https://github.com/ethereum/hevm.git
common shared
if flag(ci)
ghc-options: -Werror
if flag(devel)
ghc-options: -j
ghc-options:
-Wall
-Wno-unticked-promoted-constructors
-Wno-orphans
-Wno-ambiguous-fields
default-language: GHC2021
default-extensions:
DuplicateRecordFields
LambdaCase
NoFieldSelectors
OverloadedRecordDot
OverloadedStrings
OverloadedLabels
RecordWildCards
TypeFamilies
ViewPatterns
library
import: shared
exposed-modules:
EVM,
EVM.ABI,
EVM.Assembler,
EVM.Concrete,
EVM.Dapp,
EVM.Debug,
EVM.Dev,
EVM.Expr,
EVM.SMT,
EVM.Solvers,
EVM.Exec,
EVM.Facts,
EVM.Facts.Git,
EVM.Format,
EVM.Fetch,
EVM.FeeSchedule,
EVM.Hexdump,
EVM.Op,
EVM.Patricia,
EVM.Precompiled,
EVM.RLP,
EVM.Solidity,
EVM.Stepper,
EVM.StorageLayout,
EVM.SymExec,
EVM.Traversals,
EVM.CSE,
EVM.Keccak,
EVM.Transaction,
EVM.Types,
EVM.UnitTest,
EVM.Sign,
if !os(windows)
exposed-modules:
EVM.TTY,
EVM.TTYCenteredList
other-modules:
Paths_hevm
autogen-modules:
Paths_hevm
if os(linux) || os(windows)
extra-libraries: stdc++
extra-libraries:
secp256k1, ff, gmp
c-sources:
ethjet/tinykeccak.c, ethjet/ethjet.c
cxx-sources:
ethjet/ethjet-ff.cc, ethjet/blake2.cc
cxx-options:
-std=c++0x
install-includes:
ethjet/tinykeccak.h, ethjet/ethjet.h, ethjet/ethjet-ff.h, ethjet/blake2.h
build-depends:
QuickCheck >= 2.13.2 && < 2.15,
Decimal >= 0.5.1 && < 0.6,
containers >= 0.6.0 && < 0.7,
deepseq >= 1.4.4 && < 1.5,
time >= 1.11.1.1 && < 1.12,
transformers >= 0.5.6 && < 0.6,
tree-view >= 0.5 && < 0.6,
abstract-par >= 0.3.3 && < 0.4,
aeson >= 2.0.0 && < 2.1,
bytestring >= 0.11.3.1 && < 0.12,
scientific >= 0.3.6 && < 0.4,
binary >= 0.8.6 && < 0.9,
text >= 1.2.3 && < 1.3,
unordered-containers >= 0.2.10 && < 0.3,
vector >= 0.12.1 && < 0.13,
ansi-wl-pprint >= 0.6.9 && < 0.7,
base16 >= 0.3.2.0 && < 0.3.3.0,
megaparsec >= 9.0.0 && < 10.0,
mtl >= 2.2.2 && < 2.3,
directory >= 1.3.3 && < 1.4,
filepath >= 1.4.2 && < 1.5,
cereal >= 0.5.8 && < 0.6,
cryptonite >= 0.30 && < 0.31,
memory >= 0.16.0 && < 0.20,
data-dword >= 0.3.1 && < 0.4,
free >= 5.1.3 && < 5.2,
haskeline >= 0.8.0 && < 0.9,
process >= 1.6.5 && < 1.7,
optics-core >= 0.4.1 && < 0.5,
optics-extra >= 0.4.2.1 && < 0.5,
optics-th >= 0.4.1 && < 0.5,
aeson-optics >= 1.2.0.1 && < 1.3,
monad-par >= 0.3.5 && < 0.4,
async >= 2.2.4 && < 2.3,
multiset >= 0.3.4 && < 0.4,
operational >= 0.2.3 && < 0.3,
optparse-generic >= 1.3.1 && < 1.5,
quickcheck-text >= 0.1.2 && < 0.2,
restless-git >= 0.7 && < 0.8,
rosezipper >= 0.2 && < 0.3,
temporary >= 1.3 && < 1.4,
witherable >= 0.3.5 && < 0.5,
wreq >= 0.5.3 && < 0.6,
regex-tdfa >= 1.2.3 && < 1.4,
base >= 4.9 && < 5,
here >= 1.2.13 && < 1.3,
tuple >= 0.3.0.2 && < 0.4,
smt2-parser >= 0.1.0.1,
word-wrap >= 0.5 && < 0.6,
spool >= 0.1 && < 0.2,
stm >= 2.5.0 && < 2.6.0,
spawn >= 0.3 && < 0.4,
filepattern >= 0.1.2 && < 0.2
if !os(windows)
build-depends:
brick >= 1.4 && < 1.5,
vty >= 5.37 && < 5.38
hs-source-dirs:
src
executable hevm
import: shared
hs-source-dirs:
hevm-cli
main-is:
hevm-cli.hs
ghc-options: -threaded -with-rtsopts=-N
other-modules:
Paths_hevm
if os(darwin)
extra-libraries: c++
ld-options: -Wl,-keep_dwarf_unwind
else
extra-libraries: stdc++
build-depends:
QuickCheck,
aeson,
ansi-wl-pprint,
async,
base,
base16,
binary,
brick,
bytestring,
containers,
cryptonite,
data-dword,
deepseq,
directory,
filepath,
free,
hevm,
memory,
mtl,
optparse-generic,
operational,
process,
quickcheck-text,
regex-tdfa,
temporary,
text,
unordered-containers,
vector,
vty,
stm,
spawn,
optics-core
if os(windows)
buildable: False
--- Test Helpers ---
common test-base
import: shared
hs-source-dirs:
test
extra-libraries:
secp256k1
other-modules:
Paths_hevm
autogen-modules:
Paths_hevm
build-depends:
HUnit >= 1.6,
QuickCheck,
quickcheck-instances,
aeson,
base,
base16,
binary,
containers,
directory,
bytestring,
filemanip,
filepath,
here,
hevm,
mtl,
data-dword,
process,
tasty >= 1.0,
tasty-hunit >= 0.10,
tasty-quickcheck >= 0.9,
tasty-expected-failure >= 0.12,
temporary,
text,
regex-tdfa,
regex,
time,
array,
vector,
tasty-bench,
stm >= 2.5.0,
spawn >= 0.3,
witherable,
smt2-parser >= 0.1.0.1,
operational,
optics-core,
optics-extra
library test-utils
import:
test-base
exposed-modules:
EVM.Test.Utils
EVM.Test.Tracing
EVM.Test.BlockchainTests
if os(windows)
buildable: False
common test-common
import:
test-base
if flag(devel)
ghc-options: -threaded -with-rtsopts=-N
build-depends:
test-utils
other-modules:
EVM.Test.Utils
EVM.Test.Tracing
EVM.Test.BlockchainTests
if os(windows)
buildable: False
if os(darwin)
extra-libraries: c++
-- https://gitlab.haskell.org/ghc/ghc/-/issues/11829
ld-options: -Wl,-keep_dwarf_unwind
else
extra-libraries: stdc++
--- Test Suites ---
test-suite test
import:
test-common
type:
exitcode-stdio-1.0
main-is:
test.hs
-- these tests require network access so we split them into a seperate test
-- suite to make it easy to skip them when running nix-build
test-suite rpc-tests
import:
test-common
type:
exitcode-stdio-1.0
main-is:
rpc.hs
test-suite ethereum-tests
import:
test-common
type:
exitcode-stdio-1.0
main-is:
BlockchainTests.hs
--- Benchmarks ---
benchmark bench
import: shared
type:
exitcode-stdio-1.0
main-is:
bench.hs
hs-source-dirs:
bench
ghc-options:
-O2
if os(darwin)
extra-libraries: c++
else
extra-libraries: stdc++
other-modules:
Paths_hevm
autogen-modules:
Paths_hevm
build-depends:
base,
tasty-bench,
tasty,
bytestring,
text,
hevm,
here,
test-utils,
filemanip,
filepath,
containers,
mtl