This is a small bugfix release that also includes loop support for the SMT solver and some improvements to the Yul optimizer. The reason for the smaller feature set is that we are mainly working on the upcoming 0.6.0 release.

Language Features:

  • Type Checker: Allow assignment to external function arguments except for reference types.

Compiler Features:

  • ABI Output: Change sorting order of functions from selector to kind, name.
  • Optimizer: Add rule that replaces the BYTE opcode by 0 if the first argument is larger than 31.
  • SMTChecker: Add loop support to the CHC engine.
  • Yul Optimizer: Take side-effect-freeness of user-defined functions into account.
  • Yul Optimizer: Remove redundant mload/sload operations.

Bugfixes:

  • Code Generator: Fix internal error when popping a dynamic storage array of mappings.
  • Name Resolver: Fix wrong source location when warning on shadowed aliases in import declarations.
  • Scanner: Fix multi-line natspec comment parsing with triple slashes when file is encoded with CRLF instead of LF.
  • Type System: Fix arrays of recursive structs.
  • Yul Optimizer: Fix reordering bug in connection with shifted one and mul/div-instructions in for loop conditions.

A big thank you to all contributors who helped make this release possible!

Download the new version of Solidity here.