Breaking changes
GovernorandIGovernor: ReplaceGovernorQueueNotImplementedwithGovernorProposalQueueingNotRequiredandGovernorProposalQueueingFailed. (#6582)
Deprecations
Checkpoints,DoubleEndedQueue,EnumerableMapandEnumerableSet: Deprecate theatfunction for accessing a specific index of the structure. We introduce newposfunctions to replace them. (#6494)
Changes by category
Utils
Additions
BlockHeader: Add a new library for verifying and parsing block headers. (#6395)Create3: Add a library to deploy contracts using theCREATE3mechanism, allowing the deployment address to depend only on the salt and the deployer, independently of the deployed bytecode. (#6402)ERC1967Clones: Add a library to deploy minimal ERC-1967 proxies viaCREATEorCREATE2. (#6405)ERC6372Utils: Add utility library for ERC-6372 clock mode validation, supporting block number and timestamp modes with consistency checks. (#6483)RateLimiter: Add a library that provides primitives for limiting the rate at which an action can be performed, with two complementary strategies: a refilling token bucket and a sliding window counter. (#6490)SimulateCall: Add a new call simulation utilities that allow inspecting return data from contract calls by executing them in a non-mutating, revert-based context. (#6290)
Other
Arrays: Reduce reliance on recursion to prevent stack overflow and support larger arrays. (#6324)ERC2771Forwarder: Revert the entire atomic batch if a call with value fails. (#6391)InteroperableAddress: Fix overflow in the parsing functions that caused silent misparse of large interoperable addresses. (#6372)InteroperableAddress: Reject inputs with both chain reference and addresses empty. (#6331)Memory: Add aisReserved(Slice)function that checks if the memory occupied by the slice is reserved (i.e. before the free memory pointer). (#6302)Memory: Remove theasBytes32andasPointerfunction to reduce the risk of mistakes when manipulating memory pointers. (#6348)RLP: Perform a memory copy when decodingbytesobjects containing a single byte instead of returning a reference to the input. (#6303)
Access
AccessManager: TreatsetAuthoritydifferently incanCallto prevent bypassing theupdateAuthoritysecurity using anexecute. (#6388)
Account
AccountERC7579Hooked: Do not revert if hook checks fail during the hook module uninstallation. (#6390)ERC4337Utils,IERC4337: Drop thedraft-prefix from the file names now that ERC-4337 is finalized. Imports must be updated fromaccount/utils/draft-ERC4337Utils.soltoaccount/utils/ERC4337Utils.soland frominterfaces/draft-IERC4337.soltointerfaces/IERC4337.sol. (#6581)Paymaster: Add a simple ERC-4337 paymaster implementation with minimal logic. (#6576)PaymasterERC20: Add extension ofPaymasterthat sponsors user operations against payment in ERC-20 tokens. (#6576)PaymasterERC20Guarantor: Add extension ofPaymasterERC20that enables third parties to guarantee user operations by prefunding gas costs upfront, with repayment handling for successful operations. (#6576)PaymasterERC721Owner: Add extension ofPaymasterthat approves sponsoring of user operation based on ownership of an ERC-721 NFT. (#6576)PaymasterSigner: Add extension ofPaymasterthat approves sponsoring of user operation based on a cryptographic signature verified by the paymaster. (#6576)
Cryptography
ERC7913WebAuthnVerifier: Add an internal_requireUVfunction that can be overridden to disable the UV check. (#6596)WebAuthn: Verification now returnsfalseinstead of reverting when client data contains an out-of-boundschallengeIndex. (#6329)
Cross-chain
BridgeERC20: RenameBridgeERC20toBridgeFungible. (#6328)BridgeNonFungibleandBridgeERC721: Add bridge contracts to handle crosschain movements of ERC-721 tokens. (#6259)BridgeMultiTokenandBridgeERC1155: Add bridge contracts to handle crosschain movements of ERC-1155 tokens. (#6281)CrosschainRemoteExecutor: Add a new executor contract that relays transaction from a controller on a remote chain. (#6272)
Governance
Governor: Strictly enforce the expected proposal state depending onproposalNeedsQueuingwhen callingexecute. (#6386)GovernorCrosschain: Add governor module that facilitates the execution of crosschain operations through CrosschainRemoteExecutors and ERC-7786 gateways. (#6272)
Structures
Accumulator: Check that slices being added (shiftorpush) are in the reserved space. (#6302)DoubleEndedQueue: Addvalues(deque, start, end)to return a slice of the queue as an array, mirroring the paginatedvaluesaccessor inEnumerableSet. Out-of-bound values forstartandendare clamped to the queue length. (#6522)
Token
ERC20TransferAuthorization: Add an ERC-20 extension implementing ERC-3009's transfer with authorization using parallel nonces. (#6354)ERC721Crosschain: Add an ERC-721 extension to embed an ERC-7786 based crosschain bridge directly in the token contract. (#6259)ERC1155Crosschain: Add an ERC-1155 extension to embed an ERC-7786 based crosschain bridge directly in the token contract. (#6281)ERC1155Burnable: Use_checkAuthorizedto correctly apply authorization overrides. (#6435)SafeERC20: AddtryGetDecimalshelper that safely queries a token'sdecimals()without reverting. (#6482)ERC6909ContentURI,ERC6909TokenSupplyandERC6909Metadata: Add ERC-165 detection for theIERC6909ContentURI,IERC6909TokenSupplyandIERC6909Metadatainterfaces. (#6246)