{Solidity:log}
Solidity 0.4.18 Release Announcement
Posted by Solidity Team on October 18, 2017
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...
Read moreSolidity 0.4.17 Release Announcement
Posted by Solidity Team on September 21, 2017
As we are getting closer to the next breaking release, we want to give everyone a heads up by introducing pragma experimental "v0.5.0" which already enables some of the new safety features of the 0.5.0 release. Furthermore, this release finally checks the modifiers view (used to be named constant) and pure on functions. As a rule of thumb, use view if your function does not modify storage and pure if it does not even read any state information - but the...
Read moreSolidity 0.4.16 Release Announcement
Posted by Solidity Team on August 24, 2017
This release introduces several new features, some of which have to be explicitly activated using pragma experimental ;. We split the constant keyword for functions into pure (neither reads from nor writes to the state) and view (does not modify the state). They are not enforced yet, but will most likely make use of the the new STATIC_CALL feature after Metropolis. Furthermore, the ABI encoder was re-implemented in a much cleaner way using our new intermediate language. It can encode arbitrarily nested arrays and will...
Read moreSolidity 0.4.15 Release Announcement
Posted by Solidity Team on August 8, 2017
This is mainly a bugfix release that corrects a problem with the return value of the low-level delegatecall function and removes some invalid warning messages. Features: Type Checker: Show unimplemented function if trying to instantiate an abstract class. Bugfixes: Code Generator: .delegatecall() should always return execution outcome. Code Generator: Provide "new account gas" for low-level callcode and delegatecall. Type Checker: Constructors must be implemented if declared. Type Checker: Disallow the .gas() modifier on ecrecover, sha256 and ripemd160. Type Checker: Do not mark overloaded functions as shadowing other functions. Type...
Read moreSolidity 0.4.14 Release Announcement
Posted by Solidity Team on July 31, 2017
This release contains several new features and bugfixes and also an important security fix: The ecrecover function can be forced to return invalid data, which can be used to bypass authentication in very special circumstances. Features: C API (jsonCompiler): Export the license method. Code Generator: Optimise the fallback function, by removing a useless jump. Inline Assembly: Show useful error message if trying to access calldata variables. Inline Assembly: Support variable declaration without initial value (defaults to 0). Metadata: Only include files which were used to compile...
Read moreSolidity 0.4.13 Release Announcement
Posted by Solidity Team on July 6, 2017
This is a small bugfix release that fixes several trivial but very annoying bugs that were introduced with 0.4.12. We also deprecate some old features in preparation of the breaking release 0.5.0. Features: Syntax Checker: Deprecated throw in favour of require(), assert() and revert(). Type Checker: Warn if a local storage reference variable does not explicitly use the keyword storage. Bugfixes: Code Generator: Correctly unregister modifier variables. Compiler Interface: Only output AST if analysis was successful. Error Output: Do not omit the error type. A big thank you...
Read moreSolidity 0.4.12 Release Announcement
Posted by Solidity Team on July 3, 2017
This release introduces the AST export, solidifies inline assembly, introduces some more warnings and fixes several bugs. Manual jumps in assembly are deprecated in favour of the structured constructs switch, for and function calls also to provide better portability in the future. Features: Assembly: Add CREATE2 (EIP86), STATICCALL (EIP214), RETURNDATASIZE and RETURNDATACOPY (EIP211) instructions. Assembly: Display auxiliary data in the assembly output. Assembly: Renamed SHA3 to KECCAK256. AST: export all attributes to JSON format. C API (jsonCompiler): Use the Standard JSON I/O internally. Code Generator: Added the Whiskers...
Read moreSolidity Optimizer Bug
Posted by Martin Swende on May 3, 2017
This post was originally published on the Ethereum blog. A bug in the Solidity optimizer was reported through the Ethereum Foundation Bounty program, by Christoph Jentzsch. This bug is patched as of 2017-05-03, with the release of Solidity 0.4.11. Background The bug in question concerned how the optimizer optimizes on constants in the byte code. By "byte code constants", we mean anything which is PUSHed on the stack (not to be confused with Solidity constants). For example, if the value 0xfffffffffffffffffffffffffffffffffffffffffffffffe is PUSHed,...
Read moreSolidity 0.4.11 Release Announcement
Posted by Solidity Team on May 3, 2017
This release fixes a bug in the optimizer (more about this on the blog), introduces the standard JSON interface, adds interface contracts and implements some additional safety checks. The standard JSON interface provides a unified way to invoke the Solidity compiler in order to ease cross-platform adoption and compilation verification. Features: Implement the Standard JSON Input / Output API Support interface contracts. C API (jsonCompiler): Add the compileStandard() method to process a Standard JSON I/O. Commandline interface: Add the standard-json parameter to process a Standard JSON...
Read moreSolidity 0.4.10 Release Announcement
Posted by Solidity Team on March 15, 2017
This release is focused on stability and also introduces some new smart contract safety features: require, assert and transfer. Note that the new revert function will only be gas-efficient starting from homestead. Features: Add assert(condition), which throws if condition is false (meant for internal errors). Add require(condition), which throws if condition is false (meant for invalid input). Commandline interface: Do not overwrite files unless forced. Introduce .transfer(value) for sending Ether. Code generator: Support revert() to abort with rolling back, but not consuming all gas. Inline assembly: Support...
Read more