This release adds further backwards-incompatible security measures enabled via pragma experimental "v0.5.0";
and contains another important feature: You can now select to compile only certain contracts using the outputSelection
field of the standard-json-io compiler interface, which should speed up tools like truffle tremendously.
There are also two important bug fixes: One was an oversight in the way bytes
variables are allocated in memory and can reduce the memory requirements 32-fold. The second is a security fix: In extremely specific circumstances, it can happen that a regular function is called instead of the fallback function for an Ether transfer without data. These circumstances are: The function has to have a zero signature (one out of 4294967296), it has to be payable, the contract cannot have more than five (external) functions and it cannot have a fallback function.
Features:
- Code Generator: Always use all available gas for calls as experimental 0.5.0 feature (previously, some amount was retained in order to work in pre-Tangerine-Whistle EVM versions)
- Parser: Better error message for unexpected trailing comma in parameter lists.
- Standard JSON: Support the
outputSelection
field for selective compilation of supplied sources. - Syntax Checker: Unary
+
is now a syntax error as experimental 0.5.0 feature. - Type Checker: Disallow non-pure constant state variables as experimental 0.5.0 feature.
- Type Checker: Do not add members of
address
to contracts as experimental 0.5.0 feature. - Type Checker: Force interface functions to be external as experimental 0.5.0 feature.
- Type Checker: Require
storage
ormemory
keyword for local variables as experimental 0.5.0 feature.
Bugfixes:
- Code Generator: Allocate one byte per memory byte array element instead of 32.
- Code Generator: Do not accept data with less than four bytes (truncated function signature) for regular function calls - fallback function is invoked instead.
- Optimizer: Remove unused stack computation results.
- Parser: Fix source location of VariableDeclarationStatement.
- Type Checker: Allow
gas
in view functions. - Type Checker: Do not mark event parameters as shadowing state variables.
- Type Checker: Prevent duplicate event declarations.
- Type Checker: Properly check array length and don’t rely on an assertion in code generation.
- Type Checker: Properly support overwriting members inherited from
address
in a contract (such asbalance
,transfer
, etc.) - Type Checker: Validate each number literal in tuple expressions even if they are not assigned from.
A big thank you to all contributors who helped make this release possible!
Download the new version of Solidity here.