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)
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 encode arbitrarily nested arrays and will also be able to encode structs starting from the next release. Please try it out using
pragma experimental ABIEncoderV2; and check if you have any issues with the encoder. It currently generates larger code than the old encoder, but we hope to fix that soon.
Finally, solc now include experimental support for automated overflow and assertion checking at compile-time using the SMT solver Z3. It is active if you use
pragma experimental SMTChecker; and if solc was compiled with Z3 support. The latter is currently only the case for the PPA builds (or if you build from source and have libz3-dev in your system), but we also have a solution in the pipeline that will make it work for solc-js (and thus remix).
- ABI JSON: Include new field
- Analyzer: Experimental partial support for Z3 SMT checker (“SMTChecker”).
- Build System: Shared libraries (
liblll) are no longer produced during the build process.
- Code generator: Experimental new implementation of ABI encoder that can encode arbitrarily nested arrays (“ABIEncoderV2”)
- Metadata: Store experimental flag in metadata CBOR.
- Parser: Display previous visibility specifier in error if multiple are found.
- Parser: Introduce
viewkeyword for functions,
constantremains an alias for
viewand pureness is not enforced yet, so use with care.
- Static Analyzer: Warn about large storage structures.
- Syntax Checker: Support
pragma experimental <feature>;to turn on experimental features.
- Type Checker: More detailed error message for invalid overrides.
- Type Checker: Warn about shifting a literal.
- Assembly Parser: Be more strict about number literals.
- Assembly Parser: Limit maximum recursion depth.
- Parser: Enforce commas between array and tuple elements.
- Parser: Limit maximum recursion depth.
- Type Checker: Crash fix related to
- Type Checker: Disallow constructors in libraries.
- Type Checker: Reject the creation of interface contracts using the
A big thank you to all contributors who helped make this release possible!
Download the new version of Solidity here.