Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2594 commits
Select commit Hold shift + click to select a range
f3705de
Ethdebug instructions and source ranges.
aarlt Aug 27, 2024
fbbe2dd
Merge pull request #15368 from ethereum/ethdebug_instructions_and_sou…
ekpyron Mar 10, 2025
2abfe0b
ethdebug: correct handling of abstract contracts.
aarlt Mar 11, 2025
07b202c
Merge pull request #15920 from ethereum/ethdebug_instructions_and_sou…
ekpyron Mar 11, 2025
9c80b9b
Update and add tests
matheusaaguiar Mar 4, 2025
5297950
Warn when layout base is near the end of storage
matheusaaguiar Mar 4, 2025
05b0efb
Storage layout specifier docs
matheusaaguiar Feb 25, 2025
b4f9bb0
fixup! Storage layout specifier docs
cameel Mar 11, 2025
a371a4f
fixup! Storage layout specifier docs
cameel Mar 11, 2025
3d09047
fixup! Storage layout specifier docs
cameel Mar 11, 2025
e633eb4
fixup! Storage layout specifier docs
cameel Mar 11, 2025
de966a7
fixup! Storage layout specifier docs
cameel Mar 11, 2025
4bf8a9f
Merge pull request #15912 from ethereum/warnStorageLayoutNearTheEnd
cameel Mar 11, 2025
0598c01
Merge pull request #15892 from ethereum/storageLayoutSpecifierDocs
ekpyron Mar 11, 2025
3199cca
Bump vendored dependencies post-release
clonker Mar 11, 2025
44533c9
Correct Chinese translation URL
flylai Feb 27, 2025
15f4a30
Merge pull request #15922 from ethereum/release-checklist-update
clonker Mar 11, 2025
76e1791
Merge pull request #15896 from flylai/patch-2
ekpyron Mar 11, 2025
d85833e
docs: fix broken link for apeworkx tool
clonker Mar 11, 2025
6963512
Merge pull request #15923 from ethereum/fix-doc-links
ekpyron Mar 11, 2025
90719b2
Fix changelog for upcoming release
nikola-matic Mar 11, 2025
4355555
Merge pull request #15925 from ethereum/fix-changelog-for-upcoming-re…
nikola-matic Mar 11, 2025
0c45a5e
Update changelog and bugs by version
matheusaaguiar Mar 11, 2025
a61cbb4
Document the eofVersion field in StandardJSON and metadata
cameel Mar 11, 2025
643caa3
Mark the evmVersion field in StandardJSON as optional
cameel Mar 11, 2025
7c461bf
Merge pull request #15928 from ethereum/document-eof-flag
ekpyron Mar 11, 2025
ab55807
Merge pull request #15926 from ethereum/changelogReleaseDate
nikola-matic Mar 12, 2025
6738ce6
bump fmtlib to 11.1.4
clonker Mar 12, 2025
363f1ae
Set next version 0.8.30
matheusaaguiar Mar 11, 2025
340ae32
Merge pull request #15927 from ethereum/setNextVersion
matheusaaguiar Mar 12, 2025
c84cac8
release checklist: mention buildx as requirement for docker_deploy_ma…
clonker Mar 12, 2025
bf51113
Merge pull request #15930 from ethereum/mention-buildx-dep-in-release…
clonker Mar 14, 2025
f0fbb28
Merge pull request #15931 from ethereum/bump-fmtlib
clonker Mar 14, 2025
40a4d5d
Minor spelling fix in external test runners base.py
vipocenka Mar 14, 2025
d547bf2
Release checklist: Updates style
clonker Mar 14, 2025
70d344a
Remove double backticks from CODING_STYLE.md
cameel Mar 14, 2025
c8893ec
Merge pull request #15939 from ethereum/release_checklist_remove_doub…
cameel Mar 14, 2025
145e281
Name dependent CSE bug: Compare ASM only
clonker Mar 12, 2025
a652292
Merge pull request #15942 from ethereum/name_dependent_cse_bug_only_asm
cameel Mar 15, 2025
74cd757
SSACFG Builder: Improve function call visitor
clonker Mar 17, 2025
9620f4f
Merge pull request #15950 from ethereum/ssacfg_builder_improve_functi…
clonker Mar 18, 2025
25463c5
SMTChecker: Fix analysis for selected contracts
blishko Feb 14, 2025
b53eba3
Merge pull request #15880 from ethereum/smt-fix-contract-selection
blishko Mar 19, 2025
f2c9eec
Yul Disambiguator: Don't check for builtins when translating identifiers
clonker Mar 17, 2025
ad281dd
Merge pull request #15951 from ethereum/disambiguator_dont_check_for_…
clonker Mar 20, 2025
8f38f23
Peephole optimiser: Replace apply methods recursion by folding expres…
clonker Mar 19, 2025
098b854
IRGeneratorForStatements does not check for builtin when mangling use…
clonker Mar 17, 2025
4a93b2a
Merge pull request #15952 from ethereum/remove_builtin_check_from_inl…
clonker Mar 21, 2025
28982f1
Merge pull request #15957 from ethereum/make-peephole-opt-more-opt-fr…
nikola-matic Mar 21, 2025
08c9f53
AssemblyItem gets an optional instruction and the null-state is prope…
clonker Mar 12, 2025
2536b14
Merge pull request #15934 from ethereum/default-initialize-instructio…
clonker Mar 21, 2025
dd03613
SMTChecker: Fix string literal to fixed bytes conversion with user-de…
blishko Mar 20, 2025
d07c219
Merge pull request #15963 from ethereum/smt-fix-string-to-bytes-conve…
blishko Mar 21, 2025
d97d711
Update metadata docs for "libraries" and "compilationSettings" fields
kuzdogan Feb 26, 2025
2e33f25
Update the metdata settings field to refer the rest of the settings t…
kuzdogan Feb 26, 2025
1f044c1
Remove "sorted" in std-json remappings docs
kuzdogan Mar 20, 2025
1ccea41
AsmAnalysis: Stronger use of fmt, refactor function call analysis
clonker Mar 14, 2025
b9cbf1e
AsmAnalysis: Improve wording of invalid argument for eofcreate/return…
clonker Mar 21, 2025
cc58ab1
Merge pull request #15895 from kuzdogan/update-metadata-docs
cameel Mar 21, 2025
e134620
Merge pull request #15941 from ethereum/asm_analysis_fmt
clonker Mar 21, 2025
d1cbd8d
interpreter uses yul AST instead of separate block and dialect
clonker Mar 17, 2025
8859625
yulrun on AST
clonker Mar 17, 2025
dafe006
ossfuzz uses yul AST instead of separate block and dialect
clonker Mar 17, 2025
6326b86
Merge pull request #15954 from ethereum/ossfuzz_use_ast_over_block
clonker Mar 22, 2025
77878e5
add repeats to external.sh
clonker Mar 14, 2025
14fcd5d
Merge pull request #15965 from ethereum/repeats_for_external_benchmarks
nikola-matic Mar 26, 2025
2ebafd3
fix: Remove unnecessary Expression temporary in CHCSmtLib2Interface
VolodymyrBg Mar 25, 2025
a04f946
Merge pull request #15967 from VolodymyrBg/vbg
cameel Mar 27, 2025
a448921
SMTChecker: Move helper function towards its only usage
blishko Mar 28, 2025
5ea8f25
Add support for enum values in NatSpec
nikola-matic Mar 19, 2025
c4b454a
Docs
nikola-matic Apr 2, 2025
c608428
SMTChecker: Refactor processing invariants from the solver
blishko Mar 28, 2025
7a4ddb2
Merge pull request #15972 from ethereum/smt-refactor
blishko Apr 3, 2025
949a52f
Merge pull request #15956 from ethereum/make-enums-available-in-natspec
nikola-matic Apr 4, 2025
dbd5521
remove install of obsolete jsoncpp
clonker Apr 4, 2025
f323bd4
cmake: use boost include dirs and version in status message
clonker Apr 4, 2025
e6d5699
set CMP0167 to OLD behavior for boost versions < 1.70
clonker Apr 4, 2025
4c23d04
Disable pedantic compilation for CMake 4.0.0 and AppleClang 15.0
clonker Apr 7, 2025
6da61ca
Merge pull request #15982 from ethereum/fix_macos_build
clonker Apr 8, 2025
2cd97dc
Use pre-release version of sphinx-a4doc for python 3.13
clonker Apr 8, 2025
0a6cce5
relax sphinx version range to [2.1, 9)
clonker Apr 8, 2025
971ac4c
require rtd theme < 3.0.0
clonker Apr 8, 2025
55506a9
Merge pull request #15987 from ethereum/fix_docs
clonker Apr 8, 2025
502ebaa
Add support for upcoming Boost 1.88.0
cho-m Mar 31, 2025
334b768
Remove Z3 from ppa scripts and add ubunutu plucky.
ekpyron Mar 12, 2025
38810a3
Adjust release checklist.
ekpyron Apr 8, 2025
fd2d543
Also drop libcvc4-dev and smtdependencies generally.
ekpyron Apr 8, 2025
4f23c18
Merge pull request #15976 from cho-m/support-boost-1.88.0
nikola-matic Apr 8, 2025
e13c612
Language Server: Fix hover crashes on invalid parameters
henryhchchc Apr 4, 2025
1cd7045
Remove disable pedantic mode switch for osx cmake 4.0.0 and clang 15.0.0
clonker Apr 14, 2025
09715e6
osx ci: Install Boost to /opt/boost instead of /usr/local
clonker Apr 14, 2025
e1bf062
Merge pull request #16005 from ethereum/soften_macos_pedantic_switch
clonker Apr 14, 2025
f1c3a2d
chore: remove redundant word in comment
closeobserve Apr 13, 2025
597e5a9
Merge pull request #16004 from closeobserve/closeobserve_feature
nikola-matic Apr 14, 2025
08310eb
Merge pull request #15980 from henryhchchc/develop
nikola-matic Apr 14, 2025
1706158
Update premium.sol
futreall Mar 25, 2025
a1be4f3
Update publisher.sol
futreall Mar 25, 2025
cc6a9cf
Merge pull request #15966 from futreall/develop
nikola-matic Apr 14, 2025
db53ca5
Merge pull request #15932 from ethereum/releasePPAScript
clonker Apr 15, 2025
513535a
Adding clarity on extcalls with precompiled contracts.
mattaereal Mar 8, 2024
8b85d14
Update custom.css
Bilogweb3 Feb 26, 2025
eda68d5
Update events.rst
PixelPil0t1 Mar 11, 2025
feed69b
Update calling_nonexisting_contract.sol
argentpapa Feb 27, 2025
ba3fd65
docs: Fix grammar in workflow trigger condition
voronor Feb 4, 2025
27f915c
Merge pull request #14931 from mattaereal/develop
matheusaaguiar Apr 16, 2025
ab77b34
Update ControlFlowGraphBuilder.h
eeemmmmmm Feb 26, 2025
7fee102
Merge pull request #15891 from Bilogweb3/develop
matheusaaguiar Apr 16, 2025
10b21b8
Replace temporary std::string with std::string_view in _yulname liter…
Feb 28, 2025
da51fe4
Merge pull request #15924 from PixelPil0t1/patch-1
matheusaaguiar Apr 16, 2025
0c28f4a
Merge pull request #15897 from argentpapa/develop
matheusaaguiar Apr 16, 2025
f5134df
Merge pull request #15827 from voronor/patch-2
matheusaaguiar Apr 16, 2025
771d805
Fix typo in test script comments
NeoByteXx Feb 22, 2025
687ad65
Merge pull request #15890 from eeemmmmmm/patch-2
matheusaaguiar Apr 16, 2025
7d1dfa3
Merge pull request #15904 from Ferran969/improve-yulname-literal
matheusaaguiar Apr 16, 2025
0881d62
Merge pull request #15885 from NeoByteXx/develop
matheusaaguiar Apr 16, 2025
d22a070
fix minor issues
sky-coderay Mar 14, 2025
8cf3305
Merge pull request #15940 from sky-coderay/develop
matheusaaguiar Apr 17, 2025
a7ac67c
fix duplicate EVMHost.cpp
zeroprooff Apr 17, 2025
02d2c9a
change into test dir for cmdline tests
clonker Apr 9, 2025
2fa170e
update test expectations with cwd being in test dir
clonker Apr 10, 2025
2ab62d7
Merge pull request #15996 from ethereum/cmdlineTests_go_to_test_dir
clonker Apr 22, 2025
880b61b
SMTChecker: Refactor handling of ConstantCondition verification target
blishko Feb 13, 2025
d9083dc
SMTChecker: Loop conditions should be analyzed as in loop context in BMC
blishko Mar 21, 2025
8caf354
Merge pull request #15862 from ethereum/smt-fix-loops-in-bmc
blishko Apr 23, 2025
b1a9031
SMTChecker: Clean up includes
blishko Mar 29, 2025
629bb28
SMTChecker: Remove unused functionality
blishko Mar 29, 2025
7526fbc
Merge pull request #16019 from ethereum/smt-more-refactoring
blishko Apr 23, 2025
ae3da8c
docs: fixed a mismatch in the name of the function referenced in the …
ryabykhms Oct 2, 2024
5baa791
Merge pull request #15473 from ryabykhms/docs-example-issue
matheusaaguiar Apr 23, 2025
fe74111
EVMAssemblyStack: Add extra accessors that do not require contract name
cameel Apr 16, 2025
dd01ddd
TestCaseReader: Expose fileName()
cameel Mar 14, 2025
d3238c0
Add a transparent comparator to c_instructions to allow string_view l…
cameel Apr 19, 2025
266c7d4
EVM assembly test case with JSON input
cameel Mar 14, 2025
fe39551
Support human-readable assembly in EVM assembly test case
cameel Apr 18, 2025
6d62ea0
Merge pull request #16012 from ethereum/evmasm-test-case
cameel Apr 23, 2025
975ee13
eof: Enable peephole optimizer for EOF.
rodiazet Apr 9, 2025
03fde2a
eof: Add peephole optimiser tests for EOF specific optimisations
rodiazet Apr 23, 2025
4c4860b
Merge pull request #15991 from ipsilon/enable-peephole-optimiser
cameel Apr 24, 2025
649c8ee
Update SMTPortfolio.cpp
gap-editor Apr 26, 2025
76e8016
Update SMTPortfolio.cpp
gap-editor Apr 28, 2025
b136829
Merge pull request #16025 from gap-editor/1
blishko Apr 28, 2025
cc78330
Update Types.cpp
lechpzn May 4, 2025
09fc1d4
PlainAssemblyParser: Store the stream globally in the class
cameel Apr 25, 2025
73af652
PlainAssemblyParser: Syntax for subassemblies
cameel Apr 25, 2025
202933b
PlainAssemblyParser: Support pushing assembly sizes and offsets
cameel Apr 25, 2025
d77affb
Merge pull request #16021 from ethereum/subassemblies-in-evm-assembly…
cameel May 6, 2025
78107e3
Assembly item asserts that it's not implicity constructed by instruct…
clonker Apr 27, 2025
d0bae61
Merge pull request #16026 from ethereum/assert_swapn_dupn_in_assembly…
clonker May 6, 2025
49c2e55
Set prague as EVM default version
matheusaaguiar Apr 28, 2025
ca699f9
bump hardhat version
matheusaaguiar May 6, 2025
24d534f
Increase resource for uniswap ext test
matheusaaguiar May 6, 2025
13d734f
Workaround for openzepellin ext test
matheusaaguiar May 6, 2025
b53d23a
Merge pull request #16030 from ethereum/makePragueDefaultEVMVersion
matheusaaguiar May 7, 2025
1e6842c
Fix broken docs links
nikola-matic May 7, 2025
3bd783d
Merge pull request #16033 from ethereum/fix-docs-links
nikola-matic May 7, 2025
1c8d401
Set changelog release date
nikola-matic May 7, 2025
73712a0
Merge pull request #16035 from ethereum/set-release-date-for-0-8-30
nikola-matic May 7, 2025
e313827
Set version to 0.8.31
nikola-matic May 7, 2025
9f2ca6c
Merge pull request #16037 from ethereum/set-version-to-0-8-31
nikola-matic May 7, 2025
895eb45
Add literal assignment to SSACFG
clonker May 9, 2025
d790750
Add option to keep literal assignments in SSACFG builder
clonker May 9, 2025
47f859b
Merge pull request #16041 from ethereum/ssacfg_treat_literals_as_vari…
clonker May 12, 2025
fe890f4
update docs: fix the position of flyout menu
fanhefeng Apr 28, 2025
9396227
Merge pull request #16029 from fanhefeng/patch-fixed_docs
clonker May 13, 2025
e0daa3c
assign zero value to not explicitly initialized variables during ssa …
clonker May 13, 2025
f5d5488
Merge pull request #16044 from ethereum/fix_ssacfg_literal_handling
clonker May 13, 2025
27c16d0
update fmtlib to 11.2.0
clonker May 14, 2025
19db669
Merge pull request #16048 from ethereum/update_fmtlib
clonker May 14, 2025
287b66a
Add instruction location info to eof assembly
clonker Apr 9, 2025
a5e20d2
Refactor legacy assemble to also use RAII instruction location constr…
clonker Apr 10, 2025
b8e81b9
Merge pull request #16052 from ethereum/eof_source_locations_unoptimi…
clonker May 15, 2025
6ae63c2
Mention that dots are still allowed in variables/function names in yu…
matheusaaguiar May 14, 2025
660b918
Merge pull request #16051 from ethereum/amendInlineAssemblyDocs
matheusaaguiar May 19, 2025
54979c1
Add nullptr checking for rename logging
henryhchchc May 20, 2025
d6a396e
Merge pull request #16059 from henryhchchc/develop
clonker May 21, 2025
446610b
Replace Reference StandardCompiler.cpp
dizer-ti May 22, 2025
aa4ec3e
Merge pull request #16032 from lechpzn/develop
matheusaaguiar May 29, 2025
e96a237
Yul: add label id dispenser
clonker Feb 7, 2025
a43f598
Merge pull request #15838 from ethereum/add_node_id_dispenser
clonker May 30, 2025
30caf71
Remove deprecated whitespace in literal operator declaration
r0qs Jun 1, 2025
7c816bf
Merge pull request #16062 from dizer-ti/develop
matheusaaguiar Jun 2, 2025
fe1a690
Rename emitted
vtjl10 May 13, 2025
c5fc3dd
Update TestFileParserTests.cpp
zeevick10 May 7, 2025
2b1a9e5
Update protoToAbiV2.cpp
zeevick10 May 7, 2025
5c3c957
Merge pull request #16073 from ethereum/remove-whitespace-literal-ope…
r0qs Jun 2, 2025
403b548
Fix shellcheck script
nikola-matic Jun 4, 2025
c294948
Merge pull request #16045 from vtjl10/develop
matheusaaguiar Jun 4, 2025
472449c
Merge pull request #16034 from zeevick10/develop
matheusaaguiar Jun 4, 2025
7bbdd9a
Merge pull request #16075 from ethereum/fix-shellcheck-script
nikola-matic Jun 4, 2025
bcddfb4
fix typo in file's name
otc-png Jun 4, 2025
725f8f7
replace 404 reference Natspec.cpp
davidjsonn Jun 5, 2025
2329440
Merge pull request #16076 from otc-png/develop
matheusaaguiar Jun 6, 2025
8125657
Merge pull request #16078 from davidjsonn/develop
matheusaaguiar Jun 6, 2025
1cd062a
Merge pull request #16010 from zeroprooff/develop
matheusaaguiar Jun 6, 2025
7b01123
fix typo in comment
kks-code Jun 6, 2025
d75bd39
Ethdebug requires assembly instance
clonker Apr 12, 2025
43b0f06
Ethdebug instructions output over multiple code sections
clonker Apr 8, 2025
4ea1d47
Add ethdebug schema
clonker Apr 11, 2025
3b924e6
Ethdebug uses schema for serialization
clonker Apr 9, 2025
89a0f91
Update test expectations with eof-enabled ethdebug
clonker Apr 9, 2025
482f64b
Test ethdebug output when requested in standard json under EOF
clonker Apr 11, 2025
059bd8e
Add tests for ethdebug output on abstract contracts and interfaces
clonker May 6, 2025
dd25b24
Changelog uses single blank line between headlines
clonker May 15, 2025
1401089
Export literal assignments as operation
r0qs Jun 5, 2025
929c65b
Merge pull request #16079 from kks-code/develop
r0qs Jun 11, 2025
f1af146
Merge pull request #16082 from ethereum/yul-cfg-assignment-op
r0qs Jun 11, 2025
a9df00c
Merge pull request #15994 from ethereum/eof_source_locations_unoptimized
clonker Jun 11, 2025
41eb541
Compare ethdebug output to program schema
clonker Apr 16, 2025
f83ad82
Merge pull request #16009 from ethereum/ethdebug_test_schema
clonker Jun 11, 2025
b04a46b
Fix broken HackMD link in release checklist (#16080)
MamunC0der Jun 11, 2025
637a8a1
Fix b_osx homebrew issue
nikola-matic Jun 16, 2025
ce09289
Merge pull request #16092 from ethereum/circle-ci-mac-brew-fix
nikola-matic Jun 18, 2025
48d1c9f
Rename dev_return_desc_multiple_unamed_mixed.sol to dev_return_desc_m…
kilavvy Jun 17, 2025
e6d1fea
Rename dev_return_desc_multiple_unamed_mixed_2.sol to dev_return_desc…
kilavvy Jun 17, 2025
9a4100a
Rename dev_return_desc_multiple_unamed.sol to dev_return_desc_multipl…
kilavvy Jun 17, 2025
52864f6
Merge pull request #16089 from kilavvy/develop
nikola-matic Jun 18, 2025
67288d6
Correct the regex calls
emmanuel-ferdman May 21, 2025
584cdcc
Merge pull request #16060 from emmanuel-ferdman/develop
nikola-matic Jun 18, 2025
fbd9d1a
ci: add "--break-system-packages" to pip install
clonker Jul 3, 2025
0917604
Merge pull request #16105 from ethereum/fix_pip_usage_in_ci
clonker Jul 3, 2025
aa1dae1
external tests: pin gnosis to v1.4.1
clonker Jul 10, 2025
82b4b5d
Merge pull request #16110 from ethereum/fix_ci
nikola-matic Jul 10, 2025
4efb2b3
Replace string comparison with empty() method in DocStringParser
eeemmmmmm Jul 2, 2025
a81065a
Replace string comparison with empty() method in Parser
eeemmmmmm Jul 2, 2025
d0f6e0b
Merge pull request #16103 from eeemmmmmm/develop
clonker Jul 10, 2025
66541b9
yulrun: Move dialect check of parse step after analyze
clonker Jul 11, 2025
406bdfb
Merge pull request #16112 from ethereum/yulrun_assert_dialect_after_a…
clonker Jul 11, 2025
53df4b7
Add EVMVersion::current() helper
clonker Apr 25, 2025
70592af
First define _all_ EVM functions, then declare them based on EVM vers…
clonker Mar 20, 2025
9007889
Separate out builtin function collection into its own class
clonker Apr 28, 2025
e465a31
Add allEOFVersions to EVMVersion
clonker Apr 28, 2025
e39aaeb
EVMVersion::allVersions is constexpr
clonker Apr 28, 2025
55e29b6
EVMDialect: add test that enforces builtin handle compatibility
clonker Mar 20, 2025
1d21bb4
Merge pull request #15961 from ethereum/safeguard_builtin_handles
clonker Jul 20, 2025
35282a8
CI: Update cimg/node to 20.19 for gp2 and pool together
clonker Jul 21, 2025
7d68e44
Merge pull request #16128 from ethereum/update_node_for_ext_tests
clonker Jul 21, 2025
fde1aaf
Yul: NoOutputAssembly assigns functions instead of appending
clonker Jul 21, 2025
240492d
Merge pull request #16127 from ethereum/fix_no_output_dialect_asan
clonker Jul 21, 2025
2593de8
Fix solidity public calls url
r0qs Jul 22, 2025
f7058d8
Merge pull request #16130 from ethereum/fix-solidity-meeting-url
r0qs Jul 22, 2025
bf6548b
Add tests with non-zero PUSH #[$] asm instructions
clonker Mar 18, 2025
57f39fa
Make subassembly IDs based on fixed-size 64 bit uint
clonker Mar 18, 2025
f6b95db
Add test with non-zero PUSH #[$] to solc-js tests
clonker Mar 19, 2025
459ad24
Merge pull request #15955 from ethereum/fix_asm_subpath_obj_id
clonker Jul 24, 2025
683ad06
Fix typo in fitsPrecisionBase2 function comment
MozirDmitriy Jul 28, 2025
6260712
Merge pull request #16137 from MozirDmitriy/mzd
cameel Jul 28, 2025
84dd707
ssa cfg builder: treat constant conditions in jumpi explicitly
clonker Jul 30, 2025
140fdbd
ssa cfg builder: treat constant switches explicitly
clonker Jul 30, 2025
aef512f
Merge pull request #16140 from ethereum/ssacfg_consteval_if_switch
clonker Jul 31, 2025
09e5561
English documentation updates up to v0.8.30-94-gaef512f87 (2025-08-01)
soldocsbot Aug 1, 2025
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-22.04
tools:
python: "3.11"

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

formats:
- pdf
- epub

python:
install:
- requirements: docs/requirements.txt
135 changes: 64 additions & 71 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
cmake_minimum_required(VERSION 3.13.0)

set(ETH_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake" CACHE PATH "The the path to the cmake directory")
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})

