Skip to content

Releases: ethereum/solidity

Version 0.8.30

07 May 10:27
73712a0
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler v0.8.30.

This latest version of the compiler introduces prague as the new default EVM version, in addition to a couple of other small additions and fixes.

Changelog

Compiler Features:

  • EVM: Set default EVM Version to prague.
  • NatSpec: Capture Natspec documentation of enum values in the AST.

Bugfixes:

  • SMTChecker: Do not consider loop conditions as constant-condition verification target as this could cause incorrect reports and internal compiler errors.
  • SMTChecker: Fix incorrect analysis when only a subset of contracts is selected with --model-checker-contracts.
  • SMTChecker: Fix internal compiler error when string literal is used to initialize user-defined type based on fixed bytes.

We would especially like to thank all the contributors that made this release possible:
argentpapa, Bilog WEB3, clonker, closeobserve, Daniel Kirchner, emmmm, [email protected], futreall, Henry Chu, Kaan Uzdoğan, Kamil Śliwak, Martin Blicha, Matheus Aguiar, matta, Maximilian Hubert, Maxim Ryabykh, Michael Cho, NeoByteX, Nikola Matić, Ocenka, PixelPilot, rodiazet, Skylar Ray, VolodymyrBg, Voronor

Version 0.8.29

12 Mar 07:38
ab55807
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler v0.8.29.

This latest version of the compiler brings support for EVM Object Format (experimental), Storage Layout Specifiers, and more!

Changelog

Language Features:

  • Allow relocating contract storage to an arbitrary location.

Compiler Features:

  • Error Reporting: Errors reported during code generation now point at the location of the contract when more fine-grained location is not available.
  • ethdebug: Experimental support for instructions and source locations.
  • EVM: Support for the EVM version "Osaka".
  • EVM Assembly Import: Allow enabling opcode-based optimizer.
  • General: The experimental EOF backend implements a subset of EOF sufficient to compile arbitrary high-level Solidity syntax via IR with optimization enabled.
  • SMTChecker: Support block.blobbasefee and blobhash.
  • SMTChecker: The option --model-checker-print-query no longer requires --model-checker-solvers smtlib2.
  • SMTChecker: Z3 is now a runtime dependency, not a build dependency (except for emscripten build).
  • Yul Parser: Make name clash with a builtin a non-fatal error.

Bugfixes:

  • Commandline Interface: Report StackTooDeep errors in compiler mode as proper errors instead of printing diagnostic information meant for internal compiler errors.
  • Error Reporting: Fix error locations not being shown for source files with empty names.
  • General: Fix internal compiler error when requesting IR AST outputs for interfaces and abstract contracts.
  • Metadata: Fix custom cleanup sequence missing from metadata when other optimizer settings have default values.
  • SMTChecker: Fix internal compiler error when analyzing overflowing expressions or bitwise negation of unsigned types involving constants.
  • SMTChecker: Fix reporting on targets that are safe in the context of one contract but unsafe in the context of another contract.
  • SMTChecker: Fix SMT logic error when analyzing cross-contract getter call with BMC.
  • SMTChecker: Fix SMT logic error when contract deployment involves string literal to fixed bytes conversion.
  • SMTChecker: Fix SMT logic error when external call has extra effectless parentheses.
  • SMTChecker: Fix SMT logic error when initializing a fixed-sized-bytes array using string literals.
  • SMTChecker: Fix SMT logic error when translating invariants involving array store and select operations.
  • SMTChecker: Fix wrong encoding of string literals as arguments of ecrecover precompile.
  • Standard JSON Interface: Fix generatedSources and sourceMap being generated internally even when not requested.
  • TypeChecker: Fix spurious compilation errors due to incorrect computation of contract storage size which erroneously included transient storage variables.
  • Yul: Fix internal compiler error when a code generation error should be reported instead.
  • Yul Optimizer: Fix failing debug assertion due to dereferencing of an empty optional value.

Build system:

  • Linux release builds are fully static again and no longer depend on glibc.
  • Switch from C++17 to C++20 as the target standard.

Solc-Js:

  • The wrapper now requires at least nodejs v12.

We would especially like to thank all the contributors that made this release possible:
Alexander Arlt, chloefeal, clonker, comfsrt, Cypher Pepe, Daniel Kirchner, DaniPopes, dxsullivan, ericlehong, Fallengirl, flylai, FT, fuder.eth, Gaetan Lepage, gmh5225, haoyang9804, Hopium, Igor Żuk, imilygathia, irreduciblen, Jeff Wentworth, Kamil Śliwak, kilavvy, leopardracer, Marco, Martin Blicha, Matheus Aguiar, Maxim Evtush, monem, Nikola Matić, Noisy, piguagua, PixelPilot, planetBoy, r0qs, RiceChuan, rodiazet, Rudko Hanna, santamasa, Sebastian Miasojed, Skyge, Skylar Ray, sukey2008, Tran Quang Loc, Ustas, Vishwa Mehta, xiaobei0715, XxAlex74xX

