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 of ewasm.wast in standard-json.
- Metadata: Update the swarm hash to the current specification, changes bzzr0 to bzzr1 and urls to use bzz-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 StandardCompiler settings.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.
A big thank you to all contributors who helped make this release possible!
Download the new version of Solidity here.