Solidity v0.7.5 adds the ability so select the ABI coder via pragma abicoder v1 and pragma abicoder v2 in preparation for making ABI coder v2 the default for 0.8.0 and introduces --experimental-via-ir which compiles via the new experimental Yul-based compiler pipeline.
- Ability to select the abi coder using pragma abicoder v1 and pragma abicoder v2.
- Inline Assembly: Use .offset and .length for calldata variables of dynamic array type to access their calldata offset and length (number of elements). Both of them can also be assigned to.
- Immutable variables with literal number values are considered pure.
- Assembler: Perform linking in assembly mode when library addresses are provided.
- Command Line Interface: New option --experimental-via-ir allows switching compilation process to go through the Yul intermediate representation. This is highly experimental and is used for development purposes.
- Command Line Interface: New option --model-checker-timeout sets a timeout in milliseconds for each individual query performed by the SMTChecker.
- Command Line Interface: Report error if file could not be read in --standard-json mode.
- Command Line interface: Report proper error for each output file which could not be written. Previously an exception was thrown, and execution aborted, on the first error.
- SMTChecker: Add division by zero checks in the CHC engine.
- SMTChecker: More precise analysis of external calls using this.
- SMTChecker: Support selector for expressions with value known at compile-time.
- Standard JSON: New option modelCheckerSettings.timeout sets a timeout in milliseconds for each individual query performed by the SMTChecker.
- Standard JSON: New option settings.viaIR allows the same switch as --experimental-via-ir on the commandline.
- Code generator: Fix missing creation dependency tracking for abstract contracts.
- Command Line Interface: Fix write error when the directory passed to --output-dir ends with a slash.
- Command Line Interface: Reject duplicate libraries in --libraries option instead of arbitrarily choosing one.
- NatSpec: Fix internal error when inheriting return parameter documentation but the parameter names differ between base and inherited.
- SMTChecker: Fix CHC false positives when branches are used inside modifiers.
- SMTChecker: Fix false negative in modifier applied multiple times.
- SMTChecker: Fix incorrect counterexamples reported by the CHC engine.
- SMTChecker: Fix internal error in the BMC engine when inherited contract from a different source unit has private state variables.
- SMTChecker: Fix internal error on conversion from string literal to byte.
- SMTChecker: Fix internal error when array.push() is used as the LHS of an assignment.
- SMTChecker: Fix internal error when assigning state variable via contract's name.
- SMTChecker: Fix internal error when using tuples of rational literals inside the conditional operator.
- SMTChecker: Fix lack of reporting potential violations when using only the CHC engine.
- Standard JSON: Fix library addresses specified in libraries being used for linking even if the file names do not match.
- New member suffix for inline assembly identifiers. Currently supported values are "slot", "offset" and "length" to access the components of a Solidity variable.
A big thank you to all contributors who helped make this release possible!
Download the new version of Solidity here.