All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support for compilation pipeline going through the Yul intermediate representation
-
The output from
dapp build
now uses color to differentiate warnings and errors -
Support for solc 0.8.9/0.8.8
-
dapp snapshot
anddapp check-snapshot
commands to snapshot test gas usage.
- Dapp remappings ignores non-directories in
DAPP_LIB
- Dapp can correctly parse replay strings from invariant tests
- Libraries are properly linked when compiling with solc >= 0.7
DAPP_TEST_DEPTH
env var to control--depth
--coverage
flag fordapp test
to generate coverage via hevmdapp debug
respects theDAPP_LINK_TEST_LIBRARIES
environment variable.dapp install
accepts URLs with git tags, branches or revs specified as<url>@<tag>
- Dapp debug respects
DAPP_LINK_TEST_LIBRARIES
- Fix quotation bug in
dapp replay
hevm
bumped to london hard fork.dapp --use
now uses the solc binaries from https://binaries.soliditylang.org/ instead of the versions built from source via nixdapp remappings
now issues a warning instead of failing with a hard error in case of mistmatched package versions in the dependency tree
- A new type of test has been added: invariant testing, which runs a test function against a random reachable contract state. More information in the README
- A new flag for
dapp test
,--ffi
allows users to enable theffi()
cheatcode in their tests
- solc 0.8.6 is now the default compiler version
- updated
nixpkgs
to the21.05
channel
- updated
nixpkgs
to the20.09
channel
- support for (non-static) solc 0.7.4 and solc 0.8.1
dapp init
works with the new standard-json architecturedapp verify-contract
works with the new standard-json architecture
dapp build
,dapp test
,dapp --make-library-state
,dapp create
now use solidity output generated via--standard-json
instead of--combined-json
. Building via the old format is still possible viadapp build --legacy
, but is considered deprecated and will be removed in future releases.
The standard json used by dapp build
can be set using the environment variable:
DAPP_STANDARD_JSON
, and defaults to the result of dapp mk-standard-json
.
dapp --find-libraries
no longer requires--extract
: libraries do not need to be built to be found.
dapp mk-standard-json
command to generate a standard json for setting Solidity compiler options. The settings can be tweaked using the following environment variables:DAPP_REMAPPINGS
(defaults to the result ofdapp remappings
)DAPP_LIBRARIES
(defaults to the result ofdapp --find-libraries
)DAPP_BUILD_OPTIMIZE
(defaults to false)
SOLC_FLAGS
. To modify the compiler settings, use a custom standard json and set the filename as argument toDAPP_STANDARD_JSON
.
dapp create <contract> --verify
now passes the qualified path todapp verify-contract
, as expected.
dapp --use
can find solc versions in the nix store even if they are not present onPATH
- Corrected help text for solc version installation
dapp test --match
now matches on file path and contract name, as well as test namedapp --use
searches directly for binaries in your path, rather than usingnix run
, giving a significant speed boost.
- Support for solc 0.6.8
- Support for setting solc by path. Use
DAPP_SOLC=/path/to/bin
ordapp --use /path/to/solc ...
to use a custom solc. - dapp test --cache for RPC caching, via hevm.
- Support for solc 0.6.12 for linux
- Support for libraries. To test a project which includes libraries you need to use:
DAPP_BUILD_EXTRACT=1 dapp test
- Support for solc 0.6.7
- The json outputted by
dapp build
will now containstorage-layout
, if the chosen solidity version allows.
- Support for solc 0.6.7
- Updated hevm to 0.40
- Updated
geth
to 1.9.10
- Support for git submodules (setzer, dai-cli, chief, terra)
dapp pkg
functionality - dapptools is now installed and upgraded as a Nix package only, without relying on gitDAPPTOOLS
environment variable, which was only needed to support the git-based workflow above
dapp pkg
subcommand is now a no-op, and will be removed in future versions.
0.27.0 - 2020-04-23
- Integration with
hevm
s new property based testing functionality. Any test with nonzero arguments will be interpreted as a property test whose arguments are randomly generated and run--fuzz-runs
number of times. - Support for solc 0.5.16
- Support for solc 0.6.0
- Support for solc 0.6.6
--extract
flag fordapp build
no longer needed for usingdapp create
.dapp create
will fail if it finds multiple contracts with same name, requiring full path instead.
- Support for solc 0.5.15
dapp address
anddapp create
now returns checksummed addresses
dapp address
returns address with0x
prefix.- Default to solc 0.5.15
- Since solc 0.5.15, shared libraries are not built anymore, which might break certain rare usecases
0.25.0 - 2019-08-02
- Correctly load testnet snapshots which were saved with multiple accounts
dapp address
is now implemented in bash rather than depending on ethereumjs-util- Support hevm RPC - options added to
dapp test
anddapp debug
to allow unit tests to reference remote contracts.
0.24.0 - 2019-07-09
- Support for solc 0.5.10
- Default to solc 0.5.10
0.23.0 - 2019-07-08
- Faster
dapp build
, with a single compilation pass. Consolidates solc output into a singleout/dapp.sol.json
, which may break some workflows.dapp build --extract
can be used to extract .abi, .bin, .bin-runtime files from the json intoout/
. - The version of
hevm
is now shown indapp --version
.
0.22.0 - 2019-06-21
- geth upgraded to 1.8.27
0.21.0 - 2019-06-21
- Support for solc 0.5.9
- Default to solc 0.5.9
0.20.0 - 2019-05-23
- Support for solc 0.5.8
0.19.0 - 2019-05-09
- The default output of
dapp test
is now to only show assertion failures. Other output modes can be accessed with-v
and-vv
.
0.18.1 - 2019-05-03
- Revert the change to the output of
dapp create
, because it created problems when concatenating scripts.
0.18.0 - 2019-05-02
- The return value of
dapp debug
in case of error is1
, rather than-1
- Improved printing of the address of the deployed contract in
dapp create
0.17.0 - 2019-03-28
- Support for solc 0.5.7
0.16.0 - 2019-03-20
- Support for solc 0.5.6
- Default to solc 0.5.6
0.15.1 - 2019-03-05
- The version returned by
dapp --version
had not been updated from 0.14.0 to 0.15.0
0.15.0 - 2019-03-04
- The default solc had been incorrectly re-set to 0.5.3 - it's 0.5.4 again now.
0.14.0 - 2019-02-22
- Fix missing runtime dependency to
gnumake
indapp
.
0.13.0 - 2018-02-04
- Support for solc 0.5.4
- Default solc to 0.5.4
0.12.0 - 2018-02-04
- Default solc to 0.5.3
- Updated go-ethereum to v1.8.22 (Constantinople)
0.11.0 - 2018-02-02
- Support for solc 0.5.3
0.10.0 - 2018-01-24
- Default to running solc 0.5.2
0.9.2 - 2018-01-19
- Support for solc 0.5.1 and 0.5.2
- Introduced a new environment variable
DAPP_SOLC_VERSION
, that overrides the defaultsolc
used bydapp
. Can be used withexport DAPP_SOLC_VERSION=0.5.0
instead ofdapp --use solc:0.5.0 [command]
for every command.
0.9.1 - 2018-12-13
- Pass
--verbose
flag tohevm
0.9.0 - 2018-12-04
From this release on, we will document changes, additions and removals in this changelog.