Solidity 0.4.15 Release Announcement

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... [Read More]

Solidity 0.4.14 Release Announcement

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... [Read More]

Solidity 0.4.13 Release Announcement

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... [Read More]

Solidity 0.4.12 Release Announcement

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... [Read More]

Solidity Optimizer Bug

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. [Read More]

Solidity 0.4.11 Release Announcement

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... [Read More]

Solidity 0.4.10 Release Announcement

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... [Read More]

Solidity 0.4.9 Release Announcement

This release fixes quite some bugs and also adds several new features. Things to look out for: To disambiguate contracts and libraries of the same name in different files, everything is now prefixed by “filename:”. This applies to the compiler output, the linker input and other things. Internal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump. Features: Compiler interface: Contracts and libraries can be referenced with a file: prefix to make... [Read More]

Solidity 0.4.8 Release Announcement

Features: Optimiser: Performance improvements. Output: Print assembly in new standardized Solidity assembly format. Bugfixes: Remappings: Prefer longer context over longer prefix. Type checker, code generator: enable access to events of base contracts’ names. Imports: import ".dir/a" is not a relative path. Relative paths begin with directory . or ... Type checker: disallow inheritances of different kinds (e.g. a function and a modifier) of members of the same name A big thank you to all contributors who helped make this release... [Read More]

Solidity 0.4.7 Release Announcement

Features: Bitshift operators. Type checker: Warn when msg.value is used in non-payable function. Code generator: Inject the Swarm hash of a metadata file into the bytecode. Code generator: Replace expensive memcpy precompile by simple assembly loop. Optimizer: Some dead code elimination. Bugfixes: Code generator: throw if calling the identity precompile failed during memory (array) copying. Type checker: string literals that are not valid UTF-8 cannot be converted to string type Code generator: any non-zero value given as a boolean argument... [Read More]