Solidity Version 0.8.38
- Version
v0.8.38- Repository
- ethereum/solidity
Release notes
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.38!
This release fixes a security bug in the Yul optimizer, along with a few other bugfixes. In addition, it prepares for the upcoming Glamsterdam EVM fork, improves Yul optimizer performance, and slightly reduces the dispatch cost in the via IR pipeline.
Changelog
Important Bugfixes:
• Yul Optimizer: Fix knowledge about storage/memory address relations going stale in the DataFlowAnalyzer after a variable is reassigned in Yul, which could cause LoadResolver to replace loads with outdated values and EqualStoreEliminator to remove needed stores.
Compiler Features:
• Commandline Interface: Remove the experimental --yul-cfg-json output.
• Commandline Interface: Selecting an ethdebug output no longer implicitly enables the ethdebug and ast-id components of --debug-info; without ethdebug in the selection the --ethdebug-program and --ethdebug-program-runtime outputs carry no semantic debug info.
• Standard JSON Interface: Remove the experimental yulCFGJson output.
• Standard JSON Interface: Selecting an ethdebug output no longer implicitly enables the ethdebug and ast-id components of settings.debug.debugInfo; without ethdebug in the selection the evm.bytecode.ethdebug and evm.deployedBytecode.ethdebug outputs carry no semantic debug info.
• Yul Analyzer: Warn about swapn, dupn and exchange being used as identifiers, since they are going to be reserved identifiers starting from the Amsterdam EVM version.
• Yul IR Code Generation: Use gt(calldatasize(), 3) instead of iszero(lt(calldatasize(), 4)) in the external dispatch routine of IR codegen, saving one instruction per external call.
• Yul Optimizer: Improve performance of DataFlowAnalyzer using flat hash containers.
Bugfixes:
• EVM Assembly Import: Fix target EVM version being ignored when assembling imported experimental EVM assembly JSON.
• Parser: Fix inverted version pragma range comparison for components in the range [231, 232).
• Yul Parser: Fix @use-src source indices that are not decimal numbers being silently truncated instead of rejected.
Build System:
• Switch from C++20 to C++23 as the target standard.
• Update emscripten to version 3.1.54.
• Update minimum version requirement of Clang to 19.1.1.
Solc-Js:
• The wrapper now requires at least nodejs v16.
We would especially like to thank all the contributors that made this release possible:
ADou, Daeho Ro, Dmitry Rantovov, Faisal Firdani, Ferit, Kamil Śliwak, Mate Soos @ Argot, Matheus Aguiar, Nikola Matić, Philippe Laporte, PranaliPathak04, RAHUL KUMAR, Sean Billig, blishko, cdinhosbc98-cell, clonker, djole, dxo, jstcz, kediyalua, r0qs, riba2534, rodiazet,