Solidity v0.8.12 improves the javascript/wasm binary and fixes several bugs.
For more details, see the release announcement.
Language Features:
- General: Add equality-comparison operators for external function types.
- General: Support
ContractName.functionName
forabi.encodeCall
, in addition to external function pointers.
Compiler Features:
- Commandline Interface: Event and error signatures are also returned when using
--hashes
. - Yul Optimizer: Remove
mstore
andsstore
operations if the slot already contains the same value. - Yul: Emit immutable references for pure yul code when requested.
Bugfixes:
- Antlr Grammar: Allow builtin names in
yulPath
to support.address
in function pointers. - Code Generator: Fix internal error when accessing the members of external functions occupying more than two stack slots.
- Code Generator: Fix internal error when doing an explicit conversion from
string calldata
tobytes
. - Control Flow Graph: Perform proper virtual lookup for modifiers for uninitialized variable and unreachable code analysis.
- General:
string.concat
now properly takes strings as arguments and returnsstring memory
. It was accidentally introduced as a copy ofbytes.concat
before. - Immutables: Fix wrong error when the constructor of a base contract uses
return
and the derived contract contains immutable variables. - Inheritance: Consider functions in all ancestors during override analysis.
- IR Generator: Add missing cleanup during the conversion of fixed bytes types to smaller fixed bytes types.
- IR Generator: Add missing cleanup for indexed event arguments of value type.
- IR Generator: Fix internal error when copying reference types in calldata and storage to struct or array members in memory.
- IR Generator: Fix IR syntax error when copying storage arrays of structs containing functions.
- Natspec: Fix internal error when overriding a struct getter with a Natspec-documented return value and the name in the struct is different.
- Type Checker: Fix internal error when a constant variable declaration forward references a struct.
- Yul EVM Code Transform: Improved stack shuffling in corner cases.
Solc-Js:
- The wrapper now requires at least nodejs v10.
- The code has been ported to TypeScript.
Build System:
- Emscripten builds store the embedded WebAssembly binary in LZ4 compressed format and transparently decompress on loading.
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.