Solidity Version 0.8.38

Release

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,

Full release on GitHub ↗

Release viem

viem@2.57.10

Patch Changes #5260 b56592f7b6cc2d01d926bf6cf278d53cbc0b6e17 Thanks @jxom! - viem/tempo: Added Actions.accounts.upgrade and Actions.accounts.upgradeSync to upgrade an existing account...

Release Sui

Sui mainnet-v1.82.3

Protocol Sui Protocol Version in this release: 139 #27989: Adds protocol version 139 with the enable_forwarding_addresses flag (devnet only). When enabled, the forwarding address...

Release viem

viem@2.57.8

Patch Changes #5239 a97d64c1d401f2bdfb8c549cff6c4a4732d465be Thanks @erkancamli! - Fixed getEnsAvatar substituting the {id} placeholder of ERC-1155 metadata URIs with the raw token ID...