Version 0.8.28

09 Oct 06:37
7893614
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler Solidity v0.8.28. This is going to be a fairly small release compared to the last one - but an important nonetheless, as we're finally releasing high level language support for transient storage, although at this time, only transient storage state variables of value types are supported. We will of course be working on bringing full support (reference types) in the upcoming releases.

Changelog

Language Features:

  • Transient storage state variables of value types are now fully supported.

Compiler Features:

  • General: Generate JSON representations of Yul ASTs only on demand to reduce memory usage.
  • Standard JSON Interface: Bytecode or IR can now be requested for a subset of all contracts without triggering unnecessary code generation for other contracts.

Bugfixes:

  • SMTChecker: Fix SMT logic error when assigning to an array of addresses.
  • Yul AST: Fix shifted native source locations when debug info selection included code snippets.

Build system:

  • Removed USE_LD_GOLD option and default to use the compiler default linker. For custom linkers, CMAKE_CXX_FLAGS can be used.

We would especially like to thank all the contributors that made this release possible:
Alexander Arlt, Anandu Raveendran, backbonexe, clonker, Daniel Kirchner, Elias Rad, Franco Victorio, Kamil Śliwak, Martin Blicha, Matheus Aguiar, Nikola Matić, Pawel Gebal, r0qs, rodiazet, Vishwa Mehta

Version 0.8.27

04 Sep 08:35
40a35a0
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler Solidity v0.8.27. We've got some exciting new features this time around as well - likely the most anticipated being the support for require with custom errors in the legacy pipeline, which was previously only supported with via IR. On the topic of via IR, we have also made some efficiency improvements with regards to compilation times, namely the caching of already optimized IR, and the re-use thereof. Apart from these, we've also fixed quite a few bugs, added some minor convenience features, and are continuing our work on high-level transient storage support.

Changelog

Language Features:

  • Accept declarations of state variables with transient data location (parser support only, no code generation yet).
  • Make require(bool, Error) available when using the legacy pipeline.
  • Yul: Parsing rules for source location comments have been relaxed: Whitespace between the location components as well as single-quoted code snippets are now allowed.

Compiler Features:

  • Commandline Interface: Add --transient-storage-layout output.
  • Commandline Interface: Allow the use of --asm-json output option in assembler mode to export EVM assembly of the contracts in JSON format.
  • Commandline Interface: Do not perform IR optimization when only unoptimized IR is requested.
  • Constant Optimizer: Uses PUSH0 if supported by the selected evm version.
  • Error Reporting: Unimplemented features are now properly reported as errors instead of being handled as if they were bugs.
  • EVM: Support for the EVM version "Prague".
  • Peephole Optimizer: PUSH0, when supported, is duplicated explicitly instead of using DUP1.
  • Peephole Optimizer: Remove identical code snippets that terminate the control flow if they occur one after another.
  • SMTChecker: Add CHC engine check for underflow and overflow in unary minus operation.
  • SMTChecker: Replace CVC4 as a possible BMC backend with cvc5.
  • Standard JSON Interface: Add transientStorageLayout output.
  • Standard JSON Interface: Do not perform IR optimization when only unoptimized IR is requested.
  • Yul: Drop the deprecated typed Yul dialect that was only accessible via --yul in the CLI.
  • Yul: The presence of types in untyped Yul dialects is now a parser error.
  • Yul Optimizer: Caching of optimized IR to speed up optimization of contracts with bytecode dependencies.
  • Yul Optimizer: The optimizer now treats some previously unrecognized identical literals as identical.

Bugfixes:

  • Assembler: Fix ICE caused by imprecise calculation of required size of tags in bytecode when code size is above 255.
  • Parser: Fix spuriously emitted parser error for unary plus operations when used as binary operator in some cases.
  • SMTChecker: Fix error that reports invalid number of verified checks for BMC and CHC engines.
  • SMTChecker: Fix formatting of unary minus expressions in invariants.
  • SMTChecker: Fix internal compiler error when reporting proved targets for BMC engine.
  • SMTChecker: Fix SMT logic error when assigning to an array of contracts or functions.
  • Standard JSON Interface: For Yul input, properly produce output artifacts in case of warnings.
  • TypeChecker: Fix segfault when assigning nested tuple to tuple.
  • Yul IR Code Generation: Deterministic order of Yul subobjects.
  • Yul Optimizer: Fix Yul source locations always referring to unoptimized source, even in optimized outputs.
  • Yul Optimizer: Fix warnings being generated twice when there are no errors.
  • Yul Optimizer: Name simplification could lead to forbidden identifiers with a leading and/or trailing dot, e.g., x._ would get simplified into x..
  • Yul Parser: Fix segfault when parsing very long location comments.

