github ethereum/solidity v0.8.5
Version 0.8.5

latest releases: v0.8.27, v0.8.26, v0.8.25...
3 years ago

Solidity 0.8.5 allows conversions from bytes to bytesNN values, adds the verbatim builtin function to inject
arbitrary bytecode in Yul and fixes several smaller bugs.

For more details, please see the release announcement.

Language Features:

  • Allowing conversion from bytes and bytes slices to bytes1/.../bytes32.
  • Yul: Add verbatim builtin function to inject arbitrary bytecode.

Compiler Features:

  • Code Generator: Insert helper functions for panic codes instead of inlining unconditionally. This can reduce costs if many panics (checks) are inserted, but can increase costs where few panics are used.
  • EVM: Set the default EVM version to "Berlin".
  • SMTChecker: Function definitions can be annotated with the custom Natspec tag custom:smtchecker abstract-function-nondet to be abstracted by a nondeterministic value when called.
  • Standard JSON / combined JSON: New artifact "functionDebugData" that contains bytecode offsets of entry points of functions and potentially more information in the future.
  • Yul Optimizer: Evaluate keccak256(a, c), when the value at memory location a is known at compile time and c is a constant <= 32.

Bugfixes:

  • AST: Do not output value of Yul literal if it is not a valid UTF-8 string.
  • Code Generator: Fix internal error when function arrays are assigned to storage variables and the function types can be implicitly converted but are not identical.
  • Code Generator: Fix internal error when super would have to skip an unimplemented function in the virtual resolution order.
  • Control Flow Graph: Assume unimplemented modifiers use a placeholder.
  • Control Flow Graph: Take internal calls to functions that always revert into account for reporting unused or unassigned variables.
  • Function Call Graph: Fix internal error connected with circular constant references.
  • Name Resolver: Do not issue shadowing warning if the shadowing name is not directly accessible.
  • Natspec: Allow multiple @return tags on public state variable documentation.
  • SMTChecker: Fix internal error on conversion from bytes to fixed bytes.
  • SMTChecker: Fix internal error on external calls from the constructor.
  • SMTChecker: Fix internal error on struct constructor with fixed bytes member initialized with string literal.
  • Source Locations: Properly set source location of scoped blocks.
  • Standard JSON: Properly allow the inliner setting under settings.optimizer.details.
  • Type Checker: Fix internal compiler error related to having mapping types in constructor parameter for abstract contracts.
  • Type Checker: Fix internal compiler error when attempting to use an invalid external function type on pre-byzantium EVMs.
  • Type Checker: Fix internal compiler error when overriding receive ether function with one having different parameters during inheritance.
  • Type Checker: Make errors about (nested) mapping type in event or error parameter into fatal type errors.
  • Type Checker: Fix internal compiler error when overriding an implemented modifier with an unimplemented one.

AST Changes:

  • Add member hexValue for Yul string and hex literals.

We especially thank all the contributors that made this release possible:
a3d4, Alex Beregszaszi, Alexander Arlt, Anurag Dashputre, Bhargava Shastry, Christian Parpart, cxxboy, Daniel Kirchner, Đorđe Mijović, Franziska Heintel, Harikrishnan Mulackal, Kamil Śliwak, Keqi Huang, Leonardo Alt, Martin Blicha, Mathias Baumann, Maurelian, newbateni, Raphael Roullet, TerranCivilian, Wade Dorrell, William Entriken.

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

Don't miss a new solidity release

NewReleases is sending notifications on new releases.