• ethereum/solidity

    Release notes

    Apart from further invisible work on the Yul optimizer, the Solidity to Yul code generation, the eWasm backend and the SMT checker, this release contains two important bug fixes related to storage arrays.

    For details see https://blog.ethereum.org/2019/06/25/solidity-storage-array-bugs/

    It also contains an experimental mode that allows recovery from parser error (implemented by @rocky, funded by ConsenSys) in the hope that this might be useful for IDE developers.

    Important Bugfixes:

    • ABIEncoderV2: Fix incorrect abi encoding of storage array of data type that occupy multiple storage slots
    • Code Generator: Properly zero out higher order bits in elements of an array of negative numbers when assigning to storage and converting the type at the same time.

    Compiler Features:

    • Commandline Interface: Experimental parser error recovery via the --error-recovery commandline switch.
    • Optimizer: Add rule to simplify SUB(~0, X) to NOT(X).
    • Yul Optimizer: Make the optimizer work for all dialects of Yul including eWasm.

    Bugfixes:

    • Type Checker: Set state mutability of the function type members gas and value to pure (while their return type inherits state mutability from the function type).
    • Yul / Inline Assembly Parser: Disallow trailing commas in function call arguments.

    Build System:

    • Attempt to use stock Z3 cmake files to find Z3 and only fall back to manual discovery.
    • CMake: use imported targets for boost.
    • Emscripten build: upgrade to boost 1.70.
    • Generate a cmake error for gcc versions older than 5.0.

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

    Alex Beregszaszi, Anurag Dashputre, Bhargava Shastry, Chris Ward, Christian Parpart, Daniel Kirchner, Fabio Bonfiglio, Leonardo Alt, Mathias Baumann, mingchuan, rocky, Vedant Agarwala, Vignesh Karthikeyan, William Entriken.

    If you want to perform a source build, please only use solidity_0.5.10.tar.gz and not the zip provided by github directly.