github foundry-rs/foundry stable

latest release: nightly-8a08a3a92b0c842db2f254983cc3bd179300ad46
13 hours ago

Features

  • feat(forge): verify contracts created inside a call (#2840)

Fixes

  • fix(evm): set blob_excess_gas_and_price (#9186)

Other

  • chore: Update cli docs with forge init (#193)
  • fix(forge): only cleanup dirs if they exists (#194)
  • chore(deps): bump ethers (#195)
  • chore: remove integration tests (#196)
  • chore(deps): bump ethers (#206)
  • feat(cast): add avalanche and fuji genesis hashes (#210)
  • fix(cli): replace underscore for hyphen on wallet cli args (#212)
  • fix(tests): force install solidity 0.8.19 through svm (#5221)
  • chore: name std threads (#5710)
  • Multichain Scripts: Deploy each sequence of transactions sequentially instead of in parallel. (#6271)
  • fix(coverage): proper instruction for 1st branch anchor (#8512)
  • feat(cheatcodes): vm.getScriptWallets() (#9052)
  • fix: support EOF opcodes in cast da (#9070)
  • feat(forge): allow passing value to --optimize (#9071)
  • feat(forge doc): include @Custom natspec (#9075)
  • chore: add alias (#9082)
  • feat: make --gas-report JSON output compatible (#9063)
  • feat: update to Soldeer v0.4.1 (#9092)
  • chore(deps): weekly cargo update (#9100)
  • feat(cheatcodes): vm.rememberKeys (#9087)
  • refactor(cheatcodes): mv ScriptWallets into Cheatcode (#9106)
  • fix: running script with --broadcast for a transaction sequence can error out due to nonce desync from rpc latency (#9096)
  • fix(fmt): do not panic when no named arg (#9114)
  • fix(traces): identify artifacts using both deployed and creation code (#9050)
  • chore(cheatcodes): wallet nits (#9118)
  • refactor(script): mv ScriptSequence to new crate (#9098)
  • fix: respect --auth in cast call and cast estimate (#9120)
  • fix(cheatcodes): convert fixed bytes to bytes in vm.rpc tuple result (#9117)
  • feat(forge): add compiler subcommand (#7909)
  • feat(forge): add max supported EVM version in compiler -vv (#9129)
  • chore: bump foundry-compilers to include Vyper fix (#9133)
  • fix(cast): do not strip 0x / hex decode message before EIP-191 hashing (#9130)
  • feat(anvil): wallet_ namespace + inject P256BatchDelegation + executor (#9110)
  • fix: dont set state root (#9134)
  • chore: alias wallet_sendTransaction (#9137)
  • feat(forge build): add initcode size check (#9116)
  • docs: update CLI help for init code size check (#9145)
  • chore(deps): weekly cargo update (#9149)
  • feat(forge build): --watch flag now watches foundry.toml config… (#9148)
  • fix: script simulation with default sender (#9042)
  • feat(cast): add json flag in cast wallet new-mnemonic (#9139)
  • fix(anvil): use header.number not best_number (#9151)
  • fix(anvil): arb fork mining (#9153)
  • fix(cheatcodes): improve fork cheatcodes messages (#9141)
  • feat(anvil): support mining with same block.timestamp (#9160)
  • chore: format chained error for EvmError (#9169)
  • Add debug file dump (#7375)
  • chore(deps): bumps alloy, revm, fork-db (#9150)
  • feat: add foundry_common::shell to unify log behavior (#9109)
  • chore: refactor debugger dump code (#9170)
  • fix(anvil): Apply state overrides in debug_traceCall (#9172)
  • feat(fmt): add all_params config - same as all but split single param too (#9176)
  • fix(chisel): on edit fail command only if execution failed (#9155)
  • chore: cleanup shell module (#9178)
  • chore: add warning on persisted invariant scenario failure (#9171)
  • feat(invariant): add basic metrics report (#9158)
  • fix: add back silent option in Anvil's NodeConfig (#9181)
  • chore(cast): fix storage_layout test due to request timeouts w/ Optimism explorer (#9182)
  • chore(deps): bump alloy + revm + fork-db (#9183)
  • fix(evm): detect blob tx and set evm version (#9185)
  • chore(cast): enforce common::shell for cast binary (#9174)
  • fix(cli): etherlink needs eth_estimateGas for gas calculation (#9188)
  • fix(fmt): multiline single param only if func definition is multiline for all_params (#9187)
  • chore(chisel): enforce common::shell for chisel binary (#9177)
  • feat(cast): add flag equivalents of parseUnits, formatUnits (#9165)
  • feat(cast): add --rpc-timeout option (#9044)
  • chore(tests): bump forge-std version (#9193)
  • fix(anvil): tag newly created legacy transactions on shadow fork as Some(0) (0x0) rather than None (#9195)
  • chore: silence logger if silent (#9199)
  • test: add test for rlp data (#9200)
  • fix(anvil): correctly set hardfork-specific block fields (#9202)
  • chore(deps): weekly cargo update (#9206)
  • fix: include withdrawals root in response (#9208)
  • fix(script): correctly detect additional contracts (#9207)
  • fix(cast block): ensure to print all fields (#9209)
  • feat(cast): add --int flag to from-rlp (#9210)
  • chore: try from eyre:Result for TraceResult (display chained error) (#9212)
  • feat(forge install): add @tag= @branch= @rev= specific refs (#9214)
  • feat: make --gas-report w/ --json output one JSON blob and add contract_path to output (#9216)
  • fix(forge create): set skip_is_verified_check: true (#9222)
  • feat(cast) add creation-code method [#8973] (#9029)
  • refactor: simplify merge_db_account_data (#9223)
  • test: update test (#9226)
  • style: smol refactor (#9224)
  • fix: allow_hyphen_values for constructor args (#9225)
  • chore(meta): update SECURITY.md (#9230)
  • fix(--gas-report): add back signatures, even if empty, avoid nesting multiple selectors (#9229)
  • feat(cheatcodes): access broadcast artifacts (#9107)
  • fix(anvil): set storage.best_number correctly (#9215)
  • feat(--gas-report): add option to include tests (#9232)
  • fix: remove steps after steps tracing cheatcodes are done (#9234)
  • fix: rename flag as_int -> as-int (#9235)
  • feat(cast): add string-decode to decode string (#9237)
  • chore: avoid unnecessary mut (#9238)
  • fix(anvil): on anvil_mine jump to next timestamp before mine new block (#9241)
  • fix(deps): update alloy-chains to fix Celo explorer API URL (#9242)
  • fix: reset shell colors based on the input style (#9243)
  • fix: avoid deadlock in nested shell calls (#9245)
  • anvil: Correctly set HF fields for Genesis block (#9248)
  • perf: cap default poll interval (#9250)
  • fix: better error handling when waiting for receipt (#9253)
  • fix: use Debug when formatting errors (#9251)
  • chore(deps): weekly cargo update (#9254)
  • fix(forge doc): display custom natspec tag (#9257)
  • chore: do not print anvil launch info if silent (#9259)
  • feat: add global --json flag (#9244)
  • chore(forge): enforce common::shell for forge crate (#9231)
  • fix(remappings): check if remapping to add starts with existing remapping name (#9246)
  • chore: ignore flaky rostock chain test (#9261)
  • fix(anvil): set auto-unlock an alias of auto-impersonate (#9256)
  • chore(deps): prefer soft pinning on minor version for dependencies (#9269)
  • Revert "fix(remappings): check if remapping to add starts with existing remapping name (#9246)" (#9274)
  • fix(forge): fix stack overflow when the lib path is absolute. (#9190)
  • fix(remappings): ignore remappings of root proj dirs when merging (#9258)
  • feat(cheatcodes): mockCall with bytes4 data (#9267)
  • feat: update to Soldeer v0.5.0 (#9281)
  • fix(forge test): record only test fns in test failures (#9286)
  • fix(coverage): do not report empty constructors, enable reports for receive (#9288)
  • Make fs read cheatcodes views (#9289)
  • chore: fix clippy (#9291)
  • feat(anvil): add anvil_getIntervalMining API (#9290)
  • chore(common::shell): finish implementation + enforce in clippy (#9268)
  • chore: typo anvil_getIntervalMing -> anvil_getIntervalMining (#9292)
  • chore(deps): weekly cargo update (#9293)
  • fix(trace): properly report fallback() fn (#9287)
  • fix: use regular println in internal test utils to avoid interfering with cargo test runner (#9296)
  • feat(cast run): add --etherscan-api-key to resolve contract names (#9295)
  • feat(cast): add artifact method (#9249)
  • fix(fork): set block blob_excess_gas_and_price only if excess_blob_gas header is Some (#9298)
  • feat(common::shell): add global verbosity level (-vvv) flag replacing --verbose (#9273)
  • chore: do not trim decoded generic custom error (#9309)
  • fix(forge): always report deployment size in gas reports (#9308)
  • fix(ci): update cargo deny (#9314)
  • feat: Update to soldeer 0.5.1 (#9315)
  • chore: update soldeer-core dependency (#9316)
  • fix(forge eip712): handle recursive types (#9319)
  • feat(forge): allow --verifier custom option (#9311)
  • feat(cheatcodes): add delegatecall to pranking (#8863)
  • feat(forge build): err if no source file in specified paths (#9329)
  • feat(forge build): add --sizes and --names JSON compatibility (#9321)
  • chore: fix clippy (#9333)
  • test: enhance tests (#9334)
  • chore(deps): weekly cargo update (#9336)
  • chore: fix getArtifactPath flaky test (#9339)
  • fix(cast storage): respect --json for layout (#9332)
  • feat(config): set default evm version to cancun (#9131)
  • chore: update test values to cancun (#9344)
  • feat(forge build -vvvvv): If verbosity level is 5 or higher show files to compile (#9325)
  • chore: add some more debugging to forge bind (#9345)
  • feat: compilation restrictions (#8668)
  • fix: identification of contracts in scripts (#9346)
  • fix(coverage): allow ir-minimum for versions < 0.8.5 (#9341)
  • chore: don't color error message in red (#9352)
  • chore: remove redundant 'setup failed' in setup errors (#9354)
  • chore: make environment variable error nicer (#9353)
  • test: update external forge-std (#9356)
  • chore(ci): archive endpoints config (#9348)
  • chore: pick provider urls by next index (#9359)
  • fix: correct shell substitution in installer (#9351)
  • chore: TestSetup cleanup (#9355)
  • chore(ci): proper read of archive nodes (#9362)
  • chore(test-utils): simplify next calls (#9361)
  • Support EIP-7702 Delegations in Forge (#9236)
  • chore(deps): bump foundry-compilers 0.12.2 (#9364)
  • feat: rename ShellOtps to GlobalOpts (#9313)
  • chore(deps): bump foundry-compilers 0.12.3 (#9368)
  • chore(deps): bump alloy 0.6.4 (#9280)
  • feat(anvil): --cache-path (#9343)
  • chore: rm flaky cache-path test (#9372)
  • feat: add global -j, --threads (#9367)
  • feat: Update to soldeer 0.5.2 (#9373)
  • fix: vm.broadcastRawTransaction (#9378)
  • fix(forge test): install missing dependencies before creating Project (#9379)
  • chore(chisel): replace solang with solar in SolidityHelper (#9376)
  • fix(chisel): uint/int full word print (#9381)
  • fix: flaky test_broadcast_raw_create2_deployer (#9383)
  • refactor(forge): rewrite geiger with Solar (#9382)
  • feat(forge, cast): add cast --with_local_artifacts/forge selectors cache to trace with local artifacts (#7359)
  • chore: use has_library_ancestor (#9387)
  • chore(evm/traces): replace solang with Solar (#9386)
  • chore(deps): weekly cargo update (#9392)
  • fix: bail incomplete bytecode sequence disassemble (#9390)
  • fix(forge create): install missing deps if any (#9401)
  • feat(forge): show additional details of contract to verify (#9403)
  • fix: remove duplicate gas_limit / block_gas_limit field, declare as alias (#9406)
  • fix(cheatcodes): use calldata in attachDelegation (#9407)
  • chore(cheatcodes): enforce calldata in declaration (#9408)
  • feat: remove ethers (#8826)
  • Revert "feat: remove ethers" (#9411)
  • fix: forge script should adhere to --json flag (#9404)
  • feat(cast): add decode-event sig data (#9413)
  • chore: fix 404 status URL (#9417)
  • feat: add --broadcast flag to forge create, default to dry run mode (#9420)
  • feat(traces): show state changes in cast run and forge test on -vvvvv (#9013)
  • feat(cast): decode external lib sigs from cached selectors (#9399)
  • feat: rewrite inline config using figment (#9414)
  • chore: rename the arg name of EvmOpts from evm_opts to evm_args (#9424)
  • Fix conditional syntax issue in macOS libusb check (#9384)
  • feat: add timeouts to fuzz testing (#9394)
  • feat(cast): decode-error with sig, local cache and openchain api (#9428)
  • feat(cast): decode-event with local and openchain API (#9431)
  • chore: use alloy-chains' is_arbitrum (#9432)
  • feat: rpc_headers in cast and config (#9429)
  • fix: set user-agent header in runtime transport (#9434)
  • feat(script): support custom create2 deployer (#9278)
  • fix(coverage): clean ups, use normalized source code for locations (#9438)
  • chore(deps): weekly cargo update (#9440)
  • fix(coverage): special functions have no name (#9441)
  • feat(cast): allow some more stdin inputs (#9442)
  • chore(config): remove RootPath (#9448)
  • chore(config): move providers into module (#9449)
  • chore(deps): alloy 0.7 (#9447)
  • feat: allow any config to be defined inline (#9430)
  • chore(deps): bump foundry-compilers 0.12.4 (#9455)
  • perf(coverage): improve HitMap merging and internal repr (#9456)
  • perf(coverage): cache computed bytecode hash in CoverageCollector (#9457)
  • fix(coverage): also ignore empty fallbacks and receives (#9459)
  • fix/feat(coverage): add --lcov-version (#9462)
  • chore: set --lcov-version default to 1 (#9463)
  • fix(anvil): impl maybe_as_full_db for ForkedDatabase (#9465)
  • fix(coverage): assert should not be branch (#9467)
  • fix(forge): run dep.has_branch in correct dir (#9453)
  • chore: fix test isolate (#9468)
  • feat: bump MSRV to 1.83 (#9473)
  • perf(coverage): cache current HitMap, reserve when merging (#9469)
  • test: shuffle archive URLs (#9472)
  • docs: CoverageCollector comments (#9474)
  • fix(cli): handle id and named chain_id's correctly (#9480)
  • feat: dedup error messages (#9481)
  • chore(anvil): convert panics into errors (#9471)
  • fix(remappings): project autoremappings should respect config (#9466)
  • refactor: adapt to CompilerContract trait type (#9423)
  • chore(deps): bump foundry-compilers 0.12.6 (#9490)
  • chore: rename alphanet to odyssey (#9491)
  • feat: add JSON compatibility for forge test --summary +/ --detailed + apply consistent table styling (#9485)
  • fix: force prevrandao on Moonbeam networks (#9489)
  • chore(cast): upgrade evmole to 0.6.1, use new style API (#9493)
  • chore: bump compilers 0.12.7 (#9498)
  • chore(deps): bump breaking deps (#9502)
  • chore: improve Retry usage and warning (#9503)
  • fix: restore lock version 3 (#9501)
  • chore(deps): remove async_recursion (#9500)
  • feat(cheatcodes): count assertion for expectRevert (#9484)
  • feat(cheatcodes): add vm.getStateDiff to get state diffs as string (#9435)
  • fix(verify): cached artifacts by version (#9520)
  • ci: move deny to test (#9524)
  • chore: bump alloy (#9496)
  • fix(cheatcodes): clear orderings together with trace steps on debug trace stop (#9529)
  • feat(cheatcodes): skip test suite in setup (#9532)
  • fix: mark flag incompatibility (#9530)
  • chore(deps): weekly cargo update (#9533)
  • fix(fuzz): exclude exernal libraries addresses from fuzz inputs (#9527)
  • Update incorrect documentation in the READ.me (#9538)
  • fix(anvil): set best_number to state.block.number if greater (#9543)
  • fix(cast): reset env.tx.caller for impersonated txs (#9544)
  • chore: Add GH attestation for foundry binaries (#9546)
  • fix(release): allow contents write permission, run attestation after release created (#9550)
  • chore: bump compilers (#9554)
  • fix: account for impersonated tx in configure_tx_env (#9553)
  • fix: read rpc config when using fork cheatcodes (#9547)
  • chore(deps): weekly cargo update (#9560)
  • feat(cast): add support for beacon proxies in cast impl (#9567)
  • feat(cheatcodes): count assertion for expectEmit (#9405)
  • fix(release): check env.IS_NIGHTLY as string (#9568)
  • Run release workflow on stable tag push (#9575)

Don't miss a new foundry release

NewReleases is sending notifications on new releases.