Solidity 0.5.13 provides Istanbul-EVM compatibility (default is still set to Petersburg), is the first version to generate Ethereum-Webassembly (EWasm) binary output (not fully working yet, though), improves the developer experience by listing potential overloads when resolution fails and can output the layout of the storage variables of a contract. As with all other releases, the coverage of the SMT checker is further improved.

Language Features:

  • Allow to obtain the address of a linked library with address(LibraryName).

Compiler Features:

  • Code Generator: Use SELFBALANCE opcode for address(this).balance if using Istanbul EVM.
  • EWasm: Experimental EWasm binary output via ewasm and as documented in standard-json.
  • SMTChecker: Add break/continue support to the CHC engine.
  • SMTChecker: Support assignments to multi-dimensional arrays and mappings.
  • SMTChecker: Support inheritance and function overriding.
  • Standard JSON Interface: Output the storage layout of a contract when artifact storageLayout is requested.
  • TypeChecker: List possible candidates when overload resolution fails.

Bugfixes:

  • Code Generator: Fixed a faulty assert that would wrongly trigger for array sizes exceeding unsigned integer.
  • SMTChecker: Fix internal error when accessing indices of fixed bytes.
  • SMTChecker: Fix internal error when using function pointers as arguments.
  • SMTChecker: Fix internal error when implicitly converting string literals to fixed bytes.
  • Type Checker: Disallow constructor of the same class to be used as modifier.
  • Type Checker: Treat magic variables as unknown identifiers in inline assembly.

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

Download the new version of Solidity here.