Skip to content

Version 0.8.26

Latest
Compare
Choose a tag to compare
@nikola-matic nikola-matic released this 21 May 09:23
· 72 commits to develop since this release
8a97fa7

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler Solidity v0.8.26. This release brings some exciting new features, namely a much faster default optimizer sequence for the via IR pipeline, which cuts the compilation times significantly. We are introducing usage of require functions with custom errors, at this time for the via IR pipeline only, in addition to an optimization for reverting with errors of small static encoding sizes, which should now have lower gas costs. As always, there are multiple small bugfixes to go with the release.

Changelog

Language Features:

  • Introduce a new overload require(bool, Error) that allows usage of require functions with custom errors. This feature is available in the via-ir pipeline only.

Compiler Features:

  • SMTChecker: Create balance check verification target for CHC engine.
  • Yul IR Code Generation: Cheaper code for reverting with errors of a small static encoding size.
  • Yul Optimizer: New, faster default optimizer step sequence.

Bugfixes:

  • Commandline Interface: Fix ICE when the optimizer is disabled and an empty/blank string is used for --yul-optimizations sequence.
  • SMTChecker: Fix false positive when comparing hashes of same array or string literals.
  • SMTChecker: Fix internal error on mapping access caused by too strong requirements on sort compatibility of the index and mapping domain.
  • SMTChecker: Fix internal error when using an empty tuple in a conditional operator.
  • SMTChecker: Fix internal error when using bitwise operators with an array element as argument.
  • Standard JSON Interface: Fix ICE when the optimizer is disabled and an empty/blank string is used for optimizerSteps sequence.
  • StaticAnalyzer: Only raise a compile time error for division and modulo by zero when it's between literals.
  • TypeChecker: Fix compiler crash when the left-hand side of an assignment was a parenthesized non-tuple expression of a tuple type.
  • Yul Optimizer: Fix optimizer executing each repeating part of the step sequence at least twice, even if the code size already became stable after the first iteration.
  • Yul Optimizer: Fix the order of assignments generated by SSATransform being dependent on AST IDs, sometimes resulting in different (but equivalent) bytecode when unrelated files were added to the compilation pipeline.

Build System:

  • Replace internal JSON library jsoncpp with nlohmann::json.

We especially thank all the contributors that made this release possible:
Alex Beregszaszi, Alexander Arlt, Ardis Lu, Daniel Kirchner, InventiveCoder, Juliano Penna, Kamil Śliwak, Martin Blicha, Matheus Aguiar, Moritz Hoffmann, Nikola Matić, Patrick Collins, Pawel Gebal, Snoppy, Tamas Molnar, Vc, Vijay Raj Panchal, Zuri Obozuwa, edurivara, hanghuge, hydai, looklose, pcw109550, r0qs, wilsoncusack, zo9999