Build System:

  • Change build system to use git submodules for some dependencies (nlohmann-json, fmtlib & range-v3).

We especially thank all the contributors that made this release possible:
Alex Beregszaszi, Alexander Arlt, Alireza Arjmand, Ardis Lu, Bhargava Shastry, Daniel Kirchner, Daniel Zahariev, Francisco Giordano, Guilherme Ferreira, Haoyang Ma, Howe, Ikko Eltociear Ashimine, Kaan Uzdoğan, Kamil Śliwak, Martin Blicha, Matheus Aguiar, Meet Mangukiya, Moritz Hoffmann, Nikola Matić, Pawel Gebal, Tilak Madichetti, ToonVanHove, Vishwa Mehta, Zuri Obozuwa, dxo, ljmanini, r0qs, rodiazet, shafu, snoppy

Version 0.8.26

21 May 09:23
8a97fa7
Compare
Choose a tag to compare

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

Version 0.8.25

14 Mar 11:30
b61c2a9
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler Solidity v0.8.25. This release is a small one, and is mainly centered around the Dencun hard-fork that occurred yesterday. On that note, the default EVM version in the compiler is now cancun, and we've also introduced some gas savings via better exploitation of the MCOPY opcode, as well fixing an issue that could result in larger than necessary bytecode.

Changelog

Compiler Features:

  • Code Generator: Use MCOPY instead of MLOAD/MSTORE loop when copying byte arrays.
  • EVM: Set default EVM version to cancun.
  • Yul Analyzer: Emit transient storage warning only for the first occurrence of tstore.

Bugfixes:

  • Assembler: Prevent incorrect calculation of tag sizes.
  • Commandline Interface: Do not run IR pipeline when --via-ir is used but no output that depends on the IR is requested.
  • EVM Assembly Import: Fix handling of missing source locations during import.
  • SMTChecker: Ensure query is properly flushed to a file before calling solver when using SMT-LIB interface.
  • SMTChecker: Fix internal error caused by not respecting the sign of an integer type when constructing zero-value SMT expressions.
  • SMTChecker: Run Eldarica only when explicitly requested with --model-checker-solvers eld, even when it is present on the system.

We especially thank all the contributors that made this release possible:
Aditya Kode, Alexander Arlt, Bhargava Shastry, ByeongSu Go, Chomtana, Cyrus, Daniel Kirchner, Dimitris Apostolou, Jeason, Kamil Śliwak, Martin Blicha, Matheus Aguiar, Nikola Matić, Saw-mon & Natalie, Simon Perriard, Twice, Vishwa Mehta, Vojtch, minaminao, omahs, pgebal, r0qs, racerol

UPDATE 2024-03-14: The MacOS universal binary originally included here has been rebuilt and replaced due to a missing signature which made it unusable.

The SHA-256 hash of the old binary was ce09577e654628c2b4d00e66bcab7c8a4dc18c1d9812dcbab7bd8572a6d4d27e. The new one is cc3f94a70ac681b0304084acc1980aabe2a1bb3240d44ce76a8df0e1e77a2110.

Version 0.8.24

25 Jan 10:28
e11b9ed
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!

We are excited to announce the release of the Solidity Compiler Solidity v0.8.24. This newest version of the compiler brings readiness for the "Cancun" network upgrade, including support for transient storage (EIP-1153), shard blob transactions (EIP-4844), & more. The release binaries for macOS are now also compatible with Apple Silicon chips.

Notable Features

  • Support for transient storage for inline assembly (EIP-1153)
  • Support for BLOBBASEFEE (EIP-7516)
  • Support for MCOPY (EIP-5656)
  • Changes in SELFDESTRUCT Behavior (EIP-6780)
  • Support for Apple Silicon

Changelog

