Solidity 0.4.25 Release Announcement

This release fixed a cleanup error concerning the exponentiation operator. It is a bugfix-only release and does not contain any features. A more detailed description of the bugs fixed can be found on the ethereum blog. Note that nightly builds of Solidity currently contain changes unrelated to this bugfix release. A big thank you to all contributors who helped make this release possible! Download the new version of Solidity here.

Solidity 0.4.24 Release Announcement

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. A big thank you to all contributors who helped make this release possible! Download the new version of Solidity here.

Solidity 0.4.23 Release Announcement

Bugfix release: In the previous release, it was possible to define two constructors (one using the new constructor-keyword syntax, another one with the old syntax) for a contract, but only one of them got used in the end. We also included other bugfixes. A big thank you to all contributors who helped make this release possible! Download the new version of Solidity here.

Solidity 0.4.22 Release Announcement

This release features several major and long-awaited changes: It is now possible to access dynamic data (arrays, strings, etc) returned by function calls. You can specify error reason strings for revert and require (support by tooling is still pending). We added the global functions abi.encode(), abi.encodePacked(), abi.encodeWithSelector() and abi.encodeWithSignature() which expose the ABI encoding functions and each return a bytes value. Constructors should now be defined using constructor(uint arg1, uint arg2) { ... } to make them stand out and... [Read More]

Solidity 0.4.21 Release Announcement

We again introduced several changes that are scheduled for version 0.5.0 and can be activated using pragma experimental "v0.5.0";. In this release, this pragma does not generate a warning anymore, so you can (and should) use it in production code. In addition to that, you can now specify which EVM version the contract should be compiled for. Valid values are “homestead”, “tangerineWhistle”, “spuriousDragon”, “byzantium” (the default) and “constantinople”. Depending on this setting, different opcodes will be used in some cases.... [Read More]

Solidity 0.4.20 Release Announcement

This release includes some usability and security improvements and a further evolution of the SMT component. The var keyword has been deprecated for security reasons. Significant steps were made in writing optimisation stages for the intermediate language, which will be used by the new ABI encoder to produce highly optimised output. The main goal is to have a resulting bytecode size similar to the old ABI encoder, while having more runtime checks for a stricter decoding process. This is not... [Read More]

Solidity 0.4.19 Release Announcement

In the last weeks, we have mainly been working on big internal changes. One of them is the new ABI decoder, which is still in experimental mode, but will hopefully be production-usable soon. External contributions like allowing constant variables for array lengths and improved error messages should make your life as a programmer easier. Finally, the standard-json-io-system now allows to select certain artifacts from a contract which should speed up your code-compile-test-cycle even more! Features: Code Generator: New ABI decoder... [Read More]

Solidity 0.4.18 Release Announcement

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

Solidity 0.4.17 Release Announcement

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

Solidity 0.4.16 Release Announcement

This release introduces several new features, some of which have to be explicitly activated using pragma experimental <feature name>;. 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... [Read More]