Version 0.5.11
This release fixes a bug related to calldata structs in ABIEncoderV2 and calldata decoding in V1. Several internal bugs of the SMT checker are fixed.
Furthermore, internal types are added to the ABI output which allows you to see which struct type is behind an ABI tuple. Finally, Yul and web assembly support are progressing.
We also improved our testing framework which now allows for semantics tests to run in 4 seconds instead of 1 minute.
Language Features:
- Inline Assembly: Support direct constants of value type in inline assembly.
Compiler Features:
- ABI: Additional internal type info in the field
internalType
. - eWasm: Highly experimental eWasm output using
--ewasm
in the commandline interface or output selection ofewasm.wast
in standard-json. - Metadata: Update the swarm hash to the current specification, changes
bzzr0
tobzzr1
and urls to usebzz-raw://
. - Standard JSON Interface: Compile only selected sources and contracts.
- Standard JSON Interface: Provide secondary error locations (e.g. the source position of other conflicting declarations).
- SMTChecker: Do not erase knowledge about storage pointers if another storage pointer is assigned.
- SMTChecker: Support string literal type.
- Standard JSON Interface: Provide AST even on errors if
--error-recovery
commandline switch or StandardCompilersettings.parserErrorRecovery
is true. - Yul Optimizer: Do not inline function if it would result in expressions being duplicated that are not cheap.
Bugfixes:
- ABI decoder: Ensure that decoded arrays always point to distinct memory locations.
- Code Generator: Treat dynamically encoded but statically sized arrays and structs in calldata properly.
- SMTChecker: Fix internal error when inlining functions that contain tuple expressions.
- SMTChecker: Fix pointer knowledge erasing in loops.
- SMTChecker: Fix internal error when using compound bitwise assignment operators inside branches.
- SMTChecker: Fix internal error when inlining a function that returns a tuple containing an unsupported type inside a branch.
- SMTChecker: Fix internal error when inlining functions that use state variables and belong to a different source.
- SMTChecker: Fix internal error when reporting counterexamples concerning state variables from different source files.
- SMTChecker: Fix SMT sort mismatch when using string literals.
- View/Pure Checker: Properly detect state variable access through base class.
- Yul Analyzer: Check availability of data objects already in analysis phase.
- Yul Optimizer: Fix an issue where memory-accessing code was removed even though
msize
was used in the program.
We especially thank all the contributors that made this release possible:
Alex Beregszaszi, Bhargava Shastry, cgrigis, Chris Chinchilla, Chris Smith, Christian Parpart, Daniel Kirchner, djudjuu, dm4, Erik Kundt, Leonardo Alt, Mathias Baumann, mingchuan, Nimish Bongale, Rocky Bernstein (supported by ConsenSys), William Entriken.
If you want to perform a source build, please only use solidity_0.5.11.tar.gz and not the zip provided by github directly.