Skip to content

Commit ed676e2

Browse files
authored
add 0.8.36 release announcement blogpost (#207)
* add 0.8.36 release announcement blogpost * apply suggestions * apply suggestions
1 parent e08b2af commit ed676e2

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: "Solidity 0.8.36 Release Announcement"
3+
date: "2026-07-09"
4+
author: Solidity Team
5+
category: Releases
6+
---
7+
8+
[Solidity v0.8.36](https://github.com/argotorg/solidity/releases/tag/v0.8.36) is now available.
9+
10+
The release includes two security fixes, both of medium severity.
11+
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.
12+
The experimental EOF backend is also removed; it had been obsolete since EOF was rejected for inclusion in the Fusaka network upgrade.
13+
14+
## Important Bugfixes
15+
16+
- **Stack-to-memory mover can mistakenly apply spilling to recursive functions.**
17+
A flaw in how the Yul optimizer detects call cycles could misclassify functions involved in mutually recursive call chains as non-recursive.
18+
This allowed the stack-too-deep mitigation to move their local variables to memory, despite the fact that multiple invocations of the same function would use the same memory slots and overwrite each other's values.
19+
Write-up: [Unsound Spill In Mutual Recursion Bug](https://blog.soliditylang.org/2026/07/09/unsound-spill-in-mutual-recursion-bug/)
20+
- **Custom storage layout can corrupt inheritance order annotation when very close to the end of storage.**
21+
A bug in the code issuing a warning about a contract's variables being placed too close to the end of storage could accidentally reverse the AST annotation describing the linearization of contract's inheritance hierarchy.
22+
This would affect analysis and code generation in a multitude of ways, most notably, changing the initialization order of state variables and the invocation order of constructors and virtual functions.
23+
Write-up: [Inheritance Order Reversal On Storage End Warning Bug](https://blog.soliditylang.org/2026/07/09/inheritance-order-reversal-on-storage-end-warning-bug/)
24+
25+
## Notable Features and Changes
26+
27+
### SSA CFG Stack-to-Memory Spilling (Experimental)
28+
29+
Solidity 0.8.35 [introduced an experimental SSA-form control-flow-graph code generator](https://soliditylang.org/blog/2026/04/29/solidity-0.8.35-release-announcement/#experimental-ssa-cfg-code-generator) for the IR pipeline.
30+
One of the gaps we noted at the time was that stack-to-memory spilling had not yet been ported to the SSA backend.
31+
32+
This release adds it.
33+
With spilling in place, the code generator can move values to memory when necessary, so code that the existing pipelines reject with a stack-too-deep error now compiles through the SSA backend.
34+
35+
It remains experimental, enabled with `--experimental --via-ssa-cfg`, and is not yet the default for `--via-ir`.
36+
Stabilizing the SSA CFG code generator is one of our main priorities for the next six months.
37+
38+
### Removal of the Experimental EOF Backend
39+
40+
0.8.36 removes the experimental EOF (EVM Object Format) backend.
41+
A substantial amount of EOF support had been implemented in anticipation of its inclusion in the Fusaka network upgrade, but the feature was ultimately rejected from that upgrade late in the process.
42+
With no mainnet support and no real prospect of adoption by any network in the future the backend is obsolete.
43+
As a matter of routine housekeeping we have decided to finally remove this code to simplify the code base.
44+
45+
## Full Changelog
46+
47+
### Important Bugfixes
48+
49+
* PostTypeContractLevelChecker: Fix unintentional reversal of `linearizedBaseContracts` annotation when emitting the warning about the base slot of storage layout being too close to the end of storage. The reversal would affect analysis and code generation dependent on the inheritance order.
50+
* Yul Optimizer: Fix call graph cycle detection failing to classify some mutually recursive functions as recursive.
51+
52+
### Compiler Features
53+
54+
* Commandline Interface: `--optimize-runs` now also accepts values from the interval `[INT64_MAX, UINT64_MAX]`.
55+
* EVM: Support for the EVM version "Amsterdam".
56+
* General: Remove support for the experimental EOF (EVM Object Format) backend.
57+
* General: Speed up SHA-256 hashing (`picosha2`).
58+
* General: The experimental SSA CFG codegen can now spill stack values to memory to avoid stack-too-deep errors.
59+
60+
### Bugfixes
61+
62+
* Constant Evaluator: Fix ICE when evaluating `erc7201` builtin with wrong number of arguments.
63+
* Custom Storage Layout: Fix segfault when emitting the "too close to end of storage" warning for contracts with no storage variables.
64+
* NatSpec: Disallow `@return` tag in event documentation.
65+
* SMTChecker: Fix incorrect handling of constant operands of unary operations.
66+
* Standard JSON Interface: Fix incorrect serialization of `optimizer.runs` setting for values in the interval `[INT64_MAX, UINT64_MAX]`.
67+
68+
## How to Install/Upgrade?
69+
70+
To upgrade to the new version of the Solidity Compiler, please follow the [installation instructions](https://docs.soliditylang.org/en/v0.8.36/installing-solidity.html) available in our documentation.
71+
You can download the release from GitHub: [v0.8.36](https://github.com/argotorg/solidity/releases/tag/v0.8.36).
72+
73+
If you want to build from the source code, do not use the source archives generated automatically by GitHub.
74+
Instead, use the [`solidity_0.8.36.tar.gz` source tarball](https://github.com/argotorg/solidity/releases/download/v0.8.36/solidity_0.8.36.tar.gz) or check out the `v0.8.36` tag via git.
75+
76+
And last but not least, we would like to give a big thank you to all the contributors who helped make this release possible!

0 commit comments

Comments
 (0)