This release mainly fixes an optimizer bug related to multiple shift opcodes that was introduced in the previous release. It is unlikely that any existing contracts are affected, but you should still not use Solidity 0.5.5.
Apart from that, the support for calldata structs and arrays by ABIEncoderV2 is almost finished now, we added some more optimizer rules and added enums and one-dimensional arrays to the SMT checker.
Important Bugfixes:
- Yul Optimizer: Fix visitation order bug for the structural simplifier.
- Optimizer: Fix overflow in optimization rule that simplifies double shift by constant.
Language Features:
- Allow calldata arrays with dynamically encoded base types with ABIEncoderV2.
- Allow dynamically encoded calldata structs with ABIEncoderV2.
Compiler Features:
- Optimizer: Add rules for
lt
-comparisons with constants. - Peephole Optimizer: Remove double
iszero
beforejumpi
. - SMTChecker: Support enums without typecast.
- SMTChecker: Support one-dimensional arrays.
- Type Checker: Provide better error messages for some literal conversions.
- Yul Optimizer: Add rule to remove empty default switch cases.
- Yul Optimizer: Add rule to remove empty cases if no default exists.
- Yul Optimizer: Add rule to replace a switch with no cases with
pop(expression)
.
Bugfixes:
- JSON ABI: Json description of library ABIs no longer contains functions with internal types like storage structs.
- SMTChecker: Fix internal compiler error when contract contains too large rational number.
- Type system: Detect if a contract's base uses types that require the experimental abi encoder while the contract still uses the old encoder.
Build System:
- Soltest: Add support for arrays in function signatures.
- Soltest: Add support for struct arrays in function signatures.
If you want to perform a source build, please only use solidity_0.5.6.tar.gz and not the zip provided by github directly.