Skip to content

Version 0.7.6

Compare
Choose a tag to compare
@chriseth chriseth released this 16 Dec 15:14
· 5648 commits to develop since this release
7338295

This version of Solidity adds better support for calldata types. Furthermore, the fallback function can now have a parameter and explicitly return data. For details, please see the blog post.

Language Features:

  • Code generator: Support conversion from calldata slices to memory and storage arrays.
  • Code generator: Support copying dynamically encoded structs from calldata to memory.
  • Code generator: Support copying of nested arrays from calldata to memory.
  • Scanner: Generate a parser error when comments or unicode strings contain an unbalanced or underflowing set of unicode direction override markers (LRO, RLO, LRE, RLE, PDF).
  • The fallback function can now also have a single calldata argument (equaling msg.data) and return bytes memory (which will not be ABI-encoded but returned as-is).
  • Wasm backend: Add i32.select and i64.select instructions.

Compiler Features:

  • Build System: Optionally support dynamic loading of Z3 and use that mechanism for Linux release builds.
  • Code Generator: Avoid memory allocation for default value if it is not used.
  • SMTChecker: Apply constant evaluation on binary arithmetic expressions.
  • SMTChecker: Create underflow and overflow verification targets for increment/decrement in the CHC engine.
  • SMTChecker: Report struct values in counterexamples from CHC engine.
  • SMTChecker: Support early returns in the CHC engine.
  • SMTChecker: Support getters.
  • SMTChecker: Support named arguments in function calls.
  • SMTChecker: Support struct constructor.
  • Standard-Json: Move the recently introduced modelCheckerSettings key to settings.modelChecker.
  • Standard-Json: Properly filter the requested output artifacts.

Bugfixes:

  • Code generator: Do not pad empty string literals with a single 32-byte zero field in the ABI coder v1.
  • NatSpec: Fix segfault when inheriting return parameter documentation for modifiers with no parameters.
  • SMTChecker: Fix cast string literals to byte arrays.
  • SMTChecker: Fix internal compiler error when doing bitwise compound assignment with string literals.
  • SMTChecker: Fix internal error when trying to generate counterexamples with old z3.
  • SMTChecker: Fix segmentation fault that could occur on certain SMT-enabled sources when no SMT solver was available.
  • SMTChecker: Fix internal error when bytes.push() is used as the LHS of an assignment.
  • Type Checker: super is not available in libraries.
  • Type Checker: Disallow leading zeroes in sized-types (e.g. bytes000032), but allow them to be treated as identifiers.
  • Yul Optimizer: Fix a bug in NameSimplifier where a new name created by NameSimplifier could also be created by NameDispenser.
  • Yul Optimizer: Removed NameSimplifier from optimization steps available to users.

We especially thank all the contributors that made this release possible:

Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Christian Parpart, Daniel Kirchner, Đorđe Mijović, franzihei, Harikrishnan Mulackal, Jaime, Kamil Śliwak, Leonardo Alt, Martin Blicha, Mathias Baumann, Matt Williams, midinas, ritzdorf.

If you want to perform a source build, please only use solidity_0.7.6.tar.gz and not the zip provided by github directly.