Solidity 0.8.15 fixes two important bugs:
-
The first bug can cause memory writes in inline assembly blocks to be incorrectly removed. While we do not expect a lot of affected cases in practice, we still assigned it a severity of βmediumβ, since the consequences in affected cases can be severe. You can find more information in our blog post.
-
The second bug dates back to the very first versions of Solidity: When copying bytes arrays from
calldata
ormemory
tostorage
, some dirty bytes may be copied along, and may become visible after a.push()
on the array. We assigned a severity of βlowβ.
On top of this, the release includes several minor bug fixes and improvements. For instance, the inlining heuristics for optimizing via-IR code was improved, resulting in notable code size and gas improvements, as seen at the overall differences between 0.8.14 and 0.8.15 that we observed when using the IR-based pipeline to run test suites of several real-life projects in our CI:
project | Bytecode size | Deployment gas | Runtime gas |
---|---|---|---|
ENS | -4.85% β
|
-0.29% β
|
|
Euler | -2.43% β
|
-1.68% β
|
-2.08% β
|
Gnosis Safe | -3.87% β
|
-4.31% β
|
-0.02% β
|
Gnosis Protocol v2 | -3.95% β
|
-2.55% β
|
-0.07% β
|
Perpetual Pools | -4.55% β
|
-2.64% β
|
-1% β
|
Pool Together | -7.09% β
|
-5.59% β
|
-0.37% β
|
PRBMath | -3.56% β
|
-3.49% β
|
|
Trident | -9.84% β
|
-7.98% β
|
-6.26% β
|
Uniswap v3 | -4.32% β
|
-4.53% β
|
-1.24% β
|
Yield Liquidator | -7.13% β
|
-6.08% β
|
-0.5% β
|
OpenZeppelin | -7.83% β
|
-6.01% β
|
-0.28% β
|
Solidity 0.8.15 Release Announcement | Solidity Blog
Release Version 0.8.15 Β· ethereum/solidity Β· GitHub