Language Features

  • Introduce global block.blobbasefee for retrieving the blob base fee of the current block.
  • Introduce global function blobhash(uint) for retrieving versioned hashes of blobs, akin to the homonymous Yul builtin.
  • Yul: Introduce builtin blobbasefee() for retrieving the blob base fee of the current block.
  • Yul: Introduce builtin blobhash() for retrieving versioned hashes of blobs associated with the transaction.
  • Yul: Introduce builtin mcopy() for cheaply copying data between memory areas.
  • Yul: Introduce builtins tload() and tstore() for transient storage access.

Compiler Features

  • EVM: Support for the EVM Version "Cancun".
  • SMTChecker: Support bytes.concat except when string literals are passed as arguments.
  • Standard JSON Interface: Add experimental support to import EVM assembly in the format used by --asm-json.
  • TypeChecker: Comparison of internal function pointers now yields a warning, as it can produce unexpected results with the legacy pipeline enabled.

Bugfixes:

  • AST import: Fix bug when importing inline assembly with empty let variable declaration.

We especially thank all the contributors that made this release possible:
Alexander Arlt, Bhargava Shastry, Daniel Kirchner, GoodDaisy, Jitendra Kumar, Kamil Śliwak, Matheus Aguiar, Nikola Matić, Qi He, Sukey, Vishwa Mehta, pgebal, r0qs, xiaolou86.

Version 0.8.23

08 Nov 12:20
f704f36
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!
We are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.23.

Changelog

Important Bugfixes:

  • Optimizer: Fix block deduplicator bug which led to blocks which are identical apart from the contents of verbatim instructions to be treated as equivalent and thus collapsed into a single one.

Compiler Features:

  • Commandline Interface: An empty --yul-optimizations sequence can now be always provided.
  • Standard JSON Interface: An empty optimizerSteps sequence can now always be provided.

We especially thank all the contributors that made this release possible:
Daniel Kirchner, Kamil Śliwak, Markus Osterlund / robriks, Matheus Aguiar, Nikola Matić, Nuzair

Version 0.8.22

25 Oct 10:40
4fc1097
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!
We are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.22.

IMPORTANT NOTE:
This release deprecates support for EVM versions older than Constantinople for the reason of ruling out the need to maintain multiple complex code paths or workarounds for ancient EVM versions. In case you rely on the support for such EVM versions, please reach out to us.

Notable Features:

  • Unchecked loop increments
  • Adding support for importing EVM Assembly JSON (experimental)
  • Adjusting Yul optimizer to rematerialize zero literals

Changelog

Language Features:

  • Allow defining events at file level.

Compiler Features:

  • Code Generator: Remove redundant overflow checks of certain for loops when the counter variable cannot overflow.
  • Commandline Interface: Add --no-import-callback option that prevents the compiler from loading source files not given explicitly on the CLI or in Standard JSON input.
  • Commandline Interface: Add an experimental --import-asm-json option that can import EVM assembly in the format used by --asm-json.
  • Commandline Interface: Use proper severity and coloring also for error messages produced outside of the compilation pipeline.
  • EVM: Deprecate support for "homestead", "tangerineWhistle", "spuriousDragon" and "byzantium" EVM versions.
  • Parser: Remove the experimental error recovery mode (--error-recovery / settings.parserErrorRecovery).
  • SMTChecker: Support user-defined operators.
  • Yul Optimizer: If PUSH0 is supported, favor zero literals over storing zero values in variables.
  • Yul Optimizer: Run the Rematerializer and UnusedPruner steps at the end of the default clean-up sequence.

Bugfixes:

  • Code Generator: Fix output from via-IR code generator being dependent on which files were discovered by import callback. In some cases, a different AST ID assignment would alter the order of functions in internal dispatch, resulting in superficially different but semantically equivalent bytecode.
  • NatSpec: Fix internal error when requesting userdoc or devdoc for a contract that emits an event defined in a foreign contract or interface.
  • SMTChecker: Fix encoding error that causes loops to unroll after completion.
  • SMTChecker: Fix inconsistency on constant condition checks when while or for loops are unrolled before the condition check.
  • Yul Optimizer: Fix replacement decisions during CSE being affected by Yul variable names generated by the compiler, resulting in different (but equivalent) bytecode in some situations.

AST Changes:

  • AST: Fix wrong initial ID for Yul nodes in the AST.

We especially thank all the contributors that made this release possible:
Alejandro Criado-Pérez, Alexander Arlt, Bhargava Shastry, Daniel, Jun Zhang, Kamil Śliwak, Leo, Martin Blicha, Matheus Aguiar, Nikola Matić, Paul Wackerow, Pawel Gebal, Saw-mon & Natalie, Zach Obront, franzihei, omahs, pgebal, r0qs, shalaamum

Version 0.8.21

