Radar · Solidity · Archive · Week 37 · Sep 7 – 13, 2026
Release of Solidity v0.8.37
Worth knowingcompiler
- What changed
- The release includes several bug fixes, two important security fixes, support for the Glamsterdam EVM fork, and performance optimizations for the default and IR pipelines.
- Production impact
- The source does not say.
- Try it
- Upgrade your projects to 0.8.37 and run your existing test suite to ensure compatibility.
- Source
- github.com/argotorg/solidity/releases/tag/v0.8.37
Understand it, then run it
Solidity 0.8.37 fixes a bug that affected the delete keyword when used on a single byte inside a bytes array that lives in memory. Before the fix, deleting a byte would clear the whole 32‑byte word that contains that byte, wiping out the other 31 bytes in the same word. Now the compiler generates code that only zeroes the targeted byte, leaving the rest of the word untouched. This change is invisible to most contracts that never delete individual bytes, but it matters for low‑level code that manipulates memory arrays byte‑by‑byte.
Run it now
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.37;
// This contract demonstrates the 0.8.37 delete‑byte‑array‑element fix.
// It creates a memory bytes array, sets each element to 0x01,
// deletes the middle element, and returns the array.
contract Demo {
function deleteMiddle() external pure returns (bytes memory) {
bytes memory b = new bytes(3);
b[0] = 0x01;
b[1] = 0x01;
b[2] = 0x01;
delete b[1]; // only b[1] should become 0x00
return b;
}
}
Tests
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.37;
import "./main.sol";
contract DemoTest {
Demo demo;
constructor() {
demo = new Demo();
}
function test_deleteLeavesOtherBytes() external {
bytes memory result = demo.deleteMiddle();
require(result.length == 3, "wrong length");
require(result[0] == 0x01, "b[0] altered");
require(result[1] == 0x00, "b[1] not zeroed");
require(result[2] == 0x01, "b[2] altered");
}
}
The test report when we ran it on Solidity 0.8.37 (solc)
1 of 1 tests passed.
- test_deleteLeavesOtherBytes27,558 gas
- DemoTest: 1,361 bytes of bytecode, deployed for 373,551 gas
solc 0.8.37 · prague
Run sends this program (for Solidity, the contract and its tests) to our own sandbox, where it is compiled and run once, with no network, and what it printed or the test report comes back here. Nothing is kept. Runs are counted per visitor for the day so everyone gets a turn; the details are on the legal page.
Written by gpt-oss-20b from the linked source · claims checked against the sources · archive, not individually reviewed