Version 0.5.9
As in previous releases, we spent most of the time making Solidity future-proof by further working on the Yul optimizer, the Solidity to Yul (and eWasm) translator and the SMT Checker.
Code generated from Solidity now always includes the version number in the CBOR metadata so that it becomes possible to quickly assess whether a contract might be affected by a compiler bug or not.
Language Features:
- Inline Assembly: Revert change introduced in 0.5.7: The
callvalue()
instruction does not requirepayable
anymore. - Static Analyzer: Disallow libraries calling themselves externally.
Compiler Features:
- Assembler: Encode the compiler version in the deployed bytecode.
- Code Generator: Fix handling of structs of dynamic size as constructor parameters.
- Inline Assembly: Disallow the combination of
msize()
and the Yul optimizer. - Metadata: Add IPFS hashes of source files.
- Optimizer: Add rule to simplify SHL/SHR combinations.
- Optimizer: Add rules for multiplication and division by left-shifted one.
- SMTChecker: Support inherited state variables.
- SMTChecker: Support tuples and function calls with multiple return values.
- SMTChecker: Support
delete
. - SMTChecker: Inline external function calls to
this
. - Yul Optimizer: Simplify single-run
for
loops toif
statements. - Yul Optimizer: Optimize representation of numbers.
- Yul Optimizer: Do not inline recursive functions.
- Yul Optimizer: Do not remove instructions that affect
msize()
ifmsize()
is used.
Bugfixes:
- Code Generator: Explicitly turn uninitialized internal function pointers into invalid functions when loaded from storage.
- Code Generator: Fix assertion failure when assigning structs containing array of mapping.
- Compiler Internals: Reset the Yul string repository before each compilation, freeing up memory.
- SMTChecker: Fix bad cast in base constructor modifier.
- SMTChecker: Fix internal error when visiting state variable inherited from base class.
- SMTChecker: Fix internal error in fixed point operations.
- SMTChecker: Fix internal error in assignment to unsupported type.
- SMTChecker: Fix internal error in branching when inlining function calls that modify local variables.
We especially thank all the contributors that made this release possible:
Alex Beregszaszi, Andrey Bronin, asymmetric, Bhargava Shastry, Christian Parpart, Chris Ward, Daniel Kirchner, Erik Kundt, Guy Lando, Isaac Ibiapina, Jorropo, Leonardo Alt, Mathias Baumann, mingchuan, Rocky, Vedant Agarwala.
If you want to perform a source build, please only use solidity_0.5.9.tar.gz and not the zip provided by github directly.