Skip to content

Releases: foundry-rs/forge-std

v1.9.4

24 Oct 22:24
1eea5ba
Compare
Choose a tag to compare

Featured Changes

Other changes

  • Add --from option to vm.py, to generate Vm.sol from json file by @Tudmotu in #619
  • chore: add contribution guide and document scripts/vm.py by @zerosnacks in #618
  • chore: add guidance on running compatibility checks locally by @zerosnacks in #623
  • chore: bump to v1.9.4 by @mds1 in #625

New Contributors

Full Changelog: v1.9.3...v1.9.4

v1.9.3

26 Sep 15:24
8f24d6b
Compare
Choose a tag to compare

Featured Changes

  • feat: add publicKeyP256, pauseTracing, and resumeTracing cheatcodes by @grandizzy in #596
  • feat: add resetGasMetering and expectPartialRevert cheatcodes by @grandizzy in #597
  • feat: setArbitraryStorage, copyStorage, mockFunction and assumeNoRevert by @grandizzy in #602
  • feat: add keyExists and default parsing methods to stdJson and stdToml by @mds1 in #605
  • feat: add getArtifactPathBy{,Deployed}Code, parseTomlType, expect{,Partial}Revert(..., address), skip(bool, string), and random{Bool,Bytes,Int} by @DaniPopes in #610

Other Changes

New Contributors

Full Changelog: v1.9.2...v1.9.3

v1.9.2

05 Aug 16:27
1714bee
Compare
Choose a tag to compare

Featured Changes

  • fix: logMemory in safeconsole now works as expected by @Philogy in #591
  • New cheats added across various PRs
    • List of new cheats can be found by looking at this diff. Note that some cheats were re-organized in foundry-rs/foundry#8578, so not all cheats that show as added are new.
    • PRs that added them to forge-std:

Other Changes

  • fix(StdStorage): check last read slots first by @klkvr in #581

New Contributors

Full Changelog: v1.9.1...v1.9.2

v1.9.1

02 Jul 15:21
07263d1
Compare
Choose a tag to compare

Featured Changes

Other Changes

Full Changelog: v1.9.0...v1.9.1

v1.9.0

29 Jun 19:48
8948d45
Compare
Choose a tag to compare

Featured Changes

Other Changes

New Contributors

Full Changelog: v1.8.2...v1.9.0

v1.8.2

08 May 16:00
978ac6f
Compare
Choose a tag to compare

Featured Changes

Expand to see the full set of new cheats
/// Gets the environment variable `name` and returns true if it exists, else returns false.
function envExists(string calldata name) external view returns (bool result);

/// Returns true if `forge` command was executed in given context.
function isContext(ForgeContext context) external view returns (bool result);

/// Gets the current `block.blobbasefee`.
/// You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction,
/// and as a result will get optimized out by the compiler.
/// See https://github.com/foundry-rs/foundry/issues/6180
function getBlobBaseFee() external view returns (uint256 blobBaseFee);

/// Gets the gas used in the last call.
function lastCallGas() external view returns (Gas memory gas);

/// Signs `digest` with signer provided to script using the secp256k1 curve.
/// If `--sender` is provided, the signer with provided address is used, otherwise,
/// if exactly one signer is provided to the script, that signer is used.
/// Raises error if signer passed through `--sender` does not match any unlocked signers or
/// if `--sender` is not provided and not exactly one signer is passed to the script.
function sign(bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s);

/// Signs `digest` with signer provided to script using the secp256k1 curve.
/// Raises error if none of the signers passed into the script have provided address.
function sign(address signer, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s);

/// Prompts the user for a string value in the terminal.
function prompt(string calldata promptText) external returns (string memory input);

/// Prompts the user for an address in the terminal.
function promptAddress(string calldata promptText) external returns (address);

/// Prompts the user for a hidden string value in the terminal.
function promptSecret(string calldata promptText) external returns (string memory input);

/// Prompts the user for uint256 in the terminal.
function promptUint(string calldata promptText) external returns (uint256);

/// See `serializeJson`.
function serializeUintToHex(string calldata objectKey, string calldata valueKey, uint256 value)
    external
    returns (string memory json);

/// Returns the index of the first occurrence of a `key` in an `input` string.
/// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found.
/// Returns 0 in case of an empty `key`.
function indexOf(string calldata input, string calldata key) external pure returns (uint256);

/// Returns ENS namehash for provided string.
function ensNamehash(string calldata name) external pure returns (bytes32);

/// Sets `block.blobbasefee`
function blobBaseFee(uint256 newBlobBaseFee) external;

/// Sets the blobhashes in the transaction.
/// Not available on EVM versions before Cancun.
/// If used on unsupported EVM versions it will revert.
function blobhashes(bytes32[] calldata hashes) external;

/// Gets the blockhashes from the current transaction.
/// Not available on EVM versions before Cancun.
/// If used on unsupported EVM versions it will revert.
function getBlobhashes() external view returns (bytes32[] memory hashes);

/// Sets `block.prevrandao`.
/// Not available on EVM versions before Paris. Use `difficulty` instead.
/// If used on unsupported EVM versions it will revert.
function prevrandao(uint256 newPrevrandao) external;

Other Changes

New Contributors

Full Changelog: v1.8.1...v1.8.2

v1.8.1

17 Mar 21:41
bb4ceea
Compare
Choose a tag to compare

What's Changed

  • fix: add IS_TEST = true to Test by @mds1 in #523. This is a bug fix to ensure forge build --sizes continues to work as it did prior to forge-std v1.8.0

Full Changelog: v1.8.0...v1.8.1

v1.8.0

11 Mar 23:50
b6a506d
Compare
Choose a tag to compare

Featured Changes

  • feat/perf: use native assertions by @klkvr in #514.
    • This replaces forge-std Solidity code with native cheatcode assertions from Foundry, so should give a small performance boost.
    • Assertion failures now cause tests to exit early, instead of continuing with execution.
    • This also will require some visibility modifier changes to tests, as assertion methods no longer set state.
    • NOTE: If you were using the vm.expectSafeMemory cheat, you may need to now use the new vm.stopExpectSafeMemory cheat from #507. See #503 (comment) to learn more, h/t @clabby.
  • feat(stdStorage): support packed variables by @klkvr in #505. This means deal now works with USDC and other variables that reply on packed storage slots.
    • The USDC deal support works out of the box.
    • To avoid breaking changes arbitrary packed slot support is not enabled by default, and can be enabled with stdstore.enable_packed_slots().target(.....
  • feat: add TOML reading/writing cheatcodes by @zerosnacks in #518. These are analogous to their JSON equivalents.
    • NOTE: This adds file specific keyExistsJson and keyExistsToml cheats. The ambiguous keyExists currently is an alias for keyExistsJson and will be deprecated.
  • feat: native string maniupulation cheatcodes of toLowercase, toUppercase, trim, replace and split from foundry-rs/foundry#6891.
  • feat: implement interfaces in mock tokens by @arr00 in #510.

Other Changes

New Contributors

Full Changelog: v1.7.6...v1.8.0

v1.7.6

17 Jan 21:57
ae570fe
Compare
Choose a tag to compare

Featured Changes:

Other Changes

Full Changelog: v1.7.5...v1.7.6

v1.7.5

11 Jan 19:11
36c303b
Compare
Choose a tag to compare

Featured Changes

Other Changes

  • feat: automatically generate Vm.sol from cheatcodes.json by @DaniPopes in #487
  • chore: bump to v1.7.5 by @mds1 in #492

New Contributors

Full Changelog: v1.7.4...v1.7.5