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 <block> while (<expr>); 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 value is converted into an enum type.

Bugfixes:

  • Inline assembly: calculate stack height warning correctly even when local variables are used.
  • Code generator: check for value transfer in non-payable constructors.
  • Parser: disallow empty enum definitions.
  • Type checker: disallow conversion between different enum types.
  • Interface JSON: do not include trailing new line.

Swarm hash of js compiler: bzzr://de94c41f727124a5b02bd1db087e6bcba19a682c5d89bf3cdaa650e9fdd08403

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

Download the new version of Solidity here.