This site is being rebuilt and some pages are out of date. For current details, write to [email protected]. This notice goes away when the rebuild is done.

No analytics unless you allow it, no tracking. This site keeps in your browser the language you pick, the theme, its colour, which site you chose, the currency on the pricing page and that you closed this notice; signing in adds session cookies. The legal page has the details.

Sign in

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

Todaysolidity
// 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