Solidity Version 0.8.37

Release

Version
v0.8.37
Repository
ethereum/solidity

Release notes

We are excited to announce the release of the Solidity Compiler v0.8.37!

This release fixes a substantial amount of bugs, two of them classified as important security fixes. In addition, it introduces further support for the upcoming Glamsterdam EVM fork, as well as some performance optimizations, both in the default and the via IR pipelines.

Changelog

Important Bugfixes:

• Code Generator: Fix delete applied to an element of a bytes array in memory zeroing the whole 32-byte word starting at the element's location instead of only the element's byte.

• Yul IR Code Generation: Encode custom error named parameters in declaration order instead of call-site order when used from a require function.

• Yul Optimizer: Fix too few memory slots being reserved when moving local variables to memory to work around stack-too-deep errors in code containing mutually recursive functions. Variables of two functions that can be active at the same time could be assigned the same slot, silently overwriting one of them while it was still in use.

Language Features:

• Custom Storage Layout: Allow signed positive expressions.

• EVM: Support block.slotnum to access the beacon chain slot number of the current block, available since the Amsterdam EVM version (EIP-7843).

• Yul: Introduce builtin slotnum() for the SLOTNUM opcode, available since the Amsterdam EVM version (EIP-7843).

Compiler Features:

• Commandline Interface: Remove support for the experimental Language Server Protocol (LSP) mode.

• EVM: Deprecate support for "constantinople", "petersburg", "istanbul" and "berlin" EVM versions.

• Evmasm Optimizer: Improve performance of block deduplicator.

• General: Improve performance throughout the compiler using Boost's flat versions of unordered set and map.

• General: Remove support for the experimental Generic Solidity prototype (pragma experimental solidity).

• General: Replace the current greedy stack shuffler in the experimental SSA CFG pipeline with a planning one.

• SMTChecker: Emit a deprecation warning for the BMC engine.

• SMTChecker: Support block.slotnum.

• Yul Optimizer: LoopInvariantCodeMotion can now move expressions depending on function parameters out of loops.

• Yul Optimizer: UnusedStoreEliminator can now recognize redundant memory and storage operations whose start offset or length is a function parameter.

• Yul Optimizer: Remove the ineffective elimination of unused returndatacopy() operations in simple cases from UnusedStoreEliminator.

Bugfixes:

• Code Generator: Fix constants read in both checked and unchecked contexts within one contract getting the checked/unchecked semantics of whichever read was generated first via IR, which could remove a required overflow panic or introduce a spurious one.

• Code Generator: Fix ICE on parenthesized custom error construction in require statement.

• Code Generator: Fix uninitialized internal function pointers being read from a packed storage slot with the wrong value when a subsequent variable in the slot holds a non-zero value.

• Commandline Interface: Reject --model-checker-ext-calls in unsupported input modes instead of silently ignoring it.

• Commandline Interface: Report proper error instead of ICE on non-hex mixed-case address value given via --libraries.

• Standard JSON Interface: Fix the entire output being replaced by a JSONError ("Error writing output JSON.") when an error message quotes a long source line and truncating it splits a multi-byte character.

• Type Checker: Report an unimplemented feature error instead of ICE when a variable of a fixed point type is accessed in inline assembly.

• Yul Optimizer: Fix incorrect removal of returndatacopy() operations referencing a stale result of returndatasize().

Build System:

• Update minimum version requirement of Boost to 1.83.0 for Windows build. This matches the minimum version for other systems.

We would especially like to thank all the contributors that made this release possible:

Kaan Uzdoğan…

Full release on GitHub ↗

Release Polkadot SDK

Polkadot stable2606-3

This release contains the changes from polkadot-stable2606-2 to polkadot-stable2606-3. ℹ️ Please note: this is a patch release for the latest stable version stable2606. If your nodes...

Release Agave (Solana validator)

Agave (Solana validator) Release v4.5.0-alpha.2

This is a pre-release for testing only. Do not deploy to mainnet, testnet, or any production host. https://github.com/anza-xyz/agave/blob/master/CHANGELOG.md#edge-channel What's...

Release Hardhat

Hardhat v3.19.0

This release expands our support for the upcoming Amsterdam hardfork, including: EIP-7976, EIP-7981, EIP-7997, EIP-8024 and EIP-8037. In particular, EIP-8037's separation of execution...

Release Geth

Geth Protein Sludge Pack (v1.17.8)

This is a security-focused release, fixing several DoS risk issues ❤️‍🩹 . Note most of the the fixes related to bugs which only become possible after the activation of the Amsterdam...