This release fixes two important bugs and also contains other minor bug fixes and features.
For details, please see the release announcement.
Important Bugfixes:
- Code Generation: Avoid writing dirty bytes to storage when copying
bytes
arrays. - Yul Optimizer: Keep all memory side-effects of inline assembly blocks.
Language Features:
- Add
E.selector
for a non-anonymous eventE
to access the 32-byte selector topic.
Compiler Features:
- LSP: Add rudimentary support for semantic highlighting.
- Type Checker: Warn about assignments involving multiple pushes to storage
bytes
that may invalidate references. - Yul Optimizer: Improve inlining heuristics for via IR code generation and pure Yul compilation.
Bugfixes:
- ABI Encoder: When encoding an empty string coming from storage do not add a superfluous empty slot for data.
- Common Subexpression Eliminator: Process assembly items in chunks with maximum size of 2000. It helps to avoid extremely time-consuming searches during code optimization.
- Yul Optimizer: Do not remove
returndatacopy
in cases in which it might perform out-of-bounds reads that unconditionally revert as out-of-gas. Previously, any
returndatacopy
that wrote to memory that was never read from was removed without accounting for the out-of-bounds condition.
We especially thank all the contributors that made this release possible:
Christian Parpart, Christian Reitwiessner, Damian Wechman, Daniel Kirchner, Denis T, Dustin Alandzes, Harikrishnan Mulackal, Josep M Sobrepere, Kamil Śliwak, Matheus Aguiar, Mathias L. Baumann, Nishant Sachdeva, Prajwal Borkar, Ryan, Samuel Osewa, Saw-mon-and-Natalie, shady41, sourabh.xyz, uji, Yuri Victorovich
If you want to perform a source build, please only use solidity_0.8.15.tar.gz
and not the zip provided by github directly.