Solidity v0.8.3 is out! 0.8.3 is a bugfix release that fixes an important bug about how the optimizer handles the Keccak256 opcode. In addition, it includes two improvements to the optimizer.
On March 20, 2021, a bug in Solidity’s bytecode optimizer was found by differential fuzzing. The bug is fixed with v0.8.3 and present in all prior versions of Solidity. We assigned the bug a severity level of “medium”.
In summary, the bytecode optimizer incorrectly re-used previously evaluated Keccak-256 hashes. You are unlikely to be affected if you do not compute Keccak-256 hashes in inline assembly.
For all details, please read the Security Alert.
Notable New Features
Now the good news, improvements! There are 2 optimizer improvements included in this release, namely improving storage writes for small types and replacing multiplications and divisions with powers of two by shifts. The former can provide a big gas benefit when writing structs that cover a full storage slot to storage. For details on how this works, please have a look at the “Notable New Features” section of the release announcement!
Spread the Word
As per usual, feel free to help us spread the word about the new version by sharing the news on your favourite social media or directly with your colleagues, friends, office dog etc…