# Set the build type, if none was specified.
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
set(DEFAULT_BUILD_TYPE "RelWithDebInfo")
else()
set(DEFAULT_BUILD_TYPE "Release")
Expand All @@ -21,7 +21,7 @@ include(EthPolicy)
eth_policy()

# project name and version should be set after cmake_policy CMP0048
set(PROJECT_VERSION "0.8.18")
set(PROJECT_VERSION "0.8.31")
# 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 +34,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 All @@ -66,71 +86,40 @@ include(EthUtils)

# Create license.h from LICENSE.txt and template
# Converting to char array is required due to MSVC's string size limit.
file(READ ${CMAKE_SOURCE_DIR}/LICENSE.txt LICENSE_TEXT HEX)
file(READ ${PROJECT_SOURCE_DIR}/LICENSE.txt LICENSE_TEXT HEX)
string(REGEX MATCHALL ".." LICENSE_TEXT "${LICENSE_TEXT}")
string(REGEX REPLACE ";" ",\n\t0x" LICENSE_TEXT "${LICENSE_TEXT}")
set(LICENSE_TEXT "0x${LICENSE_TEXT}")

configure_file("${CMAKE_SOURCE_DIR}/cmake/templates/license.h.in" include/license.h)
configure_file("${PROJECT_SOURCE_DIR}/cmake/templates/license.h.in" include/license.h)

