Skip to content

Version 0.8.37

Latest

Choose a tag to compare

@nikola-matic nikola-matic released this 10 Sep 06:38
· 2 commits to develop since this release
f401782

The release is still in progress. You may see broken links and binaries may not yet be available from all sources.

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, Kamil Śliwak, Matheus Aguiar, Nikola Matić, Qazawat Zirak, Sayed Kaif, Shivam Kumar, blishko, clonker, cuishuang, djole, intrigus-lgtm, rodiazet, sbillig