Solidity, the Smart Contract Programming Language
This release fixes two important bugs and also contains other minor bug fixes and features.
For details, please see the release announcement.
Important Bugfixes:
bytes
arrays.Language Features:
E.selector
for a non-anonymous event E
to access the 32-byte selector topic.Compiler Features:
bytes
that may invalidate references.Bugfixes:
returndatacopy
in cases in which it might perform out-of-bounds reads that unconditionally revert as out-of-gas. Previously, any
returndatacopy
that wrote to memory that was never read from was removed without accounting for the out-of-bounds condition.We especially thank all the contributors that made this release possible:
Christian Parpart, Christian Reitwiessner, Damian Wechman, Daniel Kirchner, Denis T, Dustin Alandzes, Harikrishnan Mulackal, Josep M Sobrepere, Kamil Śliwak, Matheus Aguiar, Mathias L. Baumann, Nishant Sachdeva, Prajwal Borkar, Ryan, Samuel Osewa, Saw-mon-and-Natalie, shady41, sourabh.xyz, uji, Yuri Victorovich
If you want to perform a source build, please only use solidity_0.8.15.tar.gz
and not the zip provided by github directly.
This release fixes two important bugs and also contains other minor bug fixes and features.
For details, please see the release announcement.
Important Bugfixes:
calldatasize()
in all cases.Compiler Features:
sourceList
field.--pretty-json
works also with the following options: --abi
, --asm-json
, --ast-compact-json
, --devdoc
, --storage-layout
, --userdoc
.abi.encodeCall
taking into account the called selector.Bugfixes:
jumpType
field instead of value
.using ... global
in conjunction with libraries.abi.encodeCall
.We especially thank all the contributors that made this release possible:
a3d4, aathan, Aisultan Kali, Alexander Arlt, Alexey Shekhirin, alpharush, andreb0x, Bytecurl, Christian Parpart, Damian Wechman, Daniel Kirchner, dtedesco1, Florian Sey, Hector Roussille, Joshua Quinones, Kamil Śliwak, Leo Alt, Matheus Aguiar, Mathias L. Baumann, Nishant Sachdeva, Nobuhiko Otoba, Ryan, sourabh.xyz, Tharun K
If you want to perform a source build, please only use solidity_0.8.14.tar.gz and not the zip provided by github directly.
Solidity v0.8.13 fixes an important bug related to abi.encodeCall
, extends the using for
directive and implements "go to definition" for the language server.
Furthermore, compiling via the new Yul IR pipeline is now considered production ready.
For more details, see the release announcement.
Important Bugfixes:
abi.encodeCall
in place of fixed bytes arguments.Language Features:
using M for Type;
is allowed at file level and M
can now also be a brace-enclosed list of free functions or library functions.using ... for T global;
is allowed at file level where the user-defined type T
has been defined, resulting in the effect of the statement being available everywhere T
is available.Compiler Features:
--via-ir
in place of --experimental-via-ir
.pop
s on terminating control flow.sstore
and mstore
operations that are never read from.Bugfixes:
type(C).creationCode
, resp. the bytecode used for new C(...)
.We especially thank all the contributors that made this release possible:
a3d4, Abdul Karim Moro, Alexander Arlt, Bhargava Shastry, Callis Ezenwaka, Christian Parpart, Daniel Kirchner, david-k, franzihei, hrkrshnn, Kamil Śliwak, kanedaaaa, Leo Alt, Marenz, Mate Soos, Nishant Sachdeva, Paarth Madan, Richie, Sleepy, Tyler, wechman, Wes Bouaziz,
If you want to perform a source build, please only use solidity_0.8.13.tar.gz and not the zip provided by github directly.
Solidity v0.8.12 improves the javascript/wasm binary and fixes several bugs.
For more details, see the release announcement.
Language Features:
ContractName.functionName
for abi.encodeCall
, in addition to external function pointers.Compiler Features:
--hashes
.mstore
and sstore
operations if the slot already contains the same value.Bugfixes:
yulPath
to support .address
in function pointers.string calldata
to bytes
.string.concat
now properly takes strings as arguments and returns string memory
. It was accidentally introduced as a copy of bytes.concat
before.return
and the derived contract contains immutable variables.Solc-Js:
Build System:
We especially thank all the contributors that made this release possible:
a3d4, Aleksey Bykhun, Amsavarthan Lv, Ayush Shukla, Bhargava Shastry, Braden Watling, Brien, Bruno Barbieri, Christian Parpart, Daniel Kirchner, Esquith Allen, Franziska Heintel, Hakeem Almidan, Harikrishnan Mulackal, joshieDo, joshuatarkwski, Kamil Śliwak, Laurent, Leo Alt, Markus Waas, Mathias L. Baumann, mejsiej, Mohamed Safouen Bouabid, Naveen Sahu, Nikita Stupin, Nishant Sachdeva, Pranay Reddy, Sean Billig, Semar Augusto, William Entriken, yatharthagoenka, Younghoon-Lee.
If you want to perform a source build, please only use solidity_0.8.12.tar.gz and not the zip provided by github directly.
Solidity v0.8.11 adds a first implementation of a Language Server, allows a safer way to perform ABI-encoding and fixes several bugs.
For more details, see the release announcement.
Language Features:
abi.encodeCall(functionPointer, (arg1, arg2, ...))
that type-checks the arguments and returns the ABI-encoded function call data.Compiler Features:
--lsp
option to get solc
to act as a Language Server (LSP) communicating over stdio.Bugfixes:
@use-src
and compiling from Yul to ewasm.We especially thank all the contributors that made this release possible:
Kamil Śliwak, Leo Alt, nishant-sachdeva, Daniel Kirchner, Marenz, minami, Alessandro Coglio, Alex Beregszaszi, Bhargava Shastry, Dallon Asnes, Dallon Asnes, neel iyer, Christian Parpart, GitHubPang, Mathias Baumann, Omkar Nikhal, Saska Karsi, Tynan Richards, dinah.
If you want to perform a source build, please only use solidity_0.8.11.tar.gz and not the zip provided by github directly.
Solidity v0.8.10 can now report contract invariants and reentrancy properties through the SMTChecker. It also contains some new optimizations with regards to external function calls and enabled the new EVM code generator for pure Yul mode.
For more details, see the release announcement.
Language Features:
.address
and .selector
on external function pointers to access their address and function selector.Compiler Features:
--yul-optimizations
.--debug-info
option for selecting how much extra debug information should be included in the produced EVM assembly and Yul code.--asm
, --bin
, --ir-optimized
, --ewasm
and --ewasm-ir
output selection options in assembler mode.parsing
stage.block.*
, msg.*
and tx.*
variables that are present in the called functions.--model-checker-invariants
or the Standard JSON option settings.modelChecker.invariants
.settings.optimizer.details.yulDetails.optimizerSteps
.settings.debug.debugInfo
option for selecting how much extra debug information should be included in the produced EVM assembly and Yul code.Bugfixes:
--error-recovery
option outside of the compiler mode.--libraries
option. Library names not prefixed with a file name used to match any library with that name.block
, msg
, tx
).Important Bugfixes in Experimental Features:
Build System:
We especially thank all the contributors that made this release possible:
4molybdenum2, Adam Bliss, Alex Beregszaszi, Christian Parpart, Daniel Kirchner, David Dzhalaev, Derek Brans, Gyeonghun Park, Harikrishnan Mulackal, José López, Kamil Śliwak, Leo Arias, Leonardo Alt, Mariela Mantle, Mathias Baumann, Midhun07, Mikko Ohtamaa, MrBrain295, Saurabh Sharma, sgmoore, shikharvashistha, Shivam Rajput, soroosh-sdi, Sreekesh V, tcoyvwac, TerranCivilian, vowchick, William Entriken, Zachinquarantine
If you want to perform a source build, please only use solidity_0.8.10.tar.gz and not the zip provided by github directly.
Solidity v0.8.9 is a pure bugfix release and fixes two important, but low severity, bugs. For more details, see the release announcement.
Important Bugfixes:
Bugfixes:
canonicalName
for UserDefinedValueTypeDefinition
and ContractDefinition
.If you want to perform a source build, please only use solidity_0.8.9.tar.gz and not the zip provided by github directly.
Solidity v0.8.8 introduces user defined value types as a major feature, improves overriding interface functions and reading from immutables. Apart from bugfixes, we also cleaned up the command-line interface and improved the way the import mechanism resolves files.
For more details, see the release announcement.
Language Features:
override
specifier.type(E).min
and type(E).max
for enums.Compiler Features:
--include-path
option for specifying extra directories that may contain importable code (e.g. packaged third-party libraries).address(this).balance
and msg.value
.call
as external calls to unknown code.value
option for external function calls.Bugfixes:
--experimental-via-ir
option in Standard JSON, Assembler and Linker modes.--allowed-paths
or implicitly due to base path, remappings and files being compiled. Correctly handle paths that do not match imports exactly due to being relative, non-normalized or empty.import {AliasedName} from "a.sol"
it would use the original name of the symbol and not the aliased one.push
on storage array references returned by internal functions.abi.*
, cryptographic functions and constants..slot
or .offset` not valid when actually
.length`` was used.keccak256
has particular non-identifier arguments.We especially thank all the contributors that made this release possible:
Ahmed Ali, Alessandro Coglio, Alex Beregszaszi, Alexander Arlt, Andrew Lyndem, Basit Raza, benldrmn, Bhargava Shastry, CrimsonGlory, Daniel Kirchner, Harikrishnan Mulackal, hawkess, istareatscreens, John Adler, Kamil Śliwak, Leonardo Alt, Marenz, Midhun07, Nikita Stupin, Paul Razvan Berg, priyansh786, Sean Hawkes, soroosh-sdi, Sreekesh V, yatharthagoenka
If you want to perform a source build, please only use solidity_0.8.8.tar.gz and not the zip provided by github directly.
Solidity v0.8.7 introduces support for the London upgrade, includes various improvements to Yul to EVM code transformation, the SMTChecker and some bugfixes.
For more details, see the release announcement.
Language Features:
block.basefee
for retrieving the base fee of the current block.basefee()
for retrieving the base fee of the current block.Compiler Features:
--pretty-json
works also with --standard--json
.--model-checker-show-unproved
or the JSON option settings.modelChecker.showUnproved
.--model-checker-div-mod-slacks
and the JSON option is settings.modelChecker.divModWithSlacks
.Bugfixes:
bytes.concat()
.bytes.concat()
by disallowing such literals.--optimizer-runs
option in assembly / yul mode.--standard-json
.--standard-json
gets -
as a file name.if
statements.We especially thank all the contributors that made this release possible:
Alex Beregszaszi, Alexander Arlt, Amid Moeinzadeh, Bhargava Shastry, Christian Parpart, CrimsonGlory, Daniel Kirchner, GuLiPing-Hz, Harikrishnan Mulackal, Josué, Kamil Śliwak, Ladislav Sladecek, Leo Alt, Mathias Baumann, Simon Tian, Tony, chriseth, franzihei, iskanderandrews, jaa2, qedk and t11s.
If you want to perform a source build, please only use solidity_0.8.7.tar.gz and not the zip provided by github directly.
Solidity 0.8.6 fixes some non-critical but annoying bugs, especially a warning about unreachable code that is in fact reachable.
For more details, please see the release announcement.
Language Features:
".metadata"
data object in Yul object.Bugfixes:
solcjs
without the --optimize
flag, use settings.optimizer.enabled=false
in Standard JSON instead of omitting the key.settings.optimizer.enabled
was not equivalent to setting it to false
. It meant disabling also the peephole optimizer and jumpdest remover which by default still run with enabled=false
.We especially thank all the contributors that made this release possible: Alex Beregszaszi, Allegheny Crypto, axeldelamarre, Djordje Mijovic, hrkrshnn, jgoodall628, Kamil Śliwak, Leonardo, Mathias Baumann, patekuru, QQ喵, TaldenV
If you want to perform a source build, please only use solidity_0.8.6.tar.gz and not the zip provided by github directly.