Anvil Features
- feat(
anvil
):wallet_
namespace + inject P256BatchDelegation + executor (#9110) by @yash-atreya - feat(
anvil
): support mining with same block.timestamp (#9160) by @yash-atreya - feat(anvil): add
anvil_getIntervalMining
API (#9290) by @feynman-x - feat(
anvil
):--cache-path
(#9343) by @yash-atreya
Anvil Fixes
- fix: dont set state root (#9134) by @mattsse
- fix(
anvil
): use header.number not best_number (#9151) by @yash-atreya - fix(
anvil
): arb fork mining (#9153) by @yash-atreya - fix(anvil): Apply state overrides in debug_traceCall (#9172) by @iliastsa
- fix: add back
silent
option in Anvil'sNodeConfig
(#9181) by @zerosnacks - fix(
anvil
): tag newly created legacy transactions on shadow fork asSome(0)
(0x0
) rather thanNone
(#9195) by @zerosnacks - fix(anvil): correctly set hardfork-specific block fields (#9202) by @klkvr
- fix: include withdrawals root in response (#9208) by @mattsse
- fix(
anvil
): setstorage.best_number
correctly (#9215) by @yash-atreya - fix(anvil): on anvil_mine jump to next timestamp before mine new block (#9241) by @grandizzy
- anvil: Correctly set HF fields for Genesis block (#9248) by @ngotchac
- fix(anvil): set auto-unlock an alias of auto-impersonate (#9256) by @jsvisa
- fix(
anvil
): implmaybe_as_full_db
forForkedDatabase
(#9465) by @yash-atreya - fix(
anvil
): setbest_number
tostate.block.number
if greater (#9543) by @yash-atreya
Cast Features
- feat(cast): add avalanche and fuji genesis hashes (#210) by @joshieDo
- feat(cast): add
json
flag incast wallet new-mnemonic
(#9139) by @leovct - feat(
cast
): add flag equivalents of parseUnits, formatUnits (#9165) by @kien6034 - feat(cast): add
--rpc-timeout
option (#9044) by @PanGan21 - feat(cast): add --int flag to from-rlp (#9210) by @TropicalDog17
- feat(cast) add creation-code method [#8973] (#9029) by @pawurb
- feat(cast): add string-decode to decode string (#9237) by @jsvisa
- feat(
cast run
): add--etherscan-api-key
to resolve contract names (#9295) by @grandizzy - feat(cast): add artifact method (#9249) by @pawurb
- feat(forge, cast): add
cast --with_local_artifacts
/forge selectors cache
to trace with local artifacts (#7359) by @byteshijinn - feat(cast): add decode-event sig data (#9413) by @grandizzy
- feat(cast): decode external lib sigs from cached selectors (#9399) by @grandizzy
- feat(
cast
):decode-error
with sig, local cache and openchain api (#9428) by @grandizzy - feat(
cast
):decode-event
with local and openchain API (#9431) by @grandizzy - feat: rpc_headers in cast and config (#9429) by @yash-atreya
- feat(cast): allow some more stdin inputs (#9442) by @DaniPopes
- feat(cast): add support for beacon proxies in cast impl (#9567) by @0xvv
Cast Fixes
- fix(cli): replace underscore for hyphen on wallet cli args (#212) by @joshieDo
- fix: support EOF opcodes in
cast da
(#9070) by @klkvr - fix: respect
--auth
incast call
andcast estimate
(#9120) by @klkvr - fix(cast): do not strip 0x / hex decode message before EIP-191 hashing (#9130) by @grandizzy
- fix(
cast block
): ensure to print all fields (#9209) by @klkvr - fix: rename flag as_int -> as-int (#9235) by @klkvr
- fix(trace): properly report
fallback()
fn (#9287) by @grandizzy - fix(cast storage): respect
--json
for layout (#9332) by @MaxMustermann2 - fix: bail incomplete bytecode sequence disassemble (#9390) by @publicqi
- fix(
cast
): resetenv.tx.caller
for impersonated txs (#9544) by @yash-atreya - fix: account for impersonated tx in configure_tx_env (#9553) by @yash-atreya
Chisel Fixes
- fix(chisel): on edit fail command only if execution failed (#9155) by @grandizzy
- fix(chisel): uint/int full word print (#9381) by @grandizzy
Forge Features
- feat(forge): verify contracts created inside a call (#2840) by @joshieDo
- feat(
cheatcodes
): vm.getScriptWallets() (#9052) by @yash-atreya - feat(forge): allow passing value to
--optimize
(#9071) by @klkvr - feat(
forge doc
): include custom natspec (#9075) by @leovct - feat: make
--gas-report
JSON output compatible (#9063) by @zerosnacks - feat(
cheatcodes
): vm.rememberKeys (#9087) by @yash-atreya - feat(forge): add
compiler
subcommand (#7909) by @jpgonzalezra - feat(forge): add max supported EVM version in compiler -vv (#9129) by @grandizzy
- feat(
forge build
): add initcode size check (#9116) by @mgiagante - feat(
forge build
):--watch
flag now watchesfoundry.toml
config… (#9148) by @leovct - fix(cheatcodes): improve fork cheatcodes messages (#9141) by @grandizzy
- feat(fmt): add
all_params
config - same asall
but split single param too (#9176) by @grandizzy - feat(invariant): add basic metrics report (#9158) by @grandizzy
- feat(
forge install
): add@tag=
@branch=
@rev=
specific refs (#9214) by @grandizzy - feat: make
--gas-report
w/--json
output one JSON blob and addcontract_path
to output (#9216) by @zerosnacks - feat(
cheatcodes
): access broadcast artifacts (#9107) by @yash-atreya - feat(
--gas-report
): add option to include tests (#9232) by @grandizzy - feat(
cheatcodes
): mockCall with bytes4 data (#9267) by @yash-atreya - feat(forge): allow
--verifier custom
option (#9311) by @grandizzy - feat(
cheatcodes
): adddelegatecall
toprank
ing (#8863) by @EdwardJES - feat(forge build): err if no source file in specified paths (#9329) by @grandizzy
- feat(
forge build
): add--sizes
and--names
JSON compatibility (#9321) by @zerosnacks - feat(
forge build -vvvvv
): If verbosity level is 5 or higher show files to compile (#9325) by @mgiagante - feat: compilation restrictions (#8668) by @klkvr
- Support EIP-7702 Delegations in Forge (#9236) by @evchip
- feat(forge, cast): add
cast --with_local_artifacts
/forge selectors cache
to trace with local artifacts (#7359) by @byteshijinn - feat(forge): show additional details of contract to verify (#9403) by @grandizzy
- fix: forge script should adhere to
--json
flag (#9404) by @zerosnacks - feat: add
--broadcast
flag to forge create, default to dry run mode (#9420) by @zerosnacks - feat(
traces
): show state changes incast run
andforge test
on-vvvvv
(#9013) by @cassc - feat: rewrite inline config using figment (#9414) by @DaniPopes
- feat: add timeouts to fuzz testing (#9394) by @smartcontracts
- feat(script): support custom create2 deployer (#9278) by @jsvisa
- feat: allow any config to be defined inline (#9430) by @DaniPopes
- fix/feat(coverage): add --lcov-version (#9462) by @DaniPopes
- feat: dedup error messages (#9481) by @DaniPopes
- feat: add JSON compatibility for
forge test --summary +/ --detailed
+ apply consistent table styling (#9485) by @zerosnacks - feat(
cheatcodes
): count assertion forexpectRevert
(#9484) by @yash-atreya - feat(cheatcodes): add
vm.getStateDiff
to get state diffs as string (#9435) by @grandizzy - feat(cheatcodes): skip test suite in setup (#9532) by @grandizzy
- feat(
cheatcodes
): count assertion forexpectEmit
(#9405) by @yash-atreya
Forge Fixes
- fix(forge): only cleanup dirs if they exists (#194) by @mattsse
- fix(
tests
): force install solidity 0.8.19 through svm (#5221) by @Evalir - fix(coverage): proper instruction for 1st branch anchor (#8512) by @grandizzy
- fix: running script with
--broadcast
for a transaction sequence can error out due to nonce desync from rpc latency (#9096) by @pogobounce - fix(fmt): do not panic when no named arg (#9114) by @grandizzy
- fix(traces): identify artifacts using both deployed and creation code (#9050) by @grandizzy
- fix(cheatcodes): convert fixed bytes to bytes in vm.rpc tuple result (#9117) by @grandizzy
- fix: script simulation with default sender (#9042) by @klkvr
- fix(fmt): multiline single param only if func definition is multiline for
all_params
(#9187) by @ChiTimesChi - fix(script): correctly detect additional contracts (#9207) by @klkvr
- fix(forge create): set skip_is_verified_check: true (#9222) by @grandizzy
- fix: allow_hyphen_values for constructor args (#9225) by @mattsse
- fix(
--gas-report
): add back signatures, even if empty, avoid nesting multiple selectors (#9229) by @zerosnacks - fix: remove steps after steps tracing cheatcodes are done (#9234) by @klkvr
- fix(
deps
): updatealloy-chains
to fix Celo explorer API URL (#9242) by @github-actions[bot] - fix: better error handling when waiting for receipt (#9253) by @klkvr
- fix(
forge doc
): display custom natspec tag (#9257) by @leovct - fix(forge): fix stack overflow when the lib path is absolute. (#9190) by @l1nxy
- fix(remappings): ignore remappings of root proj dirs when merging (#9258) by @grandizzy
- fix(
forge test
): record only test fns in test failures (#9286) by @grandizzy - fix(coverage): do not report empty constructors, enable reports for
receive
(#9288) by @grandizzy - fix(fork): set block blob_excess_gas_and_price only if
excess_blob_gas header
is Some (#9298) by @grandizzy - fix(forge): always report deployment size in gas reports (#9308) by @grandizzy
- fix(
forge eip712
): handle recursive types (#9319) by @klkvr - fix: identification of contracts in scripts (#9346) by @klkvr
- fix(
coverage
): allowir-minimum
for versions < 0.8.5 (#9341) by @grandizzy - fix:
vm.broadcastRawTransaction
(#9378) by @klkvr - fix(forge test): install missing dependencies before creating
Project
(#9379) by @klkvr - fix(forge create): install missing deps if any (#9401) by @grandizzy
- fix: remove duplicate
gas_limit
/block_gas_limit
field, declare as alias (#9406) by @zerosnacks - fix(cheatcodes): use calldata in attachDelegation (#9407) by @grandizzy
- fix(coverage): clean ups, use normalized source code for locations (#9438) by @DaniPopes
- fix(coverage): special functions have no name (#9441) by @DaniPopes
- fix(coverage): also ignore empty fallbacks and receives (#9459) by @DaniPopes
- fix(coverage): assert should not be branch (#9467) by @grandizzy
- fix(
forge
): rundep.has_branch
in correct dir (#9453) by @yash-atreya - fix(remappings): project autoremappings should respect config (#9466) by @grandizzy
- fix: force
prevrandao
on Moonbeam networks (#9489) by @mattsse - fix(verify): cached artifacts by version (#9520) by @grandizzy
- fix(cheatcodes): clear orderings together with trace steps on debug trace stop (#9529) by @grandizzy
- fix(fuzz): exclude exernal libraries addresses from fuzz inputs (#9527) by @grandizzy
- fix: read rpc config when using fork cheatcodes (#9547) by @anukul
Performance improvements
- perf: cap default poll interval (#9250) by @mattsse
- perf(coverage): improve HitMap merging and internal repr (#9456) by @DaniPopes
- perf(coverage): cache computed bytecode hash in CoverageCollector (#9457) by @DaniPopes
- perf(coverage): cache current HitMap, reserve when merging (#9469) by @DaniPopes
Other
- chore: improve Retry usage and warning (#9503) by @DaniPopes
- chore(deps): remove async_recursion (#9500) by @DaniPopes
- chore: bump alloy (#9496) by @mattsse
- fix: mark flag incompatibility (#9530) by @zerosnacks
- Update incorrect documentation in the READ.me (#9538) by @jtfirek
- chore: Add GH attestation for foundry binaries (#9546) by @grandizzy
- feat(foundryup): allow multiple installed versions (#9551) by @grandizzy
- chore: bump workspace version to
0.3.0
(#9580) by @zerosnacks - Update CI workflow template to unpin from
nightly
explicitly, relying onfoundry-toolchain
default (#9573) by @zerosnacks - chore: testFail* deprecation warning (#9581) by @yash-atreya