{Solidity:log}
Solidity 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 moreSolidity 0.8.8 Release Announcement
Posted by Solidity Team on September 27, 2021
Solidity v0.8.8 introduces user defined value types as a major feature. The override keyword is now optional for interface functions, immutable variables can be read in the constructor, there is support for retrieving the smallest and largest value of an enum, you can specify include directories and the commandline interface was cleaned up. Furthermore, we fixed several bugs and the SMTChecker has improved language coverage. Notable New Features User Defined Value Types A user defined value type allows creating a zero-cost-abstraction over an elementary value type that also...
Read moreSolidity 0.8.7 Release Announcement
Posted by Solidity Team on August 11, 2021
Solidity v0.8.7 introduces support for the London upgrade, includes various improvements to Yul to EVM code transformation, the SMTChecker and some bugfixes. Please note: Unfortunately, the npm package of this version is corrupted. Pulling the solc-js repository directly will work. Support for London Upgrade Solidity adds support for the BASEFEE opcode (EIP-3198 and EIP-1559) which exposes the block's base fee. This can be accessed via the global block.basefee or using basefee() in inline assembly or Yul. The following contract illustrates an example: contract Basefee { function...
Read moreSolidity 0.8.6 Release Announcement
Posted by Solidity Team on June 22, 2021
Solidity v0.8.6 fixes some non-critical but annoying bugs, especially a warning about unreachable code that is in fact reachable. Bugfixes Unreachable Warning With Solidity 0.8.5, we released a new feature that detects if code is unreachable because a called function always reverts before the code is executed. This detection contained a bug in connection with nested calls to internal library functions where the "reverting behaviour" of a function was not properly updated after a function called by it was determined to be not always reverting. Because the bug was rather...
Read moreSolidity 0.8.5 Release Announcement
Posted by Solidity Team on June 10, 2021
Solidity v0.8.5 allows conversions from bytes to bytesNN values, adds the verbatim builtin function to inject arbitrary bytecode in Yul and fixes several smaller bugs. Notable New Features Bytes Conversion Find the complete feature documentation here. This release introduces the ability to convert bytes and bytes slices to fixed bytes types bytes1 / ... / bytes32. While conversion between fixed-length bytes types has always been possible, it is now also possible to convert dynamically-sized bytes types to fixed-length bytes types. In case a byte array is longer...
Read moreWhat Happened with Solidity-related Domains?
Posted by Franziska Heintel on May 3, 2021
Some time ago we decided to get a domain that the Solidity team has easy access to in order to streamline efforts and initiatives that were hosted on other domains before. And so soliditylang.org was born! 🎉 We announced most of these domain changes individually on Twitter, but we want to take a moment to also officially announce it here on the blog and explain the various subdomains we have now, what they are for and which older domains may be deprecated in the future. In short,...
Read moreSolidity 0.8.4 Release Announcement
Posted by Solidity Team on April 21, 2021
Solidity v0.8.4 adds custom structured errors, bytes.concat(...), allows more flexible configuration of the SMT checker and fixes a bug in the Solidity ABI decoder v2. Important Bugfixes: On April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by John Toman of the Certora development team. For two-dimensional arrays and specially crafted data in memory, the result of abi.decode can depend on data elsewhere in memory. Calldata decoding is not affected. The bug is present in all prior versions of...
Read moreSolidity ABI Decoder Bug For Multi-Dimensional Memory Arrays
Posted by Solidity Team on April 21, 2021
On April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by John Toman of the Certora development team. Certora's bug disclosure post can be found here: Memory Isolation Violation in Deserialization Code. The bug is fixed with Solidity version 0.8.4 released on April 21st, 2021. The bug is present in all prior versions of ABI coder v2. We assigned the bug a severity level of "very low", mainly due to the fact that it is very hard to exploit the bug. We are...
Read more