19 Jul 08:57
d9974be
Compare
Choose a tag to compare

Introducing the newest version of the Solidity Compiler!
We are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.21.

Changelog

Important Bugfixes:

  • Code Generator: Always generate code for the expression in <expression>.selector in the legacy code generation pipeline.
  • Yul Optimizer: Fix FullInliner step (i) not preserving the evaluation order of arguments passed into inlined functions in code that is not in expression-split form (i.e. when using a custom optimizer sequence in which the step not preceded by ExpressionSplitter (x)).

Language Features:

  • Allow qualified access to events from other contracts.
  • Relax restrictions on initialization of immutable variables. Reads and writes may now happen at any point at construction time outside of functions and modifiers. Explicit initialization is no longer mandatory.

Compiler Features:

  • Commandline Interface: Add --ast-compact-json output in assembler mode.
  • Commandline Interface: Add --ir-ast-json and --ir-optimized-ast-json outputs for Solidity input, providing AST in compact JSON format for IR and optimized IR.
  • Commandline Interface: Respect --optimize-yul and --no-optimize-yul in compiler mode and accept them in assembler mode as well. --optimize --no-optimize-yul combination now allows enabling EVM assembly optimizer without enabling Yul optimizer.
  • EWasm: Remove EWasm backend.
  • Parser: Introduce pragma experimental solidity, which will enable an experimental language mode that, in particular, has no stability guarantees between non-breaking releases and is not suited for production use.
  • SMTChecker: Add --model-checker-print-query CLI option and settings.modelChecker.printQuery JSON option to output the SMTChecker queries in the SMTLIB2 format. This requires using smtlib2 solver only.
  • Standard JSON Interface: Add ast file-level output for Yul input.
  • Standard JSON Interface: Add irAst and irOptimizedAst contract-level outputs for Solidity input, providing AST in compact JSON format for IR and optimized IR.
  • Yul Optimizer: Remove experimental ReasoningBasedSimplifier optimization step.
  • Yul Optimizer: Stack-to-memory mover is now enabled by default whenever possible for via IR code generation and pure Yul compilation.

Bugfixes:

  • Code Generator: Disallow complex expressions whose results are types, built-ins, modules or some unassignable functions. The legacy code generation pipeline would not actually evaluate them, discarding any side effects they might have.
  • Code Generator: Fix not entirely deterministic order of functions in unoptimized Yul output. The choice of C++ compiler in some cases would result in different (but equivalent) bytecode (especially from native binaries vs emscripten binaries).
  • Commandline Interface: Fix internal error when using --stop-after parsing and requesting some of the outputs that require full analysis or compilation.
  • Commandline Interface: It is no longer possible to specify both --optimize-yul and --no-optimize-yul at the same time.
  • SMTChecker: Fix encoding of side-effects inside if and ternary conditionalstatements in the BMC engine.
  • SMTChecker: Fix false negative when a verification target can be violated only by a trusted external call from another public function.
  • SMTChecker: Fix generation of invalid SMT-LIB2 scripts in BMC engine with trusted mode for external calls when CHC engine times out.
  • SMTChecker: Fix internal error caused by incorrectly classifying external function call using function pointer as a public getter.
  • SMTChecker: Fix internal error caused by using external identifier to encode member access to functions that take an internal function as a parameter.
  • Standard JSON Interface: Fix an incomplete AST being returned when analysis is interrupted by certain kinds of fatal errors.
  • Type Checker: Disallow using certain unassignable function types in complex expressions.
  • Type Checker: Function declaration types referring to different declarations are no longer convertible to each other.
  • Yul Optimizer: Ensure that the assignment of memory slots for variables moved to memory does not depend on AST IDs that may depend on whether additional files are included during compilation.
  • Yul Optimizer: Fix FullInliner step not ignoring code that is not in expression-split form.
  • Yul Optimizer: Fix optimized IR being unnecessarily passed through the Yul optimizer again before bytecode generation.

AST Changes:

  • AST: Add the experimentalSolidity field to the SourceUnit nodes, which indicates whether the experimental parsing mode has been enabled via pragma experimental solidity.

We especially thank all the contributors that made this release possible:

Alejandro Criado-Pérez, Alexander Arlt, Alexandre Ferreira, Bhargava Shastry, Cliff Syner, Daniel Kirchner, David Bar-On, GiokaMarkella, Jun Zhang, Kaan Uzdoğan, Kamil Śliwak, Leo Alt, Martin Blicha, Matheus Aguiar, Nikola Matić, Nuno Santos, Paul Wackerow, Pawel Gebal, johnnygee19, minaminao, r0qs