include(EthOptions)
configure_project(TESTS)
set(LATEST_Z3_VERSION "4.11.2")
set(MINIMUM_Z3_VERSION "4.8.0")
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 @@ -140,12 +129,16 @@ add_subdirectory(libevmasm)
add_subdirectory(libyul)
add_subdirectory(libsolidity)
add_subdirectory(libsolc)
add_subdirectory(tools)
add_subdirectory(libstdlib)

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()
10 changes: 5 additions & 5 deletions docs/050-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ For most of the topics the compiler will provide suggestions.
``payable`` or create a new internal function for the program logic that
uses ``msg.value``.

* For clarity reasons, the command line interface now requires ``-`` if the
* For clarity reasons, the command-line interface now requires ``-`` if the
standard input is used as source.

Deprecated Elements
Expand All @@ -147,18 +147,18 @@ This section lists changes that deprecate prior features or syntax. Note that
many of these changes were already enabled in the experimental mode
``v0.5.0``.

Command Line and JSON Interfaces
Command-line and JSON Interfaces
--------------------------------

* The command line option ``--formal`` (used to generate Why3 output for
* The command-line option ``--formal`` (used to generate Why3 output for
further formal verification) was deprecated and is now removed. A new
formal verification module, the SMTChecker, is enabled via ``pragma
experimental SMTChecker;``.

* The command line option ``--julia`` was renamed to ``--yul`` due to the
* The command-line option ``--julia`` was renamed to ``--yul`` due to the
renaming of the intermediate language ``Julia`` to ``Yul``.

* The ``--clone-bin`` and ``--combined-json clone-bin`` command line options
* The ``--clone-bin`` and ``--combined-json clone-bin`` command-line options
were removed.

* Remappings with empty prefix are disallowed.
Expand Down
14 changes: 7 additions & 7 deletions docs/060-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ For the full list check
Changes the Compiler Might not Warn About
=========================================

This section lists changes where the behaviour of your code might
This section lists changes where the behavior of your code might
change without the compiler telling you about it.

* The resulting type of an exponentiation is the type of the base. It used to be the smallest type
Expand Down Expand Up @@ -105,23 +105,23 @@ Interface Changes
=================

This section lists changes that are unrelated to the language itself, but that have an effect on the interfaces of
the compiler. These may change the way how you use the compiler on the command line, how you use its programmable
the compiler. These may change the way how you use the compiler on the command-line, how you use its programmable
interface, or how you analyze the output produced by it.

New Error Reporter
~~~~~~~~~~~~~~~~~~

A new error reporter was introduced, which aims at producing more accessible error messages on the command line.
It is enabled by default, but passing ``--old-reporter`` falls back to the the deprecated old error reporter.
A new error reporter was introduced, which aims at producing more accessible error messages on the command-line.
It is enabled by default, but passing ``--old-reporter`` falls back to the deprecated old error reporter.

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 behaviour,
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.
`Swarm <https://ethersphere.github.io/swarm-home/>`_ 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.

These changes can also be used via the :ref:`Standard JSON Interface<compiler-api>` and effect the metadata JSON generated by the compiler.
Expand Down
14 changes: 7 additions & 7 deletions docs/080-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ For the full list check
Silent Changes of the Semantics
===============================

This section lists changes where existing code changes its behaviour without
This section lists changes where existing code changes its behavior without
the compiler notifying you about it.

* Arithmetic operations revert on underflow and overflow. You can use ``unchecked { ... }`` to use
the previous wrapping behaviour.
the previous wrapping behavior.

Checks for overflow are very common, so we made them the default to increase readability of code,
even if it comes at a slight increase of gas costs.

* ABI coder v2 is activated by default.

You can choose to use the old behaviour using ``pragma abicoder v1;``.
You can choose to use the old behavior using ``pragma abicoder v1;``.
The pragma ``pragma experimental ABIEncoderV2;`` is still valid, but it is deprecated and has no effect.
If you want to be explicit, please use ``pragma abicoder v2;`` instead.

Expand Down Expand Up @@ -57,7 +57,7 @@ New Restrictions

This section lists changes that might cause existing contracts to not compile anymore.

* There are new restrictions related to explicit conversions of literals. The previous behaviour in
* There are new restrictions related to explicit conversions of literals. The previous behavior in
the following cases was likely ambiguous:

1. Explicit conversions from negative literals and literals larger than ``type(uint160).max`` to
Expand Down Expand Up @@ -106,7 +106,7 @@ This section lists changes that might cause existing contracts to not compile an

* The global functions ``log0``, ``log1``, ``log2``, ``log3`` and ``log4`` have been removed.

These are low-level functions that were largely unused. Their behaviour can be accessed from inline assembly.
These are low-level functions that were largely unused. Their behavior can be accessed from inline assembly.

* ``enum`` definitions cannot contain more than 256 members.

Expand Down Expand Up @@ -155,7 +155,7 @@ Interface Changes
``storage-layout`` are sub-objects now. Before 0.8.0 they used to be serialised as strings.

* 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.
Use the "compact AST" (``--ast-compact-json`` resp. ``AST``) as replacement.

* The old error reporter (``--old-reporter``) has been removed.

Expand All @@ -173,4 +173,4 @@ How to update your code
- Change ``msg.sender.transfer(x)`` to ``payable(msg.sender).transfer(x)`` or use a stored variable of ``address payable`` type.
- Change ``x**y**z`` to ``(x**y)**z``.
- Use inline assembly as a replacement for ``log0``, ..., ``log4``.
- Negate unsigned integers by subtracting them from the maximum value of the type and adding 1 (e.g. ``type(uint256).max - x + 1``, while ensuring that `x` is not zero)
- Negate unsigned integers by subtracting them from the maximum value of the type and adding 1 (e.g. ``type(uint256).max - x + 1``, while ensuring that ``x`` is not zero)
7 changes: 0 additions & 7 deletions docs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ help:
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
Expand Down Expand Up @@ -116,12 +115,6 @@ latexpdf:
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
Expand Down
23 changes: 23 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Solidity Language Docs

## Local environment setup

1. Install python https://www.python.org/downloads/
1. Install sphinx (the tool used to generate the docs) https://www.sphinx-doc.org/en/master/usage/installation.html

Go to `/docs` and run `./docs.sh` to install dependencies and build the project:

```sh
cd docs
./docs.sh
```

That will output the generated htmls under _build/

## Serve environment

```py
python3 -m http.server -d _build/html --cgi 8080
```

Visit dev server at http://localhost:8080
Loading