The release is still in progress. You may see broken links and binaries may not yet be available from all sources.
We are excited to announce the release of the Solidity Compiler v0.8.35!
Changelog
Language Features:
- General: Add a builtin that computes the base slot of a storage namespace using the
erc7201formula from ERC-7201. - Name Resolver: Warn about identifiers selected for future promotion to Solidity or Yul keywords (
at,error,layout,leave,super,transient,this). - Yul Analyzer: Warn about identifiers selected for future promotion to Yul keywords and reserved identifiers (
basefee,blobbasefee,blobhash,clz,leave,memoryguard,mcopy,prevrandao,tload,tstore).
Compiler Features:
- Commandline Interface: Disallow selecting the deprecated assembly input mode that was only accessible via
--assembleinstead of treating it as equivalent to--strict-assembly. - Commandline Interface: Introduce
--experimentalflag required for enabling the experimental mode. - Commandline Interface: Replace the experimental
--ethdebugand--ethdebug-runtimeoutputs with the more granular--ethdebug-resources,--ethdebug-compilation,--ethdebug-programand--ethdebug-program-runtime. Producingethdebug/format/info/resourcesno longer forces full binary compilation. - EVM: Introduce experimental EVM version
@future. - General: Improve performance of sanity checks throughout the compiler implementation.
- General: Introduce the SSA CFG codegen (experimental).
- General: Restrict the existing experimental features (
generic-solidity,lsp,ethdebug,eof,evm,ast-import,evmasm-import,ir-ast,ssa-cfg) to experimental mode. - Metadata: Store the state of the experimental mode in JSON and CBOR metadata. In CBOR this broadens the meaning of the existing
experimentalfield, which used to indicate only the presence of certain experimental pragmas in the source. - Standard JSON Interface: Introduce
settings.experimentalsetting required for enabling the experimental mode. - Standard JSON Interface: Replace the experimental top-level
ethdebugoutput withethdebug.resourcesandethdebug.compilation. Decouple ethdebug outputs from binary compilation so that requesting theethdebug/format/info/resourcesschema artifacts does not trigger bytecode generation. - Yul Optimizer: Improve performance of control flow side effects collector and function references resolver.
Bugfixes:
- Yul: Fix incorrect serialization of Yul object names containing double quotes and escape sequences, producing output that could not be parsed as valid Yul.
- Yul EVM Code Transform: Improve stack shuffler performance by fixing a BFS deduplication issue.
- Yul IR Code Generation: Preserve custom error argument of
requirewhen stripping of revert strings is selected via--revert-strings strip.
We would especially like to thank all the contributors that made this release possible:
Francisco Giordano, Haowei Hsu, Kamil Śliwak, Masashi Takahashi, Mate Soos, Nikola Matić, Olexandr88, Weixie Cui, blishko, clonker, dxo, jstcz, matheusaaguiar, r0qs, rodiazet