{Solidity:log}
Unsound Spill In Mutual Recursion Bug
Posted by Solidity Team on July 9, 2026
On May 11, 2026, clonker from the Solidity team discovered a bug in the Yul optimizer's call graph analysis. The bug resulted in mutually recursive functions being sometimes misclassified as non-recursive, and therefore not being excluded from the memory spilling mechanism that is incompatible with recursive functions. The mechanism relocates local variables to fixed memory offsets to work around the EVM's stack depth limit and would cause the spilled variables to be shared between all invocations of the same function. We assign this...
Read moreSolidity 0.8.36 Release Announcement
Posted by Solidity Team on July 9, 2026
Solidity v0.8.36 is now available. The release includes two security fixes, both of medium severity. On the experimental side, the SSA-form code generator introduced in 0.8.35 gains stack-to-memory spilling, which effectively solves stack-too-deep on that backend. The experimental EOF backend is also removed; it had been obsolete since EOF was rejected for inclusion in the Fusaka network upgrade. Important Bugfixes Stack-to-memory mover can mistakenly apply spilling to recursive functions.** A flaw in how the Yul optimizer detects call cycles could misclassify functions...
Read moreInheritance Order Reversal On Storage End Warning Bug
Posted by Solidity Team on July 9, 2026
On June 8, 2026, clonker from the Solidity team discovered a bug in the analysis phase of the Solidity compiler. The bug manifests when the compiler emits Warning 3495 about a custom storage layout being placed too close to the end of storage. The implementation of said warning reverses the C3-linearized list of base contracts on the contract being checked. Because this linearization drives inheritance-dependent decisions throughout the rest of the compiler, the reversal can lead to miscompilations as well as internal compiler...
Read morePattern Matching in Core Solidity
Posted by Solidity Team on May 5, 2026
Smart contracts often need to handle values that come in several variants: a payment might be native ETH, an ERC20 transfer, or an NFT transfer; an auction can be not-started, active, ended, or cancelled. Each variant needs different handling, and the logic for that handling tends to be scattered across many functions. When a developer adds a new variant and forgets to update one of those functions, the compiler says nothing. Once deployed, that oversight can cost real money to find and fix. Core Solidity's algebraic data...
Read moreSolidity 0.8.35 Release Announcement
Posted by Solidity Team on April 29, 2026
We are excited to announce the release of the Solidity Compiler v0.8.35! This release introduces a new builtin, erc7201, that computes the base slot of an ERC-7201 namespaced storage layout from its namespace string. It also formalizes how experimental features are exposed to users: in-development functionality is now gated behind a new top-level --experimental flag, with a documented lifecycle and a canonical list of which features are currently considered experimental. The first major code-generation feature shipped under this new lifecycle is an experimental...
Read moreSolidity Developer Survey 2025 Results
Posted by Solidity Team on April 15, 2026
The Solidity Developer Survey 2025, our sixth annual survey, collected 1,095 responses from developers across 87 countries. Thank you to everyone who participated. This post covers the key findings. For the complete data, see the interactive results page. Who responded Where do you live? 70% of respondents are smart contract developers. 12% are auditors or security experts. 18% identified as students. Half of all respondents have two years or less of Solidity experience, and 49% use Solidity daily. The top three countries are India...
Read moreTransient Storage Clearing Helper Collision Bug
Posted by Solidity Team on February 18, 2026
On 2026-02-11, a bug in the Solidity code generator was reported by Hexens. The bug affects compiler versions 0.8.28 through 0.8.33 when using the IR pipeline. When a contract clears both a persistent and a transient storage variable of the same type, the compiler will emit the wrong opcode (sstore instead of tstore, or vice versa) for one of these operations, because the generated Yul helper functions share the same name and one overwrites the other. We assign this bug a severity of...
Read moreSolidity 0.8.34 Release Announcement
Posted by Solidity Team on February 18, 2026
Today we are releasing version 0.8.34 of the Solidity Compiler. This is a bugfix release that patches an important bug of high severity affecting clearing of storage and transient storage variables in the IR pipeline. If your code does not use delete on a transient state variable, your contract is not affected. The affected pattern has proven to be very rare in practice - only three deployed contracts were found across all EVM-compatible chains. The respective teams have been notified. Projects that compile...
Read moreAnnual Solidity Developer Survey is Live!
Posted by Jacob Czepluch on February 10, 2026
The annual Solidity Developer Survey is now live, and we need your input! Take 5 minutes to share your experience and help us prioritize language design, performance improvements, and developer experience enhancements for the year ahead. We're already working on frequently requested features like eliminating stack-too-deep errors, performance optimization, and stronger debugging tooling – with delivery targeted for H1 2026. Your feedback will help us refine priorities and identify what matters most. Check out our latest roadmap update: 2026 Argot Roadmap Update 📝 Take...
Read moreSolidity 0.8.32/0.8.33 Release Announcement
Posted by Solidity Team on December 18, 2025
Today we are releasing versions 0.8.32 and 0.8.33 of the Solidity Compiler. 0.8.32 is a bugfix release that patches an important bug of low severity. It also resolves an issue that was hampering the use of modules as namespaces for events and errors. 0.8.33 contains a hotfix for a backwards-incompatible change unintentionally introduced by 0.8.32 that was only discovered shortly after the release was tagged. Important Bugfixes Lost Storage Array Write On Slot Overflow A bug affecting operations that involve clearing of or copying from arrays...
Read moreLost Storage Array Write on Slot Overflow Bug
Posted by Solidity Team on December 18, 2025
On November 10, 2024, a bug in the Solidity code generator was found by @Audittens. The bug was initially reported to affect deletion and partial assignment operations on fixed-length storage arrays that cross the 2**256-slot boundary. Two instances were reported: one in the IR pipeline and one in the evmasm pipeline. During our further investigation, we discovered a third instance affecting copying from arrays placed at the storage boundary. The effect of the bug is that such storage cleanup or copy operations may not...
Read more