This release improves the usability of interfaces, fixes some bugs, extends the SMT checker and provides an early preview of the Yul optimizer.
If you want to perform a source build, please only use solidity_0.5.1.tar.gz and not the zip provided by github directly.
Language Features:
- Allow mapping type for parameters and return variables of public and external library functions.
- Allow public functions to override external functions.
Compiler Features:
- Code generator: Do not perform redundant double cleanup on unsigned integers when loading from calldata.
- Commandline interface: Experimental
--optimize
option for assembly mode (--strict-assembly
and--yul
). - SMTChecker: SMTLib2 queries and responses passed via standard JSON compiler interface.
- SMTChecker: Support
msg
,tx
andblock
member variables. - SMTChecker: Support
gasleft()
andblockhash()
functions. - SMTChecker: Support internal bound function calls.
- Yul: Support Yul objects in
--assemble
,--strict-assembly
and--yul
commandline options.
Bugfixes:
- Assembly output: Do not mix in/out jump annotations with arguments.
- Commandline interface: Fix crash when using
--ast
on empty runtime code. - Code Generator: Annotate jump from calldata decoder to function as "jump in".
- Code Generator: Fix internal error related to state variables of function type access via base contract name.
- Optimizer: Fix nondeterminism bug related to the boost version and constants representation. The bug only resulted in less optimal but still correct code because the generated routine is always verified to be correct.
- Type Checker: Properly detect different return types when overriding an external interface function with a public contract function.
- Type Checker: Disallow struct return types for getters of public state variables unless the new ABI encoder is active.
- Type Checker: Fix internal compiler error when a field of a struct used as a parameter in a function type has a non-existent type.
- Type Checker: Disallow functions
sha3
andsuicide
also without a function call. - Type Checker: Fix internal compiler error with
super
when base contract function is not implemented. - Type Checker: Fixed internal error when trying to create abstract contract in some cases.
- Type Checker: Fixed internal error related to double declaration of events.
- Type Checker: Disallow inline arrays of mapping type.
- Type Checker: Consider abstract function to be implemented by public state variable.
Build System:
- CMake: LLL is not built anymore by default. Must configure it with CMake as
-DLLL=ON
. - Docker: Includes both Scratch and Alpine images.
- Emscripten: Upgrade to Emscripten SDK 1.37.21 and boost 1.67.
Solc-Js:
- Fix handling of standard-json in the commandline executable.
- Remove support of nodejs 4.
We especially thank all the contributors that made this release possible:
Albert, Alex Beregszaszi, Anurag Dashputre, Chris Purta, Christian Parpart, Chris Ward, Daniel Kirchner, David Lozano Jarque, Erik Kundt, hydai, Javier Tarazaga, Justin Wilson, Lazaridis, Leonardo Alt, liangdzou, mordax, Robert Chung, William Entriken, Yet another codejunkie