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.
Full Changelog
Language Features:
- Ability to select the abi coder using
pragma abicoder v1
andpragma 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.
Compiler Features:
- 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.
Bugfixes:
- 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.
AST Changes:
- 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.