{Solidity:log}
Solidity 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 moreSolidity 0.4.9 Release Announcement
Posted by Solidity Team on January 31, 2017
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 them unique. Compiler interface: Report source...
Read moreSolidity 0.4.8 Release Announcement
Posted by Solidity Team on January 13, 2017
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 possible! Download the new version of Solidity here.
Read moreSolidity 0.4.7 Release Announcement
Posted by Solidity Team on December 15, 2016
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 is now converted into 1. AST Json Converter: replace VariableDefinitionStatement...
Read moreSolidity 0.4.6 Release Announcement
Posted by Solidity Team on November 22, 2016
Bugfixes: Optimizer: Knowledge about state was not correctly cleared for JUMPDESTs Swarm hash of js compiler: bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a A big thank you to all contributors who helped make this release possible! Download the new version of Solidity here.
Read moreSolidity 0.4.5 Release Announcement
Posted by Solidity Team on November 21, 2016
This Solidity release adds function types. Use-cases include supplying callbacks for asynchronous or off-chain operations or generic library features (for example map-reduce-style programming). This release also improves the safety of enums and sending Ether to a contract constructor. Features: Function types Do-while loops: support for a do while (); control structure Inline assembly: support invalidJumpLabel as a jump label. Type checker: now more eagerly searches for a common type of an inline array with mixed types Code generator: generates a runtime error when an out-of-range...
Read moreAnalysis of Storage Corruption Bug
Posted by Christian Reitwiessner on November 9, 2016
This post was originally published on the Ethereum blog. This blog post provides an update on our findings following the discovery of the storage corruption bug last week. In summary, the bug was much less severe than we initially thought. The small number of affected contracts we found is either only exploitable by the owner, or the exploit can only cause a disruption in the user interface and not in the actual contract logic. All exploitable contracts/dapps we reviewed can be fixed...
Read moreSolidity 0.4.4 Release Announcement
Posted by Solidity Team on November 1, 2016
This is a bugfix release that fixes a storage corruption that appears when multiple variables are stored in the same slot (details). Bugfixes: Type checker: forbid signed exponential that led to an incorrect use of EXP opcode. Code generator: properly clean higher order bytes before storing in storage. A big thank you to all contributors who helped make this release possible! Download the new version of Solidity here.
Read moreSecurity Alert: Variables can be overwritten in storage
Posted by Christian Reitwiessner on November 1, 2016
This post was originally published on the Ethereum blog. Summary: In some situations, variables can overwrite other variables in storage. *Affected Solidity compiler versions: *0.1.6 to 0.4.3 (including 0.4.4 pre-release versions) Detailed description: Storage variables that are smaller than 256 bits are packed together into the same 256 bit slot if they can fit. If a value larger than what is allowed by the type is assigned to the first variable, that value will overwrite the second variable. This means if an attacker can cause...
Read more