This release mainly fixes bugs in the optimizer and in the experimental ABI encoder. For details about the bug, please see the official announcement.

Furthermore, this release also allows you to use Yul as a language option (instead of “Solidity”) in the standard-json-interface.

Important Bugfixes:

  • ABIEncoderV2: Fix bugs related to loading short value types from storage when encoding an array or struct from storage.
  • ABIEncoderV2: Fix buffer overflow problem when encoding packed array from storage.
  • Optimizer: Fix wrong ordering of arguments in byte optimization rule for constants.

Language Features:

  • Function calls with named arguments now work with overloaded functions.

Compiler Features:

  • Inline Assembly: Issue error when using callvalue() inside nonpayable function (in the same way that msg.value already does).
  • Standard JSON Interface: Support “Yul” as input language.
  • SMTChecker: Show callstack together with model if applicable.
  • SMTChecker: Support modifiers.
  • Yul Optimizer: Enable stack allocation optimization by default if Yul optimizer is active (disable in yulDetails).

Bugfixes:

  • Code Generator: Defensively pad memory for type(Contract).name to multiples of 32.
  • Type System: Detect and disallow internal function pointers as parameters for public/external library functions, even when they are nested/wrapped in structs, arrays or other types.
  • Yul Optimizer: Properly determine whether a variable can be eliminated during stack compression pass.
  • Yul / Inline Assembly Parser: Disallow more than one case statement with the same label inside a switch based on the label’s integer value.

Build System:

  • Install scripts: Fix boost repository URL for CentOS 6.
  • Soltest: Fix hex string update in soltest.

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

Download the new version of Solidity here.