Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2085 commits
Select commit Hold shift + click to select a range
ab0c571
Remove `yul::Language`
clonker Mar 13, 2026
1f5822f
Hide `--yul` and `--assemble` from `solc --help`
clonker Mar 13, 2026
2aad0a7
Merge pull request #16521 from argotorg/remove_cli_assemble
clonker Mar 18, 2026
4e281a7
Escape object/data names in Yul serializer (#16517)
msooseth Mar 18, 2026
b5e2e78
SSA: Refactor shuffling helper `dupDeepSlotIfRequired`
blishko Mar 12, 2026
8a66e9f
SSA: Prefer swapping instead of shrinking followed by dupping
blishko Mar 12, 2026
bbbb423
Merge pull request #16515 from argotorg/ssa-cfg-shuffler-updates
clonker Mar 19, 2026
90eb849
Refactor hardcoded reachable stack depth
frangio Feb 12, 2026
81013e6
Merge pull request #16467 from frangio/refactor-stack-limit
clonker Mar 19, 2026
6990192
Fix Foundry installation for external contributors
r0qs Feb 17, 2026
64bba94
Merge pull request #16473 from argotorg/fix-gh-api-limit-foundry-circ…
r0qs Mar 19, 2026
0b72013
fix shoulde be dup instuction not swap instruction
cuiweixie Mar 20, 2026
c397b16
Merge pull request #16534 from cuiweixie/bugfix/gas-meter-dup
cameel Mar 20, 2026
6e3ad1a
SSA: Add shuffler test
blishko Mar 22, 2026
675df1e
Merge pull request #16536 from argotorg/ssa-shuffler-test
clonker Mar 23, 2026
16381d3
SSA: Fix reachability check in stack shuffler
blishko Mar 23, 2026
995499a
Give operations in SSA CFGs stable IDs
clonker Mar 19, 2026
6479b63
Extract SSA CFG ID types into SSACFGTypes.h
clonker Mar 19, 2026
082a192
Extract debug data from SSA CFG nodes into a separate side structure
clonker Mar 19, 2026
74c2100
Merge pull request #16533 from argotorg/ssacfg_separate_dbg_structure
clonker Mar 23, 2026
9d864e1
Merge pull request #16538 from argotorg/ssa-fix-inefficiency-in-stack…
blishko Mar 23, 2026
fbae9e2
SSA: Rename method to determine if slot is a valid swap target
blishko Mar 23, 2026
2f7307b
SSA: Introduce and use new stack helper
blishko Mar 23, 2026
b8cb7c3
Merge pull request #16541 from argotorg/ssa-stack-refactor
blishko Mar 23, 2026
aaa8c50
Build SSA CFG in phi-upsilon form
clonker Mar 23, 2026
a42ec83
Merge pull request #16542 from argotorg/phi-upsilon
clonker Mar 24, 2026
a99633a
Introduce experimental EVM version
nikola-matic Mar 9, 2026
15b26e6
Add a soltest run for experimental EVM versions
nikola-matic Mar 10, 2026
c2d2bc6
Changelog
nikola-matic Mar 18, 2026
59ebbe7
Move test/libyul/SSAControlFlowGraphTest to test/libyul/ssa/ControlFl…
clonker Mar 24, 2026
514eb37
Merge pull request #16545 from argotorg/move-ssa-cfg-tests-into-ssa-s…
clonker Mar 24, 2026
67d60c0
SSA: Add shuffler test
blishko Mar 25, 2026
ea83177
Merge pull request #16505 from argotorg/introduce-experimental-evm-ve…
nikola-matic Mar 25, 2026
401b69c
Merge pull request #16546 from argotorg/ssa-shuffler-test
blishko Mar 25, 2026
c68928c
Optimize SSA CFG Builder's trivial phi removal
clonker Mar 24, 2026
3f38cc8
Extract trivial phi elimination from ssa cfg builder
clonker Mar 24, 2026
566bbe0
Merge pull request #16544 from argotorg/phi-upsilon-opt
clonker Mar 25, 2026
adfeac8
Move TrivialPhiEliminator into ssa::transform namespace
clonker Mar 25, 2026
764ee9c
Extract unreachable block cleaning into its own transform pass
clonker Mar 25, 2026
21b8382
Optimize unreachable block cleaner
clonker Mar 25, 2026
24593bb
Unreachable block cleaner resets the block instead of only emptying u…
clonker Mar 25, 2026
5e0a446
Use concept for `SSACFG::forEachExit`
clonker Mar 25, 2026
d831103
Merge pull request #16550 from argotorg/ssa-separate-trivial-phi-and-…
clonker Mar 25, 2026
9f67495
SSA: Add shuffler test
blishko Mar 26, 2026
055fa14
Merge pull request #16554 from argotorg/ssa-yet-another-shuffler-test
blishko Mar 26, 2026
41a57e7
SSA: Simplify shuffler helper
blishko Mar 26, 2026
7f07efc
Merge pull request #16556 from argotorg/ssa-small-refactor
blishko Mar 27, 2026
2be29a9
relax conditions for a valid ssa stackShuffler test definition
clonker Mar 27, 2026
2bbe127
simplify ssa stackShuffler test definitions
clonker Mar 27, 2026
047b337
Merge pull request #16557 from argotorg/improve-shuffler-test-interface
clonker Mar 27, 2026
8ff9565
Tests: Run SSA-CFG on external contracts in semantic tests
blishko Mar 27, 2026
e4a5b77
Merge pull request #16558 from argotorg/enable-ssa-cfg-on-all-externa…
blishko Mar 27, 2026
5be42bf
CI: Add explicit boost-libs to Arch Linux build dependencies
clonker Mar 30, 2026
821d9e0
Merge pull request #16564 from argotorg/ci-fix-arch-linux-boost-dep
clonker Mar 30, 2026
d50cdda
SSA: Shrink stack preemptively in shuffler
blishko Mar 27, 2026
6421f0e
Merge pull request #16559 from argotorg/ssa-shuffler-shrink-preemptively
blishko Mar 30, 2026
70c495e
SSA: Do not dup prematurely in shuffler
blishko Mar 25, 2026
3c6aad3
Merge pull request #16551 from argotorg/ssa-update-shuffler-algorithm
blishko Mar 31, 2026
abe1561
Optimize solThrow
clonker Mar 26, 2026
71cee36
Work around maybe-uninitialized FP in ConditionalSimplifier
clonker Mar 26, 2026
8d3267a
Merge pull request #16553 from argotorg/optimize-solthrow
clonker Mar 31, 2026
e8b15fe
SSA: Prefer smaller stacks when searching for best stack size
blishko Mar 31, 2026
15ee820
Merge pull request #16567 from argotorg/ssa-stack-layout-prefer-small…
blishko Mar 31, 2026
1f9577a
Remove unused include from SSACFG
clonker Mar 30, 2026
dab4347
Store EVMDialect in SSACFG
clonker Mar 30, 2026
2e274f8
SSACFG: use op counts to decide for a target stack size and gas for m…
clonker Mar 30, 2026
4daa7ab
Merge pull request #16566 from argotorg/ssa-use-gas-to-find-stack-size
clonker Mar 31, 2026
a05041a
Fix SSACFG stack layout generator stack-in inefficiency
clonker Apr 1, 2026
0164881
Merge pull request #16568 from argotorg/ssa-fix-stack-layout-gen-inef…
clonker Apr 1, 2026
0cbd39c
Only use gas accumulating callbacks in stack layout generator where n…
clonker Apr 1, 2026
a431a66
Change SSA stack layout to have exitIn instead of stackOut and save b…
clonker Apr 1, 2026
c9f62ba
Add "exitIn" to codespell whitelist
clonker Apr 1, 2026
cecb78e
Merge pull request #16569 from argotorg/ssa-stack-layout-has-exit-in
clonker Apr 2, 2026
d211fb2
handle conditional jump exits uniformly
clonker Apr 1, 2026
449363e
Merge pull request #16571 from argotorg/ssa-unify-jumpi-handling
clonker Apr 2, 2026
ca7d54c
Move coding-style check to GitHub actions
r0qs Oct 15, 2025
c3466bb
ssa stack shuffler returns status
clonker Apr 2, 2026
f180112
ssa shuffler tests report final shuffler status
clonker Apr 3, 2026
2bc5e30
allow broader columns in the ssa shuffler test output table
clonker Apr 7, 2026
8b505c3
add tests with cycles to ssa shuffler tests
clonker Apr 7, 2026
a379310
Add ssa shuffler tests that run into stack too deep
clonker Apr 7, 2026
1993ed6
Merge pull request #16580 from argotorg/ssa-shuffler-status-return
clonker Apr 8, 2026
26d6ef1
SSA: Remove unnecessary shuffling logic
blishko Apr 11, 2026
cc58705
Merge pull request #16591 from argotorg/ssa-remove-unnecessary-logic
blishko Apr 13, 2026
47c8361
SSA: Fix cycle in stack shuffler
blishko Apr 14, 2026
28d6217
Merge pull request #16595 from argotorg/fix-cycling-shuffler
blishko Apr 15, 2026
65d9215
SSA: Use ranges::contains to be more concise
blishko Apr 15, 2026
1d08014
SSA: Only allow values in requested live variables
blishko Apr 15, 2026
6b61167
SSA: More controlled stack growing in shuffler
blishko Apr 16, 2026
30984b1
Merge pull request #16603 from argotorg/ssa-fix-shuffler-cycling
blishko Apr 16, 2026
5b79872
Adding stack shuffler loop bug (#16605)
msooseth Apr 16, 2026
476ee89
in the ssa shuffler fix args slot, when offset is already top no swap…
clonker Apr 16, 2026
3510e26
Merge pull request #16607 from argotorg/fix-ssa-cfg-shuffler-cycle
clonker Apr 17, 2026
d4b07e4
Add oscillating test to shuffler tests
clonker Apr 17, 2026
13c7d66
SSA shuffler: Tighten condition under which a slot is duped up in fix…
clonker Apr 17, 2026
ac9c70d
Merge pull request #16608 from argotorg/ssa-shuffler-fix-oscillation
clonker Apr 17, 2026
2a55ec6
Make ethdebug inputs/outputs consistent
nikola-matic Mar 30, 2026
d3444c2
Docs
nikola-matic Apr 6, 2026
32a5a84
Changelog
nikola-matic Apr 17, 2026
9be6619
Merge pull request #16565 from argotorg/make-ethdebug-consistent-with…
nikola-matic Apr 17, 2026
b898e0c
ssa shuffler: add tests where the stack has to grow by one by pulling…
clonker Apr 18, 2026
d0192f4
ssa shuffler: allNecessarySlotsReachableOrFinal ignores junk in targe…
clonker Apr 18, 2026
2282b93
Merge pull request #16609 from argotorg/ssa-shuffler-all-necessary-sl…
clonker Apr 19, 2026
3f0569c
Merge pull request #16602 from argotorg/ssa-strengthen-shuffler-requi…
blishko Apr 20, 2026
d06a870
ssa cfg shuffler: refactor `shrinkStack` to use priority score
clonker Apr 20, 2026
0a50dbe
SSA CFG: Add shuffler test that runs into stack too deep although it …
clonker Apr 20, 2026
852b3ae
ssa cfg shuffler: extend `shrinkStack` capabilities by allowing to po…
clonker Apr 20, 2026
988c3d2
ssa cfg shuffler: add special case to fixArgsSlot that can move an al…
clonker Apr 20, 2026
dc50cbe
ssa cfg shuffler: fix allNecessarySlotsReachableOrFinal to handle out…
clonker Apr 20, 2026
8bd669e
Merge pull request #16623 from argotorg/ssa-cfg-fix-spurious-stack-to…
clonker Apr 20, 2026
34efa01
Remove `annotation` variable.
rodiazet Apr 20, 2026
331d4da
Rename `exprType -> owningObjectType`.
rodiazet Apr 20, 2026
18307c0
Rename `initialMemberCount -> possibleMemberCountBeforeOverloading`.
rodiazet Apr 20, 2026
77cbe1d
Change messages strings to raw strings.
rodiazet Apr 20, 2026
697262f
Remove unnecessary includes.
rodiazet Apr 20, 2026
42a81f9
Extract self-contained code fragments to functions `resolveOverloads`…
rodiazet Apr 20, 2026
1d47c3c
Extract self-contained code fragments to function `checkAccessedMembe…
rodiazet Apr 20, 2026
e903693
Reorg owning object type category handling into switch statement.
rodiazet Apr 20, 2026
748f1ac
Fix O(n²) in VarNameCleaner::findCleanName using per-base-name counte…
msooseth Apr 20, 2026
e10eb96
Merge pull request #16448 from argotorg/type-checker-member-access-re…
rodiazet Apr 20, 2026
99ff173
Adapt ssa stack shuffler to be able to deal with spill set
clonker Apr 8, 2026
f9af4a0
findOptimalTargetSize pretends to do stack spilling
clonker Apr 8, 2026
af7d851
add stack spilling tests to ssa stack shuffler tests
clonker Apr 15, 2026
a4d3b4d
ssa cfg stack shuffler test: fix visualization issue when the entire …
clonker Apr 21, 2026
61ab9a2
Merge pull request #16599 from argotorg/ssa-cfg-avoid-spilling
clonker Apr 21, 2026
3171c73
ssa cfg: remove literal assignments
clonker Apr 21, 2026
e6bfd0f
Merge pull request #16632 from argotorg/ssa-cfg-instruction-value-uni…
clonker Apr 21, 2026
454215a
SSA: Add test case with suboptimal behaviour
blishko Apr 22, 2026
7fc062d
SSA: Improve shuffler
blishko Apr 22, 2026
2fceb3a
Merge pull request #16634 from argotorg/ssa-improve-shuffling
blishko Apr 22, 2026
607a379
SSA CFG: introduce SSACFG::name and isMainGraph()
clonker Apr 22, 2026
bac374d
SSA CFG: replace Call::function (Scope::Function ref) with FunctionGr…
clonker Apr 22, 2026
1a3ed13
SSA CFG: drop unused SSACFG::functions vector
clonker Apr 22, 2026
fbccc5b
SSA CFG: drop remaining Scope::* refs from the IR
clonker Apr 22, 2026
062d9e8
SSA CFG: rename ControlFlow to ControlFlowGraphs
clonker Apr 22, 2026
1bfa8dd
Merge pull request #16635 from argotorg/ssa-cfg-remove-scope-fct-and-var
clonker Apr 22, 2026
af0afae
ssa cfg: remove FunctionCall yul AST pointers from (Builtin)Calls and…
clonker Apr 24, 2026
f72a1e2
Merge pull request #16638 from argotorg/ssa-cfg-remove-ghost-calls
clonker Apr 24, 2026
afd0d2b
Merge pull request #16266 from argotorg/move-coding-style-check-to-gh…
r0qs Apr 24, 2026
d4cb9cd
SSA CFG: rename OperationId to InstId
clonker Apr 27, 2026
93702d7
Merge pull request #16641 from argotorg/ssa-cfg-instid-rename
clonker Apr 27, 2026
34069ac
SSA CFG: move ValueId::str into its own SSACFGTypes.cpp
clonker Apr 27, 2026
815fadc
SSA CFG: record defining block on Operation
clonker Apr 27, 2026
7d8c383
SSA CFG: relocate value storage into InstructionStore
clonker Apr 27, 2026
62968c9
Merge pull request #16643 from argotorg/ssa-cfg-instruction-store
clonker Apr 27, 2026
bf1a1e9
SSA CFG: extract UseCountSet from LivenessData
clonker Apr 27, 2026
a75fb6b
SSA CFG: introduce StackSlotLiveness for the stack shuffler
clonker Apr 27, 2026
7890234
Merge pull request #16644 from argotorg/ssa-cfg-stack-slot-liveness
clonker Apr 28, 2026
b34f635
Docs: Add AI-assisted contribution guidelines
clonker Apr 8, 2026
01621a6
Add GitHub PR template
clonker Apr 8, 2026
28afc58
Remove external PR greeter bot comment
clonker Apr 13, 2026
4b52c0e
Merge pull request #16582 from argotorg/docs-add-pr-template-and-ai-c…
clonker Apr 28, 2026
ffac8c9
update solidity version in docs
czepluch Apr 28, 2026
394c305
Merge pull request #16647 from czepluch/fix/version-reference-mismatch
cameel Apr 28, 2026
e9490a3
fix rendering issue with the github pr template
clonker Apr 28, 2026
250ced9
Add tests
matheusaaguiar Feb 24, 2026
6b15aca
Do not remove custom errors in IR pipeline when strip revert strings …
matheusaaguiar Feb 26, 2026
03486ef
Update docs
matheusaaguiar Mar 27, 2026
d5cfaa0
Merge pull request #16648 from argotorg/fix-gh-pr-template-rendering-…
clonker Apr 28, 2026
9b58abf
Merge pull request #16466 from argotorg/fixRevertStringFlagInconsiste…
matheusaaguiar Apr 29, 2026
37633cc
Add and update tests
matheusaaguiar Sep 23, 2025
83d5252
Warning about Solidity/Yul future keywords and reserved identifiers
matheusaaguiar Sep 15, 2025
35a9b30
Update docs
matheusaaguiar Sep 24, 2025
ad2fda2
workaround for openzeppelin external tests
matheusaaguiar Mar 2, 2026
392c5f9
Docs: fix ERC 7201 link
matheusaaguiar Apr 29, 2026
b6cefb7
Merge pull request #16206 from argotorg/futureKeywordWarnings
matheusaaguiar Apr 29, 2026
4b11663
Merge pull request #16649 from argotorg/fix_erc7201_eip_link
nikola-matic Apr 29, 2026
b8e1e41
Sort changelog and add date for 0.8.35 release
nikola-matic Apr 28, 2026
47b9ded
Merge pull request #16645 from argotorg/sort-changelog-and-add-date-f…
nikola-matic Apr 29, 2026
45c484e
Bump version to 0.8.36 and add changelog skeleton
nikola-matic Apr 29, 2026
9895088
SSA CFG: mark BlockId/InstId hasValue() as constexpr noexcept
clonker Apr 28, 2026
033dca2
SSA CFG: collapse per-kind value debug data into a single map
clonker Apr 28, 2026
230f3a2
SSA CFG: unify per-kind values into a single Inst table
clonker Apr 28, 2026
efb9db2
SSA CFG: assert maximum number of outputs for builtin and user-define…
clonker Apr 29, 2026
b0e2a13
SSA CFG: Add helper functions to SSA CFG to assess type of instructio…
clonker Apr 29, 2026
9b7bb78
Merge pull request #16646 from argotorg/ssa-cfg-uniformity
clonker Apr 29, 2026
402ee27
Merge pull request #16651 from argotorg/bump-version-to-0-8-36
nikola-matic Apr 29, 2026
0993ab1
Reorganize calldata and abicoder semantic tests
cameel Feb 19, 2026
c0a83bc
calldata_array_dynamic_bytes.sol: Enable testing via Yul
cameel Feb 19, 2026
388b75d
Fix whitespace in some abiEncodeDecode tests
cameel Feb 19, 2026
f5e733b
Remove redundant ABI coder tests
cameel Feb 19, 2026
511cdc0
Enable debug revert strings in some of the existing calldata/encoding…
cameel Feb 19, 2026
68d1a77
Merge pull request #16483 from argotorg/reorganize-calldata-semantic-…
cameel Apr 30, 2026
21fe331
SSA CFG: introduce projections for functions with multiple return values
clonker May 4, 2026
f61f32a
SSA CFG: bind variables to unreachable for non-continuing multi-retur…
clonker May 4, 2026
d25627f
SSA CFG: add test for multi-return non-continuing function
clonker May 4, 2026
b0ff7b9
SSA CFG: Add `outputsOf` helper that returns a range over inst id
clonker May 4, 2026
9cdc2bc
Merge pull request #16668 from argotorg/ssa-cfg-extracts
clonker May 4, 2026
4e2e897
NatSpec: Disallow `@return` tag on events.
cuiweixie Apr 30, 2026
f3cc13d
Update Changelog.md
cuiweixie May 5, 2026
1473ed4
Merge pull request #16666 from cuiweixie/fix/natspec-disallow-return-…
nikola-matic May 5, 2026
0aff263
SSA: Update assumptions made by CodeTransform about stack layouts
blishko May 5, 2026
6e2bd66
Merge pull request #16676 from argotorg/ssa-fix-stack-layout-expectat…
blishko May 6, 2026
9b2533d
SSA CFG: add identity, nop, and tombstone inst opcodes
clonker Apr 30, 2026
07f6026
SSA CFG: add TLSF free list implementation
clonker May 4, 2026
d18c89f
SSA CFG: integrate TLSF free list as backing structure for the instru…
clonker May 4, 2026
ae448db
SSA CFG: add identity remover transform
clonker Apr 30, 2026
4eea30f
SSA CFG: rewrite trivial phi eliminator to work with identities and nops
clonker Apr 30, 2026
c45d441
SSA CFG: free up insts in unreachable blocks
clonker Apr 30, 2026
eccdf47
Merge pull request #16674 from argotorg/ssa-cfg-add-identity-remover-…
clonker May 6, 2026
ea0a8c1
Preserve failAfter directive in isoltest ASTJSON reformatting
tavian-dev Apr 2, 2026
b41c161
Merge pull request #16574 from tavian-dev/fix-isoltest-failafter-stri…
clonker May 7, 2026
ee6668e
SSA CFG: add shared function registry across nested builders
clonker May 7, 2026
2f2e06b
Merge pull request #16686 from argotorg/ssa-cfg-builder-share-functio…
clonker May 7, 2026
49e295d
Fix SMT Encoder treatment of constant operands of unary operations
matheusaaguiar Apr 30, 2026
78ab5f8
Pin node to exact versions instead of lts to fix failing jobs
nikola-matic May 7, 2026
4bb9689
Pin pnpm to v9
nikola-matic May 7, 2026
7da228d
SSA-CFG: Fix stack adjustments for codegen on conditional jump
blishko May 7, 2026
2b9f353
Merge pull request #16654 from argotorg/fixSMTEncoderUnaryOperationCo…
matheusaaguiar May 7, 2026
23182d6
Merge pull request #16688 from argotorg/ssa-fix-stack-adjustments
blishko May 7, 2026
7c0b91c
SSA-CFG: Set up basic optimization pipeline
blishko May 7, 2026
d2207e0
SSA-CFG: Separate building and optimizing phase
blishko May 7, 2026
6fd1c6c
Merge pull request #16689 from argotorg/ssa-optimization-passes
blishko May 7, 2026
1a776c9
Merge pull request #16687 from argotorg/bump-node-js
nikola-matic May 11, 2026
0766c57
SSA CFG: lift the memoryguard value out of the instruction argument i…
clonker May 11, 2026
38bd31b
Merge pull request #16696 from argotorg/ssa-cfg-memoryguard
clonker May 11, 2026
88fb1a1
SSA CFG Stack layout generator: Determine optimal target (not just size)
clonker May 12, 2026
be5e908
Merge pull request #16703 from argotorg/ssa-cfg-tighten-find-optimal-…
clonker May 12, 2026
0fe919c
SSA CFG: Make basic blocks optional and add a free list to them
clonker May 12, 2026
c4df589
SSA CFG: Add lazy live blocks range helper
clonker May 12, 2026
789a0f9
Merge pull request #16707 from argotorg/ssa-cfg-optional-block
clonker May 12, 2026
ed0c426
SSA CFG: Add call graph
clonker May 12, 2026
2ccd8e4
SSA CFG: Add Tarjan's algorithm for SCCs to call graph
clonker May 12, 2026
e0b9da8
SSA CFG: Add `isRecursive` to call graph
clonker May 12, 2026
193db03
SSA CFG: Add call graph tests
clonker May 12, 2026
2d767b1
Merge pull request #16714 from argotorg/ssa-cfg-callgraph
clonker May 13, 2026
f5df12f
Rework `typeViaContractName` and `nativeMembers` fragment.
rodiazet Mar 19, 2026
70106fd
Introduce `typeWhenAttached` helper
rodiazet Apr 21, 2026
f6b841d
Introduce `isVisibleViaContractName`
rodiazet May 13, 2026
27ac306
Merge pull request #16625 from argotorg/rework-native-members
rodiazet May 14, 2026
a72cde2
SSA CFG: printer
clonker May 12, 2026
090bc8f
Merge pull request #16709 from argotorg/ssa-cfg-printer
clonker May 18, 2026
d19c938
Cache Whiskers regexes
DanielVF May 18, 2026
7e00364
Keep trailing line
DanielVF May 18, 2026
14c06b8
Merge branch 'develop' into regex-speedup
DanielVF May 18, 2026
e70f829
libsolutil: speed up picosha2::hash256_one_by_one::process (#16669)
msooseth May 19, 2026
ebe3504
SSA-CFG: Introduce a pass to outline specific blocks
blishko May 11, 2026
74d4d44
SSA-CFG: Enable outliner pass
blishko May 11, 2026
3db2d0e
Merge pull request #16733 from argotorg/ssa-outliner
blishko May 19, 2026
12efe49
Add ssa/spill/SpillSet container
clonker May 20, 2026
bbdb119
Merge pull request #16744 from argotorg/ssa-cfg-add-spill-set-container
clonker May 20, 2026
7af01a4
Merge pull request #16736 from DanielVF/regex-speedup
msooseth May 20, 2026
68ed278
SSA CFG: Stack layout generator knows if spilling is allowed
clonker May 20, 2026
d5e983b
SSA CFG: Stack layout generator populates spillset
clonker May 20, 2026
d8d4998
SSA CFG: Stack layout generator returns spillset
clonker May 20, 2026
86e929f
SSA CFG: Stack layout generator tests emit spilled variables
clonker May 20, 2026
2ca6163
Merge pull request #16750 from argotorg/ssa-cfg-slg-populates-spill-set
clonker May 20, 2026
afa9744
Migrate ethdebug CLI tests to isolest
nikola-matic Apr 21, 2026
8471cf2
Merge pull request #16675 from argotorg/ethdebug-isoltest-migration
nikola-matic May 21, 2026
c8f2e8e
English documentation updates up to v0.8.35-80-g8471cf2ff (2026-05-25)
soldocsbot May 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
version: 2

build:
os: ubuntu-24.04
tools:
python: "3.13"

sphinx:
builder: html
configuration: docs/conf.py

formats:
- pdf
- epub

python:
install:
- requirements: docs/requirements.txt
128 changes: 61 additions & 67 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
cmake_minimum_required(VERSION 3.13.0)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(ETH_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake" CACHE PATH "The path to the cmake directory")
list(APPEND CMAKE_MODULE_PATH ${ETH_CMAKE_DIR})

Expand All @@ -21,7 +23,7 @@ include(EthPolicy)
eth_policy()

# project name and version should be set after cmake_policy CMP0048
set(PROJECT_VERSION "0.8.25")
set(PROJECT_VERSION "0.8.36")
# OSX target needed in order to support std::visit
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
project(solidity VERSION ${PROJECT_VERSION} LANGUAGES C CXX)
Expand All @@ -34,19 +36,39 @@ endif()

option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)
option(SOLC_STATIC_STDLIBS "Link solc against static versions of libgcc and libstdc++ on supported platforms" OFF)
option(STRICT_Z3_VERSION "Use the latest version of Z3" ON)
option(STRICT_Z3_VERSION "Require the exact version of Z3 solver expected by our test suite." ON)
option(PEDANTIC "Enable extra warnings and pedantic build flags. Treat all warnings as errors." ON)
option(PROFILE_OPTIMIZER_STEPS "Output performance metrics for the optimiser steps." OFF)
option(
IGNORE_VENDORED_DEPENDENCIES
"Ignore libraries provided as submodules of the repository and allow CMake to look for \
them in the typical locations, including system-wide dirs."
OFF
)
option(
ONLY_BUILD_SOLIDITY_LIBRARIES
"Only build library targets that can be statically linked against. Do not build executables or tests."
OFF
)
mark_as_advanced(PROFILE_OPTIMIZER_STEPS)
mark_as_advanced(IGNORE_VENDORED_DEPENDENCIES)
mark_as_advanced(ONLY_BUILD_SOLIDITY_LIBRARIES)

# Setup cccache.
include(EthCcache)

# Let's find our dependencies
include(EthDependencies)
include(fmtlib)
include(jsoncpp)
include(range-v3)
include_directories(SYSTEM ${JSONCPP_INCLUDE_DIR})
if (NOT IGNORE_VENDORED_DEPENDENCIES)
include(fmtlib)
include(nlohmann-json)
include(range-v3)
else ()
message(WARNING "-- Ignoring vendored dependencies. Will use installed versions if found. Versions may differ from the ones the compiler was tested with. Make sure to run the test suite and thoroughly test the resulting binaries before using them in production.")
find_package(fmt REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(range-v3 REQUIRED)
endif()

find_package(Threads)

Expand Down Expand Up @@ -75,62 +97,31 @@ configure_file("${PROJECT_SOURCE_DIR}/cmake/templates/license.h.in" include/lice

include(EthOptions)
configure_project(TESTS)
set(LATEST_Z3_VERSION "4.12.1")
set(MINIMUM_Z3_VERSION "4.8.16")
find_package(Z3)
if (${Z3_FOUND})
if (${STRICT_Z3_VERSION})
if (NOT ("${Z3_VERSION_STRING}" VERSION_EQUAL ${LATEST_Z3_VERSION}))
message(
FATAL_ERROR
"SMTChecker tests require Z3 ${LATEST_Z3_VERSION} for all tests to pass.\n\
Build with -DSTRICT_Z3_VERSION=OFF if you want to use a different version. \
You can also use -DUSE_Z3=OFF to build without Z3. In both cases use --no-smt when running tests."
)
endif()
else()
if ("${Z3_VERSION_STRING}" VERSION_LESS ${MINIMUM_Z3_VERSION})
message(
FATAL_ERROR
"Solidity requires Z3 ${MINIMUM_Z3_VERSION} or newer. You can also use -DUSE_Z3=OFF to build without Z3."
)
endif()
endif()
endif()

if(${USE_Z3_DLOPEN})
add_definitions(-DHAVE_Z3)
add_definitions(-DHAVE_Z3_DLOPEN)
find_package(Python3 COMPONENTS Interpreter)
if(${Z3_FOUND})
get_target_property(Z3_HEADER_HINTS z3::libz3 INTERFACE_INCLUDE_DIRECTORIES)
endif()
find_path(Z3_HEADER_PATH z3.h HINTS ${Z3_HEADER_HINTS})
if(Z3_HEADER_PATH)
set(Z3_FOUND TRUE)
else()
message(SEND_ERROR "Dynamic loading of Z3 requires Z3 headers to be present at build time.")
endif()
if(NOT ${Python3_FOUND})
message(SEND_ERROR "Dynamic loading of Z3 requires Python 3 to be present at build time.")
endif()
if(${SOLC_LINK_STATIC})
message(SEND_ERROR "solc cannot be linked statically when dynamically loading Z3.")
endif()
elseif (${Z3_FOUND})
add_definitions(-DHAVE_Z3)
message("Z3 SMT solver found. This enables optional SMT checking with Z3.")
endif()

find_package(CVC4 QUIET)
if (${CVC4_FOUND})
add_definitions(-DHAVE_CVC4)
message("CVC4 SMT solver found. This enables optional SMT checking with CVC4.")
endif()

if (NOT (${Z3_FOUND} OR ${CVC4_FOUND}))
message("No SMT solver found (or it has been forcefully disabled). Optional SMT checking will not be available.\
\nPlease install Z3 or CVC4 or remove the option disabling them (USE_Z3, USE_CVC4).")
if(EMSCRIPTEN)
set(TESTED_Z3_VERSION "4.13.3")
set(MINIMUM_Z3_VERSION "4.8.16")
find_package(Z3)
if (${Z3_FOUND})
add_definitions(-DEMSCRIPTEN_BUILD)
if (${STRICT_Z3_VERSION})
if (NOT ("${Z3_VERSION_STRING}" VERSION_EQUAL ${TESTED_Z3_VERSION}))
message(
FATAL_ERROR
"SMTChecker tests require Z3 ${TESTED_Z3_VERSION} for all tests to pass.\n"
)
endif()
else()
if ("${Z3_VERSION_STRING}" VERSION_LESS ${MINIMUM_Z3_VERSION})
message(
FATAL_ERROR
"Solidity requires Z3 ${MINIMUM_Z3_VERSION} or newer."
)
endif()
endif()
else()
message(FATAL_ERROR "Solidity requires Z3 for emscripten build.")
endif()
endif()

add_subdirectory(libsolutil)
Expand All @@ -141,12 +132,15 @@ add_subdirectory(libyul)
add_subdirectory(libsolidity)
add_subdirectory(libsolc)
add_subdirectory(libstdlib)
add_subdirectory(tools)

if (NOT EMSCRIPTEN)
add_subdirectory(solc)
endif()
if (NOT ONLY_BUILD_SOLIDITY_LIBRARIES)
add_subdirectory(tools)

if (TESTS AND NOT EMSCRIPTEN)
add_subdirectory(test)
if (NOT EMSCRIPTEN)
add_subdirectory(solc)
endif()

if (TESTS AND NOT EMSCRIPTEN)
add_subdirectory(test)
endif()
endif()
2 changes: 1 addition & 1 deletion docs/050-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This section highlights the main breaking changes introduced in Solidity
version 0.5.0, along with the reasoning behind the changes and how to update
affected code.
For the full list check
`the release changelog <https://github.com/ethereum/solidity/releases/tag/v0.5.0>`_.
`the release changelog <https://github.com/argotorg/solidity/releases/tag/v0.5.0>`_.

.. note::
Contracts compiled with Solidity v0.5.0 can still interface with contracts
Expand Down
4 changes: 2 additions & 2 deletions docs/060-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This section highlights the main breaking changes introduced in Solidity
version 0.6.0, along with the reasoning behind the changes and how to update
affected code.
For the full list check
`the release changelog <https://github.com/ethereum/solidity/releases/tag/v0.6.0>`_.
`the release changelog <https://github.com/argotorg/solidity/releases/tag/v0.6.0>`_.


Changes the Compiler Might not Warn About
Expand Down Expand Up @@ -119,7 +119,7 @@ Metadata Hash Options

The compiler now appends the `IPFS <https://ipfs.io/>`_ hash of the metadata file to the end of the bytecode by default
(for details, see documentation on :doc:`contract metadata <metadata>`). Before 0.6.0, the compiler appended the
`Swarm <https://ethersphere.github.io/swarm-home/>`_ hash by default, and in order to still support this behavior,
`Swarm <https://www.ethswarm.org/>`_ hash by default, and in order to still support this behavior,
the new command-line option ``--metadata-hash`` was introduced. It allows you to select the hash to be produced and
appended, by passing either ``ipfs`` or ``swarm`` as value to the ``--metadata-hash`` command-line option.
Passing the value ``none`` completely removes the hash.
Expand Down
2 changes: 1 addition & 1 deletion docs/070-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This section highlights the main breaking changes introduced in Solidity
version 0.7.0, along with the reasoning behind the changes and how to update
affected code.
For the full list check
`the release changelog <https://github.com/ethereum/solidity/releases/tag/v0.7.0>`_.
`the release changelog <https://github.com/argotorg/solidity/releases/tag/v0.7.0>`_.


Silent Changes of the Semantics
Expand Down
12 changes: 12 additions & 0 deletions docs/080-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@
Cambios introducidos en Solidity v0.8.0
***************************************

<<<<<<< HEAD
Esta sección versa sobre los principales cambios introducidos en la versión 0.8.0 de Solidity.
Para ver la lista completa
`registro de cambios de lanzamiento <https://github.com/ethereum/solidity/releases/tag/v0.8.0>`_.
=======
This section highlights the main breaking changes introduced in Solidity
version 0.8.0.
For the full list check
`the release changelog <https://github.com/argotorg/solidity/releases/tag/v0.8.0>`_.
>>>>>>> english/develop

Cambios silenciosos en la semántica
===================================
Expand Down Expand Up @@ -160,8 +167,13 @@ Cambios en el interface
* La salida de ``--combined-json`` ha cambiado: Los campos JSON ``abi``, ``devdoc``, ``userdoc`` y
``storage-layout`` ahora son subobjetos. Antes de la versión 0.8.0 se usaban serializados como strings.

<<<<<<< HEAD
* El "legacy AST" ha sido eliminado (``--ast-json`` en el interfaz de linea de comandos ``legacyAST`` para el
standard JSON). Use "compact AST" (``--ast-compact--json`` para ``AST``) en su lugar.
=======
* The "legacy AST" has been removed (``--ast-json`` on the commandline interface and ``legacyAST`` for standard JSON).
Use the "compact AST" (``--ast-compact-json`` resp. ``AST``) as replacement.
>>>>>>> english/develop

* El antigüo informador (``--old-reporter``) ha sido eliminado.

Expand Down
2 changes: 1 addition & 1 deletion docs/_static/css/custom-dark.css
Original file line number Diff line number Diff line change
Expand Up @@ -590,6 +590,6 @@
stroke: white;
}

:root[style*=dark] .a4 .sig-name {
:root[style*=dark] .sig-name {
background-color: transparent !important;
}
6 changes: 3 additions & 3 deletions docs/_static/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ h1 {
}

section:first-of-type h1:first-of-type {
font-family: 'Overpass mono', monospace;
font-family: 'Overpass Mono', monospace;
font-size: 48px;
margin-top: 3rem;
margin-bottom: 5rem;
Expand Down Expand Up @@ -229,7 +229,7 @@ small * {
.wy-side-nav-search {
background-color: transparent !important;
color: var(--color-a) !important;
box-shadow: 0 4 4 0 var(--color-a);
box-shadow: 0 4px 4px 0 var(--color-a);
border-bottom: 1px solid var(--color-d) !important;
}

Expand Down Expand Up @@ -823,4 +823,4 @@ a.skip-to-content:focus {
#content {
scroll-margin-top: 6rem;
scroll-behavior: smooth;
}
}
5 changes: 5 additions & 0 deletions docs/_static/css/toggle.css
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,9 @@ html.transition *:after {

.wy-menu-vertical a:hover {
background-color: #0002;
}

body {
font-weight: 300;
letter-spacing: 0.5px;
}
12 changes: 6 additions & 6 deletions docs/_static/js/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ const CONTRIBUTE_PATH = `/en/latest/contributing.html`;
const ABOUT_PATH = `${SOLIDITY_HOME_URL}/about`;
const FORUM_URL = "https://forum.soliditylang.org/";
const NAV_LINKS = [
{ name: "Blog", href: BLOG_URL },
{ name: "Documentation", href: DOCS_URL },
{ name: "Use cases", href: USE_CASES_PATH },
{ name: "Contribute", href: CONTRIBUTE_PATH },
{ name: "About", href: ABOUT_PATH },
{ name: "Forum", href: FORUM_URL },
{ name: window.NAV_LINKS.blog, href: BLOG_URL },
{ name: window.NAV_LINKS.documentation, href: DOCS_URL },
{ name: window.NAV_LINKS.use_cases, href: USE_CASES_PATH },
{ name: window.NAV_LINKS.contribute, href: CONTRIBUTE_PATH },
{ name: window.NAV_LINKS.about, href: ABOUT_PATH },
{ name: window.NAV_LINKS.forum, href: FORUM_URL },
];

const MOBILE_MENU_TOGGLE_CLASS = "shift";
Expand Down
37 changes: 26 additions & 11 deletions docs/_static/js/initialize.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,24 @@ function rearrangeDom() {
document.body.prepend(wrapperDiv);

const rstVersions = document.querySelector(".rst-versions");
rstVersions.remove();
const wyNavSide = document.querySelector("nav.wy-nav-side");
wyNavSide.appendChild(rstVersions);
// NOTE: Since RTD migration to addons, `.rst-versions` is no longer present in the DOM.
// The following code is kept for compatibility with older versions.
// See: https://github.com/readthedocs/readthedocs.org/issues/11474
if (rstVersions && wyNavSide) {
rstVersions.remove();
wyNavSide.appendChild(rstVersions);
}
const backdrop = document.createElement("div");
backdrop.classList.add("backdrop");
wrapperDiv.appendChild(backdrop);

const content = document.querySelector(".wy-nav-content");
content.id = "content";
const oldWrap = document.querySelector("section.wy-nav-content-wrap");
oldWrap.remove();
document.querySelector(".wy-grid-for-nav").appendChild(content);
if (content) {
content.id = "content";
document.querySelector("section.wy-nav-content-wrap")?.remove();
document.querySelector(".wy-grid-for-nav")?.appendChild(content);
}
}

function buildHeader() {
Expand Down Expand Up @@ -144,8 +150,15 @@ const updateActiveNavLink = () => {
document.addEventListener("locationchange", updateActiveNavLink);

function updateGitHubEditPath() {
// Replaces the version number in the GitHub edit path with "develop"
// Replaces the version number in the GitHub edit path with "develop" if it exists.
// This is to ensure that the edit path always points to the `develop` branch instead of the specific version branch.
// Note that it will fail silently if the anchor element is not found, i.e. the page is not editable or
// if the sphinx_rtd_theme is updated to a version that changes the anchor element.
// See: https://github.com/readthedocs/sphinx_rtd_theme/blob/a1c2147b17cbf0e57b7d7a6450ad4d9a5ff362cf/sphinx_rtd_theme/breadcrumbs.html#L35
// TODO: We should consider a more robust way to handle this in the future.
const gitHubEditAnchor = document.querySelector(".wy-breadcrumbs-aside > a");
if (!gitHubEditAnchor) return;

const url = new URL(gitHubEditAnchor.href);
const split = url.pathname.split("/");
const versionIndex = split.indexOf("blob") + 1;
Expand Down Expand Up @@ -195,10 +208,12 @@ function initialize() {
.querySelector(":root")
.setAttribute("style", `--color-scheme: ${mode}`);

// NOTE: Since RTD migration to addons, the elements below are no longer present in the DOM.
// The following code is kept for compatibility with older versions.
// Remove old input and RTD logo anchor element
document.querySelector("input[name=mode]").remove();
document.querySelector("label[for=switch]").remove();
document.querySelector(".wy-side-nav-search > a").remove();
document.querySelector("input[name=mode]")?.remove();
document.querySelector("label[for=switch]")?.remove();
document.querySelector(".wy-side-nav-search > a")?.remove();

// Add footer note
addFooterNote();
Expand Down Expand Up @@ -239,7 +254,7 @@ document.addEventListener("click", handleClick);

const handleKeyDown = (e) => {
if (e.metaKey && e.key === "k") {
document.querySelector("#rtd-search-form input").focus();
document.querySelector("#rtd-search-form input")?.focus();
} else if (e.key === "Escape") {
toggleMenu({ force: false });
}
Expand Down
Loading