{Solidity:​log}
Solidity 0.8.12 Release Announcement
Posted by Solidity Team on February 16, 2022
Solidity v0.8.12 improves the JavaScript / Wasm binary and fixes several bugs. Notable New Features Emscripten Build / solc-js We were able to reduce the size of the JavaScript / WebAssembly binaries from 27 MB to just over 8 MB. The reason for the large binary in the first place is that we include the SMT solver Z3. The size reduction is achieved by compressing the binary using LZ4 and decompressing it when it is loaded, which should be completely transparent to the user. We were initially worried that...
Read moreUnderhanded Solidity Contest 2022
Posted by Franziska Heintel on February 9, 2022
The long wait is over: The Underhanded Solidity Contest is back with a 2022 edition! After a successful revival in 2020, we believe it's time for the great Solidity minds to get together again and compete over the next big underhanded hack! In case you're new to this, let's get you up to speed with a quick recap on what the Underhanded Solidity Contest (USC) is all about: In a nutshell, the USC is about finding loopholes or "hiding spots" in the Solidity...
Read moreSolidity Developer Survey 2021 Results
Posted by Franziska Heintel on February 7, 2022
In this post, we will be summarizing and analyzing the results of the 2021 Solidity Developer Survey. A big thank you goes out to everybody who took the time and participated! Your input is invaluable to us and plays a crucial role in helping to continuously improve the Solidity developer experience as a whole. Summary & Notable Insights Survey Audience**: In total, 435 developers from 73 different countries participated in the 2021 survey. Compared to 2020, that is more than a 100% increase in...
Read moreSolidity 0.8.11 Release Announcement
Posted by Solidity Team on December 20, 2021
Solidity v0.8.11 adds a first implementation of a Language Server, allows a safer way to perform ABI-encoding and fixes several bugs. Notable New Features Language Server Preview Language Server Protocol is an initiative that allows better interoperability between IDEs and compilers, or more generally, language diagnostics tools. The idea is that instead of writing a different plugin for each combination of IDEs and languages, every IDE implements a single client and every compiler implements a single server and since both of them use the same protocol, you can combine all of...
Read moreSolidity Developer Survey 2021 is Live!
Posted by Franziska Heintel on November 18, 2021
Today, we launched the Solidity Developer Survey 2021. Please all take 10 minutes to participate and let us know your feedback! This marks the second time we are conducting a structured big developer survey. You can find the results of last year's Solidity developer survey here. Shape the Future of Solidity 🔮 The survey helps us to further improve the Solidity language and compiler and shape the future roadmap of Solidity. We can't wait to hear your thoughts on the prioritization of new...
Read moreSolidity 0.8.10 Release Announcement
Posted by Solidity Team on November 9, 2021
Solidity v0.8.10 can now report contract invariants and reentrancy properties through the SMTChecker. It also contains some new optimizations with regards to external function calls and enables the new EVM code generator for pure Yul mode. Notable New Features New EVM Code Transform for Compilation via Yul IR With this release, we introduce a new EVM code generation backend that is used for the experimental compilation pipeline of Solidity via Yul (with enabled optimizer), as well as for optimized compilation of Yul input. While...
Read moreUser Defined Value Types Bug
Posted by Solidity Team on September 29, 2021
On September 28th, 2021, Harry Altman (@haltman-at) of Truffle discovered a bug in user defined value types. The bug has no influence on the correctness of Solidity contracts, but contracts compiled with Solidity 0.8.8 that use the new feature are unnecessarily wasteful and might have problems with tooling or contract upgrades. The bug exists only in Solidity 0.8.8 and is fixed in 0.8.9. We assigned the bug a severity of "very low". Storage Layout of User Defined Value Types The compiler did not correctly compute the storage layout...
Read moreSolidity 0.8.9 Release Announcement
Posted by Solidity Team on September 29, 2021
Solidity v0.8.9 is a pure bugfix release and fixes two important, but low severity, bugs. The first bug is related to immutables of signed integer types shorter than 256 bits. The bug causes sign extension (cleanup) of those values to not always being properly performed. It was introduced in Solidity 0.6.5. Read more in the respective security alert. The second bug was introduced with user defined value types in Solidity v0.8.8 (released two days ago). User defined types with underlying type shorter...
Read moreSigned Immutables Bug
Posted by Solidity Team on September 29, 2021
On September 28th, 2021, the Solidity team discovered that for immutable variables of a signed integer type shorter than 256 bits, sign extension (cleanup) of its value is not always properly performed. To our knowledge, the value can only be accessed in its unclean state when using inline assembly. The bug is present since the introduction of the immutable feature in Solidity 0.6.5 and is fixed in 0.8.9. We assigned the bug a severity of "very low". Technical Details When immutable variables are assigned in Solidity during the construction...
Read moreUser Defined Value Types in Solidity
Posted by Solidity Team on September 27, 2021
Solidity v0.8.8 introduces user defined value types as a means to create zero-cost abstractions over an elementary value type that also increases type safety and improves readability. Motivation A problem with primitive value types is that they are not very descriptive: they only specify how the data is stored and not how it should be interpreted. For example, one may want to use uint128 to store the price of some object as well as the quantity available. It is quite useful to have stricter type rules to avoid...
Read more