0.0.8 (2025-02-05)
- Improve display format (#898) (6af9b1a)
- Upstream 9f11e6df (#899) (e98c3fe)
- Upstream 9f11e6df commits (#900) (13051f0)
0.0.7 (2025-01-31)
0.0.6 (2025-01-31)
0.0.5 (2025-01-29)
- add assemblycreate for warning suppression for zksolc 1.5.10 (#840) (62af6f9)
- Cache invalidation on zksolc version change (#871) (60a8f35)
- Upstream 5e72c69 (#876) (7b50143)
- zk: zksolc linking (#800) (b69695a)
- add proper filter sets for ci test runs (#875) (886ff8b)
- release artifact names and tags (#866) (b993907)
- Remove wrong estimation in create for zksync transactions (#864) (cf0a88d)
- set log level for nonce revert to trace (#873) (a9289fb)
0.0.4 (2025-01-23)
0.0.3 (2025-01-23)
--eof
flag and config key (#9002) (ecf37f2)--gas-report
: add option to include tests (#9232) (c90ea4d)--gas-report
: add option to show gas for tests (c90ea4d)anvil
:--cache-path
(#9343) (057c8ac)anvil
:wallet_
namespace + inject P256BatchDelegation + executor (#9110) (08021d9)anvil
: support mining with same block.timestamp (#9160) (4d7435e)cast run
: add--etherscan-api-key
to resolve contract names (#9295) (8c01706)cast
:decode-error
with sig, local cache and openchain api (#9428) (0d76df5)cast
:decode-event
with local and openchain API (#9431) (0f7268f)cast
: add flag equivalents of parseUnits, formatUnits (#9165) (bcef905)cheatcodes
:getArtifactPathByCode
andgetArtifactPathByDeployedCode
(#8938) (c59d97e)cheatcodes
: access broadcast artifacts (#9107) (2bb446e)cheatcodes
: adddelegatecall
toprank
ing (#8863) (c526cab)cheatcodes
: count assertion forexpectRevert
(#9484) (63484d0)cheatcodes
: mockCall with bytes4 data (#9267) (adaad3d)cheatcodes
: vm.getScriptWallets() (#9052) (373ad46)cheatcodes
: vm.rememberKeys (#9087) (9415dde)common::shell
: add global verbosity level (-vvv
) flag replacing--verbose
(#9273) (22cf683)config
: set default evm version to cancun (#9131) (60dd1d7)DualCompiledContracts::find_bytecode
(beb1108)forge build -vvvvv
: If verbosity level is 5 or higher show files to compile (#9325) (7e323c2)forge build
:--watch
flag now watchesfoundry.toml
config changes (52b3da2)forge build
:--watch
flag now watchesfoundry.toml
config… (#9148) (52b3da2)forge build
: add--sizes
and--names
JSON compatibility (#9321) (a79dfae)forge build
: add initcode size check (#9116) (8bdcbfa)forge doc
: include @custom natspec (#9075) (92702e9)forge install
: add[@tag](https://github.com/tag)=
[@branch](https://github.com/branch)=
[@rev](https://github.com/rev)=
specific refs (#9214) (a428ba6)traces
: show state changes incast run
andforge test
on-vvvvv
(#9013) (c63aba8)- add
--broadcast
flag to forge create, default to dry run mode (#9420) (2c3114c) - add
foundry_common::shell
to unify log behavior (#9109) (cd71da4) - add additional gas usage info from bootloader (#590) (8422d71)
- Add binary attestations (84cd0ae)
- Add cargo nextest to zk tests (#745) (27360d4)
- add global -j, --threads (#9367) (fef2098)
- add global
--json
flag (#9244) (e2a6282) - add JSON compatibility for
forge test --summary +/ --detailed
+ apply consistent table styling (#9485) (a4de7e8) - Add paymaster parameters to broadcasting flow (#596) (dbb13e7)
- Add paymaster support to cast send (#612) (baee07e)
- add retry workflow (#638) (db09e2c)
- add strategy objects (#781) (5353a10)
- Add support for vm.getCode in Zk context (#604) (e498b34)
- add the ability to use specific gas params in era vm environment and use them on script estimations (#773) (7b3c869)
- add timeouts to fuzz testing (#9394) (2e9f536)
- add vm error tracer (#594) (2aa8fa7)
- adds support for forge clean to remove zkout directory (#611) (b513e39)
- adds support for zksolc forge clean (b513e39)
- adds verification for zksync block explorer (#599) (15bec2f)
- allow any config to be defined inline (#9430) (3e6d3b8)
- anvil: add
anvil_getIntervalMining
API (#9290) (9df5939) - build static binaries (#844) (d00f5ae)
- bump alpine to
3.20.3
(#9094) (7a9ebf9) - bump MSRV to 1.83 (#9473) (2f56133)
- cast: add --int flag to from-rlp (#9210) (00415bb)
- cast: add
--rpc-timeout
option (#9044) (2559899) - cast: add
json
flag incast wallet new-mnemonic
(#9139) (7c1c019) - cast: add artifact method (#9249) (f8d9234)
- cast: add contract creation bytecodes to traces (#8941) (df2203c)
- cast: add decode-event sig data (#9413) (31dd1f7)
- cast: add string-decode to decode string (#9237) (736a330)
- cast: allow some more stdin inputs (#9442) (d4e91c8)
- cast: decode external lib sigs from cached selectors (#9399) (16a013f)
- cheatcode:
startDebugTraceRecording
andstopDebugTraceRecording
for ERC4337 testing (#8571) (0c659f0) - cheatcodes: add
vm.getStateDiff
to get state diffs as string (#9435) (00efa0d) - cheatcodes: Add
vm.mockCalls
to mock different return data for multiple calls (#9024) (d7d9b40) - cheatcodes: add vm.cloneAccount() cheatcode (#9048) (1ba5d6f)
- cheatcodes: display warnings for deprecated cheatcodes (#8883) (5725bcc)
- cheatcodes: implement new cheatcode to check if a string contains another string (#9085) (bcacf39)
- cheatcodes: random* cheatcodes to aid in symbolic testing (#8882) (d15d71a)
- cheatcodes: skip test suite in setup (#9532) (0eff1ef)
- chisel: add eval command (#9086) (15fdb2a)
- compilation restrictions (#8668) (547d8a5)
- compiler:zk: zksolc 1.5.7 (#688) (953a180)
- compiler:zk: zksolc linking (#711) (f51b213)
- coverage: add --lcov-version (e5dbb7a)
- dedup error messages (#9481) (8ac30d9)
- fix re-entrancy in strategies (#801) (6234614)
- fmt: add
all_params
config - same asall
but split single param too (#9176) (b1e9365) - forge build: err if no source file in specified paths (#9329) (9d7557f)
- forge, cast: add
cast --with_local_artifacts
/forge selectors cache
to trace with local artifacts (#7359) (398ef4a) - forge: add
compiler
subcommand (#7909) (adb6aba) - forge: add max supported EVM version in compiler -vv (#9129) (d5f6e34)
- forge: allow
--verifier custom
option (#9311) (36cbce7) - forge: allow passing value to --optimize (641132f)
- forge: allow passing value to
--optimize
(#9071) (641132f) - forge: show additional details of contract to verify (#9403) (eae5fb4)
- foundry upstream support da77402 (#601) (dac2eea)
- gas snapshots over arbitrary sections (#8952) (08a6409)
- get rid of zksync_select_fork_vm method (#813) (e85875e)
- implement
parseTomlType
cheats (#8911) (f2c14c1) - include anvil-zksync in foundryup install script (#765) (f6527ae)
- init forge project with zksync (#586) (8202db6)
- Initial support for custom paymaster (#591) (22871de)
- invariant: add basic metrics report (#9158) (c2f1760)
- make
--gas-report
JSON output compatible (#9063) (0ec018d) - make
--gas-report
w/--json
output one JSON blob and addcontract_path
to output (#9216) (48930a6) - Paymaster support in Forge create (#609) (902f992)
- randomBytes: adding support to generate different bytes via RngCore (#8996) (d4649bf)
- reintroduce backend.inspect (#802) (4e50046)
- remove ethers (#8826) (d739704)
- Removing
detect_missing_libraries
arg (#822) (181e3ba) - Removing bump-forge-std.yml (#861) (01021cd)
- rename
ShellOtps
toGlobalOpts
(#9313) (622f922) - return actual gas charged to the transaction caller for zkVM transactions (#592) (d1b59e9)
- rewrite inline config using figment (#9414) (56d0dd8)
- rpc_headers in cast and config (#9429) (af0fee2)
- script: support custom create2 deployer (#9278) (7f41280)
- switch to stable compiler (#814) (36db986)
- sync with upstream 59f354c (#792) (b24a80f)
- Update to soldeer 0.5.1 (#9315) (78d263a)
- Update to soldeer 0.5.2 (#9373) (41b4359)
- update to Soldeer v0.4.0 (#9014) (0b9bdf3)
- update to Soldeer v0.4.1 (#9092) (44b2d75), closes #212
- update to Soldeer v0.5.0 (#9281) (c4a31a6)
- use multi-architecture images in Dockerfile to support apple si… (#8964) (f7e9204)
- use multi-architecture images in Dockerfile to support apple silicon (f7e9204)
- use new compilers api and add zkync solc test (#607) (cbd6940)
- use zk deployment sizes in gas report (#595) (46d9f92)
- ZkUseFactoryDep cheatcode (#671) (9093c3c)
- #8759, default (low) gas limit set even when disabled, use custom gas_limit on forks (#8933) (81fb0f6)
--gas-report
: add back signatures, even if empty, avoid nesting multiple selectors (#9229) (748af79)--isolate
: track state in journal (#9018) (d3ce9f0)anvil
: arb fork mining (#9153) (1af44bf)anvil
: eth_gasPrice returned1000000000
with--block-base-fee-per-gas 0
, adds new--disable-min-priority-fee
to return0
(#9049) (e215f3f)anvil
: handle OP deposit txs inTypedTransaction
andPoolTransaction
conversion (#8942) (c9d7b48)anvil
: implmaybe_as_full_db
forForkedDatabase
(#9465) (9af381f)anvil
: setstorage.best_hash
while loading state (#9021) (67018dc)anvil
: setstorage.best_number
correctly (#9215) (45d5997)anvil
: tag newly created legacy transactions on shadow fork asSome(0)
(0x0
) rather thanNone
(#9195) (192a5a2)anvil
: use header.number not best_number (#9151) (6d9951f)cast block
: ensure to print all fields (#9209) (5c69a9d)cheatcodes
: markvm.breakpoint
aspure
(#9051) (47f1ecb)ci
: update cargo deny (#9314) (4304926)cli
: handle id and named chain_id's correctly (#9480) (3a1e76b)coverage
: allowir-minimum
for versions < 0.8.5 (#9341) (dacf341)deps
: updatealloy-chains
to fix Celo explorer API URL (#9242) (9511462)evm
: detect blob tx and set evm version (#9185) (c6d59b3)evm
: set blob_excess_gas_and_price (#9186) (b74e467)forge doc
: display custom natspec tag (#9257) (32f8e79)forge eip712
: fix handling of subtypes (#9035) (f089dff)forge eip712
: handle recursive types (#9319) (a65a5b1)forge test
: record only test fns in test failures (#9286) (f3376a6)forge
: avoid panic when empty fuzz selectors in invariants (#9076) (d847e0f)forge
: rundep.has_branch
in correct dir (#9453) (ade4b35)forge
: run git cmd in correct dir (ade4b35)invariant
: replay should not fail for magic assume (#8966) (20cb903)vm.broadcastRawTransaction
(#9378) (2bc7125)- 4844 fee fixes (#8963) (25f24e6)
- add back
silent
option in Anvil'sNodeConfig
(#9181) (3ff0cdd) - Add check in ZK create to check if it's the test contract (#585) (082b6a3)
- Add gas limit estimation using paymaster balance when in use (#694) (d9babce)
- Add missing injection of factory deps (#753) (2eb72ab)
- Add transaction type to zk tx in cast send (#767) (1ca471f)
- add verbosity for verification compilation error (#703) (81a9bad)
- Add zkout to gitignore template when in zksync forge init mode (#772) (c9def31)
- allow_hyphen_values for constructor args (#9225) (4012ade)
- anvil: Apply state overrides in debug_traceCall (#9172) (4c84dc7)
- anvil: correctly set hardfork-specific block fields (#9202) (1229278)
- anvil: on anvil_mine jump to next timestamp before mine new block (#9241) (6b0c27e)
- anvil: set auto-unlock an alias of auto-impersonate (#9256) (57bb12e)
- avoid deadlock in nested shell calls (#9245) (ea11082)
- bail incomplete bytecode sequence disassemble (#9390) (cca72ab)
- better error handling when waiting for receipt (#9253) (d402afd)
- cast block: ensure to print all fields (5c69a9d)
- cast storage: respect
--json
for layout (#9332) (d275a49) - cast: do not strip 0x / hex decode message before EIP-191 hashing (#9130) (ca49147)
- cheatcodes: chain report source errors (2044fae)
- cheatcodes: clear orderings together with trace steps on debug trace stop (#9529) (b090638)
- cheatcodes: convert fixed bytes to bytes in vm.rpc tuple result (#9117) (3786b27)
- cheatcodes: empty ordering and step logs too (b090638)
- cheatcodes: fix deploy create with broadcastRawTransaction (a355af4)
- cheatcodes: handle create2 deployer with broadcastRawTransaction (#9020) (a355af4)
- cheatcodes: improve fork cheatcodes messages (#9141) (2044fae)
- cheatcodes: use calldata in attachDelegation (#9407) (672bdf6)
- chisel: final statement & fetch err with complex type fixes (#9081) (4065d38)
- chisel: on edit fail command only if execution failed (#9155) (9fe891a)
- chisel: uint/int full word print (#9381) (cf66dea)
- ci: flexibly handle forge-std being installed with tag or untagged (#9003) (452066e)
- ci: run tests in hosted runner (a4f0ebf)
- ci: Update github-hosted runner label (#846) (5c46959)
- cli: etherlink needs eth_estimateGas for gas calculation (#9188) (ab8ebf6)
- compute stored test address after setting the tx nonce on scripts (b40ebe1)
- correct shell substitution in installer (#9351) (d20c142)
- coverage: also ignore empty fallbacks and receives (#9459) (ee9d237)
- coverage: assert should not be branch (#9467) (9ee6005)
- coverage: better find of loc start byte position (#8958) (8d5a66d)
- coverage: clean ups, use normalized source code for locations (#9438) (7a23a5c)
- coverage: do not report empty constructors, enable reports for
receive
(#9288) (91d3349) - coverage: do not report empty constructors, enable reports for receive fn (91d3349)
- coverage: special functions have no name (#9441) (168b239)
- create:zk: avoid initializing signer twice (3653a8d)
- create:zk: find by any bytecode type (909c95c)
- default TransactionRequest (#787) (68fcb7d)
- deny: instant and derivative are unmaintained (#730) (a088464)
- Display name of zksync verifier (#758) (77198c6)
- do not handle expectCall in zkEVM (#807) (9be4421)
- dont set state root (#9134) (7cbd55e)
- enable
revm/blst
(#8965) (e485eeb) - Encode correctly paymaster input (#757) (2b973e1)
- erroneous nonce updates (#839) (7630fbd)
- Exclude from empty code error case where there is no calldata and value (#804) (1cd2c56)
- fix
test.yml
errors (#774) (ab01854) - fix foundry-zksync-install CI check (#735) (0c43026)
- Fixed Forge version check (#733) (5ea23d2)
- flaky test_broadcast_raw_create2_deployer (#9383) (37cc284)
- fmt: do not panic when no named arg (#9114) (440837d)
- fmt: multiline single param only if func definition is multiline for
all_params
(#9187) (216b60a) - force
prevrandao
on Moonbeam networks (#9489) (c161c7c) - forge create: install missing deps if any (#9401) (66228e4)
- forge create: set skip_is_verified_check: true (#9222) (dd443c6)
- forge doc: display custom natspec tag (32f8e79)
- forge eip712: handle recursive types (a65a5b1)
- forge script should adhere to
--json
flag (#9404) (0045384) - forge test: install missing dependencies before creating
Project
(#9379) (76a2cb0) - forge: add logs/decoded logs in json test results (#9074) (a96b826)
- forge: always report deployment size in gas reports (#9308) (54ea38d)
- forge: fix stack overflow when the lib path is absolute. (#9190) (bcdd514)
- forge: generate
evm.legacyAssembly
extra output (#8987) (4bcb309) - forge: improve
test --debug
doc (#8918) (90541f0) - forge: include legacyAssembly output (4bcb309)
- fork reset (#857) (2179ac1)
- fork: set block blob_excess_gas_and_price only if
excess_blob_gas header
is Some (#9298) (4817280) - fork: set block blob_excess_gas_and_price only if excess_blob_gas header is Some (4817280)
- fuzz: exclude external libraries addresses from fuzz inputs (#9527) (59f354c)
- gas price estimation cast send zk (#683) (c129b59)
- handle large years (#9032) (eb04665)
- identification of contracts in scripts (#9346) (c13d42e)
- include
traces
field when runningforge test -vvvv --json
(#9034) (22a72d5) - include withdrawals root in response (#9208) (3b0c75d)
- install libssl-dev for aarch64 binaries (#858) (fea525e)
- invariant: do not commit state if assume returns (#9062) (a17869a)
- linux installation of anvil-zksync and add ci check (#780) (e899df9)
- mark flag incompatibility (#9530) (91030da)
- merge journaled state during forks (#705) (c8c1e14)
- Nonce mismatches what network expects (#726) (f83f08e)
- normalize EVM version in chisel (#9040) (8905af3)
- only test --eof on linux (c89a08c)
- only test
--eof
on linux (#9016) (c89a08c) - Prepare tx transaction with right type (#783) (699f8e8)
- redact RPC URLs in traces if URL is passed in directly (#9077) (1465e39)
- remappings: check if remapping to add starts with existing remapping name (#9246) (455ba9b)
- remappings: ignore remappings of root proj dirs when merging (#9258) (10a8e88)
- remappings: project autoremappings should respect config (#9466) (25c978a)
- remove duplicate
gas_limit
/block_gas_limit
field, declare as alias (#9406) (de5e89c) - Remove duplicated line (#707) (5d4bdb6)
- remove macos from ci-install-anvil-zksync-check (#786) (4a81422)
- remove steps after steps tracing cheatcodes are done (#9234) (213d817)
- removes avoid-contracts in favour of --skip (#702) (772d1d8)
- rename flag as_int -> as-int (#9235) (9d74675)
- reset shell colors based on the input style (#9243) (7587eb5)
- resolves issues with installing anvil-zksync with rosetta (#820) (e9562f3)
- respect
--auth
incast call
andcast estimate
(#9120) (cc8e430) - Respect priority fee and max fee per gas for broadcasting txs with scripts (#841) (4a216e9)
- restore lock version 3 (#9501) (92cd165)
- retrieve zks_getBytecodeByHash from SharedBackend when forking (#815) (b667ae0)
- reverts changes to release from upstream merge (#634) (0b24fcc)
- running script with
--broadcast
for a transaction sequence can error out due to nonce desync from rpc latency (#9096) (6f7c1f7) - sanitize input based on solc version (#690) (883034d)
- sanitize yul artifact contract names (#819) (31d3744)
- script simulation with default sender (#9042) (09824ad)
- script: correctly detect additional contracts (#9207) (513ed69)
- set user-agent header in runtime transport (#9434) (4527475)
- skip zk tests for upstream test job (#824) (74d2079)
- support EOF opcodes in
cast da
(#9070) (ad86979) - trace: check fn sigs for contract with fallbacks (#9287) (e028b92)
- traces: identify artifacts using both deployed and creation code (#9050) (fdd321b)
- update era-deps to avoid BytecodeCompression error (#636) (658ee70)
- update foundry-compilers (#743) (825279c)
- use
Debug
when formatting errors (#9251) (8660e5b) - use cross for builds (#860) (87e8c5e)
- use dedicated gas limit for each tx in inspect_batch (f6b5d08)
- use regular
println
in internal test utils to avoid interfering withcargo test
runner (#9296) (b7fe62e) - use zksync_deploy method to set correct tx params (9c60954)
- verify: cached artifacts by version (#9520) (2e56b8f)
- verify: set skip_is_verified_check: true for deploy (similar to broadcast) (dd443c6)
- vm.broadcastRawTransaction (2bc7125)
- zk: invariant testing (#581) (e2e2d57)
- cap default poll interval (#9250) (97be9b9)
- coverage: cache computed bytecode hash in CoverageCollector (#9457) (d35fee6)
- coverage: cache current HitMap, reserve when merging (#9469) (22202a7)
- coverage: improve HitMap merging and internal repr (#9456) (b7a065f)
- reduce dynamic dispatch for inspectors (#9011) (df2e91b)
Multiple breaking changes will occur so Semver can be followed as soon as Foundry 1.0 is released. They will be listed here, along with the updates needed for your projects.
If you need a stable Foundry version, we recommend using the latest pinned nightly of May 2nd, locally and on your CI.
To use the latest pinned nightly locally, use the following command:
foundryup --version nightly-e15e33a07c0920189fc336391f538c3dad53da73
To use the latest pinned nightly on your CI, modify your Foundry installation step to use an specific version:
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly-e15e33a07c0920189fc336391f538c3dad53da73
- expectEmit will now only work for the next call.
- expectCall will now only work if the call(s) are made exactly after the cheatcode is invoked.
- expectRevert will now work if the next call does revert, instead of expecting a revert during the whole test.
- This will very likely break your tests. Please make sure that all the calls you expect to revert are external, and if not, abstract them into a separate contract so that they can be called externally and the cheatcode can be used.
-m
, the deprecated alias for--mt
or--match-test
, has now been removed.- startPrank will now override the existing prank instead of erroring.
- precompiles will not be compatible with all cheatcodes.
- The difficulty and prevrandao cheatcodes now fail if not used with the correct EVM version.
- The default EVM version will be Shanghai. If you're using an EVM chain which is not compatible with EIP-3855 you need to change your EVM version. See Matt Solomon's thread for more information.
- Non-existent JSON keys are now processed correctly, and
parseJson
returns non-decodable empty bytes if they do not exist. foundry-rs/foundry#5511