Solidity v0.8.35 is out!

Solidity v0.8.35 is out!

This release introduces Solidity’s first comptime builtin, formalizes how experimental features are exposed behind a new --experimental flag, and ships an experimental SSA CFG code generator targeting stack-too-deep and slow compilation in the IR pipeline.

Notable features:

  • erc7201 is the first comptime builtin in Solidity. It computes the base slot of an ERC-7201 namespaced storage layout from a namespace string, and its result is usable wherever a comptime expression is required, e.g. as the base slot in a layout at specifier.

  • A new --experimental flag formalizes the experimental feature lifecycle. Using any in-development feature now requires --experimental (or settings.experimental in Standard JSON), and a new docs page lists what’s currently experimental.

  • The first major feature under the new experimental lifecycle is an SSA CFG code generator, a new EVM backend for the IR pipeline. The main motivations are stack-too-deep errors and slow compilation, both long-standing pain points. Enable with --experimental --via-ssa-cfg.

  • v0.8.35 continues the 0.9.0 deprecation work started in 0.8.31, this time warning about identifiers that will be reserved as keywords in 0.9.0:

    • Solidity: at, error, layout, leave, super, this, transient
    • Yul: a list of upcoming Yul builtins that will become Yul reserved identifiers.
  • Bugfix: in the IR pipeline (--via-ir), --revert-strings strip was over-stripping the custom-error argument of require(condition, CustomError(...)). A failed require would revert with empty error data instead of the encoded custom error. Fixed in 0.8.35.

You can read the full release announcement on our blog: Solidity 0.8.35 Release Announcement | Solidity Programming Language

Users can download the new version of Solidity Compiler from GitHub: Release Version 0.8.35 · argotorg/solidity · GitHub

And lastly, a big thank you to all the contributors who helped make this release possible! :purple_heart: