All remaining breaking changes planned for version 0.5.0 that can be implemented in a backwards-compatible way made it into this release. Solidity can now detect uninitialized storage pointers using control-flow analysis. It is again possible to assign multiple return values from a function to newly declared variables and the SMT checker is able to work with simple storage variables.
If you want to perform a source build, please only use solidity_0.4.24.tar.gz and not the zip provided by github directly.
Language Features:
- Code Generator: Use native shift instructions on target Constantinople.
- General: Allow multiple variables to be declared as part of a tuple assignment, e.g.
(uint a, uint b) = ...
. - General: Remove deprecated
constant
as function state modifier from documentation and tests (but still leave it as a valid feature). - Type Checker: Deprecate the
years
unit denomination and raise a warning for it (or an error as experimental 0.5.0 feature). - Type Checker: Make literals (without explicit type casting) an error for tight packing as experimental 0.5.0 feature.
- Type Checker: Warn about wildcard tuple assignments (this will turn into an error with version 0.5.0).
- Type Checker: Warn when
keccak256
,sha256
andripemd160
are not used with a single bytes argument (suggest to useabi.encodePacked(...)
). This will turn into an error with version 0.5.0.
Compiler Features:
- Build System: Update internal dependency of jsoncpp to 1.8.4, which introduces more strictness and reduces memory usage.
- Control Flow Graph: Add Control Flow Graph as analysis structure.
- Control Flow Graph: Warn about returning uninitialized storage pointers.
- Gas Estimator: Only explore paths with higher gas costs. This reduces accuracy but greatly improves the speed of gas estimation.
- Optimizer: Remove unnecessary masking of the result of known short instructions (
ADDRESS
,CALLER
,ORIGIN
andCOINBASE
). - Parser: Display nicer error messages by showing the actual tokens and not internal names.
- Parser: Use the entire location of the token instead of only its starting position as source location for parser errors.
- SMT Checker: Support state variables of integer and bool type.
Bugfixes:
- Code Generator: Fix
revert
with reason coming from a state or local string variable. - Type Checker: Show proper error when trying to
emit
a non-event. - Type Checker: Warn about empty tuple components (this will turn into an error with version 0.5.0).
- Type Checker: The ABI encoding functions are pure and thus can be used for constants.
We especially thank all our open source community contributors:
Alexander Arlt, Andreas Olofsson, Arun Kumar, daniel, David Sanders, GuessWho, Jason Cobb, Jonny Burger, Leo Arias, Luca Ban, Magicking, Matthew Ludwig, mingchuan, nisdas, njwest, Omar Boukli-Hacene, Rafiudeen Chozhan Kumarasamy, sledrho, Wenbin Wu