Solidity 0.8.0 is a breaking release of the Solidity compiler and language.
Most notable changes:
- The change that will affect most users is that arithmetic operations are now checked by default, which means that overflow and underflow will cause a revert. This feature can be disabled locally by using an
- The ABI coder v2 is now activated by default. You can activate the old coder using
pragma abicoder v1, or explicitly select v2 using
pragma abicoder v2. ABI coder v2 performs additional checks on the input and supports a larger set of types than v1.
- Internal errors like division by zero, assertion failure and others do not use the invalid opcode anymore, but use revert with a special error message, in order to not waste gas in such situations.
- We restricted the possibilities of explicit conversions to avoid ambiguities. All conversions that were possible before are still possible, but you might have to perform two conversions to get there - which does not affect the generated code, though.
If you like you can help us spread the word about the new version on Twitter, too!
Some of the new features of this release have been elaborated in the 0.8.x preview release post. Please consider the preview release binary superseded and do not use it anymore.