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 avoid bugs when contracts are renamed but not their constructors.
  • Some array operations got cheaper, especially the push function and initialization of memory arrays.

A big thank you to all contributors who helped make this release possible!

Download the new version of Solidity here.