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.