{Solidity:log}
Feature Deep-Dive: User-Defined Operators
Posted by Kamil Śliwak, Matheus Aguiar on February 22, 2023
The highlight of Solidity 0.8.19 release is the support for defining operators on user-defined value types (UDVTs). If you have not been keeping up with recent features, UDVTs are a new class of types introduced in Solidity 0.8.8. They provide an abstraction over an elementary value type that results in a completely new type. This is similar to creating an alias, but the new type is distinct from the underlying value type and all other UDVTs derived from that underlying type. The ability to use operators...
Read moreSolidity 0.8.19 Release Announcement
Posted by Solidity Team on February 22, 2023
We are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.19. This latest version includes a range of improvements and it also introduces the support for defining operators on user-defined value types (UDVTs)! You can learn about it at length in our feature deep-dive blogpost. Notable New Features These are the features we want to highlight in this release. Operators for User-Defined Value Types The ability to use operators is meant to bring the UDVTs closer to being as natural to use as the...
Read moreSolidity 0.8.18 Release Announcement
Posted by Solidity Team on February 1, 2023
Introducing the newest version of the Solidity Compiler! We are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.18. This latest version includes a range of improvements and it also introduces support for the Paris upgrade! Notable New Features These are the features we want to highlight in this release. Disabling CBOR metadata A new command-line flag (--no-cbor-metadata) and Standard JSON option (settings.metadata.appendCBOR: false) to prevent compiler from appending the CBOR metadata section at the end of the bytecode. Until now, it was only...
Read moreSolidity Developer Survey 2022 is Live!
Posted by Franziska Heintel on December 7, 2022
It’s that time of the year. Drumroll, please! 🥁🥁🥁 We are launching the Solidity Developer Survey 2022! Before we wrap up 2022 for good, we want to reach out to collect your feedback and insights so we can improve on it! 📝 TAKE THE SURVEY! 📝 You can find the previous results of the Solidity Developer Survey 2021 here. In 2021, 435 developers from 73 different countries participated with 80% of respondents using Solidity daily or weekly. About the Survey 🪄 Like in previous years, this...
Read moreSolidity Core Team Updates
Posted by Solidity Team on December 5, 2022
More than two years have passed since we introduced Solidity core team members on the blog and we realized it is high time for some updates: Meet new team members, find out who moved on to other adventures and learn about recent changes in the team structure! Before we dive in, a reminder that the Solidity programming language and compiler are open-source community projects. This post dives into the core team that leads the development. Nevertheless, we cannot stress enough how...
Read moreStorage Write Removal Bug On Conditional Early Termination
Posted by Solidity Team on September 8, 2022
On September 5, 2022, a bug in Solidity's Yul optimizer was found by differential fuzzing. The bug was introduced in version 0.8.13 and Solidity version 0.8.17, released on September 08, 2022, provides a fix. The bug is significantly easier to trigger with optimized via-IR code generation, but can theoretically also occur in optimized legacy code generation. We assigned the bug a severity of "medium/high". Who Should Be Concerned If you're using optimized legacy code generation, you only need to be concerned, if you use...
Read moreSolidity 0.8.17 Release Announcement
Posted by Solidity Team on September 8, 2022
Solidity v0.8.17 fixes an important bug, makes overflow checks on multiplication more efficient and adds an LSP feature to always analyze all files in a project. Important Bugs Storage Write Removal Bug On Conditional Early Termination The bug may result in storage writes being incorrectly considered redundant and removed by the optimizer. The problem manifests in presence of assembly functions that may conditionally terminate the external EVM call using the return() or stop() opcode. See the security alert post on Storage Write Removal Bug On Conditional Early Termination for...
Read moreSolidity 0.8.16 Release Announcement
Posted by Solidity Team on August 8, 2022
Solidity v0.8.16 fixes an important bug. The bug may result in small parts of dynamic tuple components being inadvertently zeroed during ABI re-encoding when the last component is a statically-sized uint or bytes32 calldata array. See Head Overflow Bug in Calldata Tuple ABI-Reencoding for more information. Apart from that, there are several minor bug fixes and improvements like more gas-efficient overflow checks for addition and subtraction. Full Changelog Important Bugfixes: Code Generation: Fix data corruption that affected ABI-encoding of calldata values represented by tuples: structs at any nesting level; argument...
Read moreHead Overflow Bug in Calldata Tuple ABI-Reencoding
Posted by Solidity Team on August 8, 2022
On July 5, 2022, Chance Hudson (@vimwitch) from the Ethereum Foundation discovered a bug in the Solidity code generator. The earliest affected version of the compiler is 0.5.8, which introduced ABI-reencoding of calldata arrays and structs. Solidity version 0.8.16, released on August 08, 2022, provides a fix. We assigned the bug a severity of "medium". Which Contracts are Affected? The effects of the bug manifest when a contract performs ABI-encoding of a tuple that meets all of the following conditions: The last component of the tuple...
Read moreSolidity 0.8.15 Release Announcement
Posted by Solidity Team on June 15, 2022
Solidity v0.8.15 fixes two important bugs, improves inlining heuristics and adds a .selector member for errors and events. Important Bugs The first one is an optimizer bug that can lead to memory write operations in inline assembly being removed if the result of such an operation is not read back from within the same assembly block. The bug can be triggered only when using the default legacy compiler pipeline (the new compilation pipeline via IR is not affected) and happens only in assembly blocks that never...
Read more