This release adds support for calldata structs and packed encoding with ABIEncoderV2. We also introduced some changes to the C API and added support for continuous fuzzing via Google oss-fuzz. In addition to that, we added a new commandline option for improved (colorized) diagnostics formatting.
Language Features:
- Allow calldata structs without dynamically encoded members with ABIEncoderV2.
Compiler Features:
- ABIEncoderV2: Implement packed encoding.
- C API (
libsolc
/ rawsoljson.js
): Introducesolidity_free
method which releases all internal buffers to save memory. - Commandline Interface: Adds new option
--new-reporter
for improved diagnostics formatting
along with--color
and--no-color
for colorized output to be forced (or explicitly disabled).
Bugfixes:
- Code Generator: Defensively pad allocation of creationCode and runtimeCode to multiples of 32 bytes.
- Commandline Interface: Allow yul optimizer only for strict assembly.
- Parser: Disallow empty import statements.
- Type Checker: Disallow mappings with data locations other than
storage
. - Type Checker: Fix internal error when a struct array index does not fit into a uint256.
- Type System: Properly report packed encoded size for arrays and structs (mostly unused until now).
Build System:
- Add support for continuous fuzzing via Google oss-fuzz
- SMT: If using Z3, require version 4.6.0 or newer.
- Soltest: Add parser that is used in the file-based unit test environment.
- Ubuntu PPA Packages: Use CVC4 as SMT solver instead of Z3
We especially thank all the contributors that made this release possible:
Alex Beregszaszi, Bhargava Shastry, Christian Reitwiessner, Christian Parpart, Chris Ward, Daniel Kirchner, Erik Kundt, Leo Arias, Leonardo Alt, Mathias Baumann, Mudit Gupta, Shelly Grossman