Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

English documentation updates up to v0.8.24-59-gf7baedef8 (2024-02-20) #252

Open
wants to merge 2,364 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2364 commits
Select commit Hold shift + click to select a range
fa39401
Purge using namespace std from test/libsolidity/util
nikola-matic Oct 2, 2023
77912ab
Fix check_style for using namespace std exclusing in test/*
nikola-matic Oct 2, 2023
0d0a7fc
Purge using namespace std from previously missed files
nikola-matic Oct 2, 2023
2ba536f
Merge pull request #14582 from ethereum/fix-check-style-using-namespa…
ekpyron Oct 2, 2023
72671d6
Merge pull request #14581 from ethereum/purge-using-namespace-std-fro…
ekpyron Oct 2, 2023
93ea888
CI: Stop using the deprecated `large` class for macOS jobs
cameel Oct 4, 2023
ab9729b
Repro for variable names affecting CSE
cameel Sep 25, 2023
7c36f23
DataFlowAnalyzer: Fix variable clearing nondeterminism (affecting CSE…
cameel Sep 22, 2023
b54e720
Merge pull request #14585 from ethereum/ci-stop-using-deprecated-maco…
cameel Oct 4, 2023
b12d8fa
Merge pull request #14574 from ethereum/fix-data-flow-analyzer-incons…
ekpyron Oct 9, 2023
7b12d41
Fix brink external test
nikola-matic Oct 10, 2023
8820870
Merge pull request #14600 from ethereum/fix-brink-external-test
nikola-matic Oct 10, 2023
74381a5
Disable the Gnosis test suite
nikola-matic Oct 13, 2023
04434c9
Merge pull request #14611 from ethereum/disable-gnosis-test-suite
nikola-matic Oct 13, 2023
3e660d4
docs: Remove an outdated reference to Serenity
cameel Sep 15, 2023
0196a9a
docs: Update the list of definitions in a contract whose names do not…
cameel Sep 15, 2023
77cf950
style guide: Use emit keyword when emitting events
cameel Sep 15, 2023
70870a6
style guide: Add events and errors to the order of definitions at fil…
cameel Sep 15, 2023
38a5852
Merge pull request #14563 from ethereum/event-docs-corrections
cameel Oct 13, 2023
eab92f9
Make Yul proto mutator mutations deterministic.
bshastry Oct 12, 2023
106ae7e
Merge pull request #14605 from ethereum/make-ypm-deterministic
bshastry Oct 13, 2023
09ea29b
Remove unused IndentedWriter
cameel Aug 1, 2023
8c619dd
Generalize existing functions for indenting and prefixing
cameel Aug 1, 2023
b56e26a
Do not leave trailing whitespace on empty lines when printing objects
cameel Aug 1, 2023
3dab116
Merge pull request #14517 from ethereum/indent-refactor
cameel Oct 13, 2023
211cd24
Introduce compileViaYul syntax test option
nikola-matic Oct 10, 2023
e98f174
Merge pull request #14599 from ethereum/introduce-via-ir-syntax-test-…
nikola-matic Oct 16, 2023
963eb15
SourceReferenceFormatter: Expose a function for formatting just a mes…
cameel Oct 6, 2023
79af55e
CommandLineInterface: Report all errors/infos/warnings with proper se…
cameel Oct 6, 2023
42770fc
CommandLineParser: Don't assume clear internal state before parsing
cameel Oct 10, 2023
fa43d1e
Try harder to respect --color/--no-color in presence of errors and as…
cameel Oct 10, 2023
23b7505
CommandLineParser: Don't color the error message printed when --color…
cameel Oct 10, 2023
766efb3
Merge pull request #14590 from ethereum/severity-and-color-for-cli-er…
cameel Oct 17, 2023
db98eed
Introduce --no-import-callback CLI option
nikola-matic Oct 13, 2023
810c446
Merge pull request #14610 from ethereum/introduce-no-import-callback-…
nikola-matic Oct 19, 2023
0e51e57
Add Error::parseErrorType()
cameel Sep 29, 2023
2e8e1f3
Store Error::Type rather than a string in SyntaxTestError
cameel Sep 29, 2023
d4f5503
CommonSyntaxTest: Fix info messages being colored as errors
cameel Sep 28, 2023
0da44ca
Reuse color definitions between SourceReferenceFormatter and CommonSy…
cameel Sep 29, 2023
ddb0d89
Merge pull request #14580 from ethereum/fix-isoltest-info-color
cameel Oct 19, 2023
78eb37d
Support user defined operators in SMT
pgebal Aug 8, 2023
13c2d62
apply CR changes
pgebal Oct 6, 2023
353dbdd
refactor: rename calledExpr to boundArgumentCall
pgebal Oct 19, 2023
da7c00e
fix test error
pgebal Oct 20, 2023
b187d06
Merge pull request #14534 from pgebal/pgebal/operators
Oct 22, 2023
f8282a6
Add tests that fail.
bshastry Oct 9, 2023
a3ad63e
Add missing optimizer dependencies for fullSimplify and loadResolver …
bshastry Oct 18, 2023
1b7652e
Merge pull request #14597 from ethereum/add-steps-to-full-simplify
bshastry Oct 23, 2023
f0f2393
cmdlineTests.sh: Remove the empty line after the pre-release warning …
cameel Oct 10, 2023
2f01aa3
Issue a deprecation warning for byzantium and older EVM versions
cameel Oct 6, 2023
127a390
docs: Fix broken style in the description of shanghai EVM features
cameel Oct 10, 2023
1b5775a
Merge pull request #14591 from ethereum/old-evm-deprecation-warning
cameel Oct 23, 2023
2b8c997
Special case code generation for for loops.
ekpyron Aug 10, 2022
f294988
Fix broken docs link for 0.8.22
nikola-matic Oct 24, 2023
9efa752
Merge pull request #14637 from ethereum/fix-broken-docs-links-0-8-22
nikola-matic Oct 24, 2023
2cce9c7
Merge pull request #13378 from ethereum/forLoopSpecialCaseCodegen
ekpyron Oct 24, 2023
e8b898c
ASTImportTest.sh: Keep temporary files in subdirs of a single, proper…
cameel Oct 24, 2023
3e823e0
Introduce AbstractAssemblyStack interface
cameel Oct 24, 2023
67e11fc
EVM assembly import via --import-asm-json
aarlt Nov 2, 2022
91c7b32
CLI test for mass EVM assembly import/export
aarlt Nov 2, 2022
c7e5212
Merge pull request #13673 from ethereum/import-asm-json-updated
ekpyron Oct 24, 2023
a582684
Set release date for 0.8.21 and update the bug list
cameel Oct 25, 2023
4fc1097
Merge pull request #14642 from ethereum/set-release-date-0.8.22
cameel Oct 25, 2023
609ef15
Set version to 0.8.23
nikola-matic Oct 25, 2023
28ee5d3
Merge pull request #14645 from ethereum/set-version-to-0-8-23
cameel Oct 25, 2023
23bcc69
Fix wrong file path in standard json tests
nikola-matic Oct 26, 2023
d8de97d
Merge pull request #14651 from ethereum/fix-wrong-url-name-in-standar…
nikola-matic Oct 26, 2023
ad3caa7
Merge pull request #14238 from robriks/patch-2
ekpyron Oct 30, 2023
74c2440
Update the release checklist
nikola-matic Oct 25, 2023
79b1f55
Remove references to homebrew-ethereum
nikola-matic Oct 26, 2023
7df949e
Merge pull request #14644 from ethereum/update-release-checklist
ekpyron Oct 31, 2023
7bf058b
Update ubuntu versions in PPA scripts.
ekpyron Oct 25, 2023
f70bd94
Merge pull request #14646 from ethereum/updateUbuntuVersions
ekpyron Nov 6, 2023
4d10cb5
Update README.md for X (Twitter) new brand guidelines (#14665)
Nuzair46 Nov 7, 2023
d899d9c
Accept empty optimizer sequence with Yul optimizer disabled
nikola-matic Oct 30, 2023
cb93e6e
Merge pull request #14657 from ethereum/accept-empty-optimizer-sequen…
nikola-matic Nov 7, 2023
cc56cb5
Add verbatim bug test case.
ekpyron Nov 7, 2023
48fdbd3
Fix assembly item comparison for verbatim.
ekpyron Oct 25, 2023
41ceb48
Add cmdline test
matheusaaguiar Nov 8, 2023
34b70af
Merge pull request #14649 from ethereum/assemblyItemVerbatimComparison
ekpyron Nov 8, 2023
8292d7b
Remove superflous language features category from Changelog
nikola-matic Nov 8, 2023
12f7c7a
Merge pull request #14671 from ethereum/remove-language-features-from…
nikola-matic Nov 8, 2023
7e84be6
Set date for 0.8.23 release
nikola-matic Nov 8, 2023
5cafa8c
Fix link in bugs.json for 0.8.23
nikola-matic Nov 8, 2023
9736b17
Merge pull request #14675 from ethereum/fix-invalid-link-in-bug-blog-…
ekpyron Nov 8, 2023
f704f36
Merge pull request #14672 from ethereum/set-release-date-for-0-8-23
nikola-matic Nov 8, 2023
4fd869e
Set version to 0.8.24
cameel Nov 8, 2023
90b046a
Merge pull request #14674 from ethereum/set-version-to-0.8.24
cameel Nov 8, 2023
35b5ebd
prepare_report.js: Add the --report-file option to avoid printing the…
cameel Nov 9, 2023
d668330
prepare_report.js: Show script progress on stdout with dots
cameel Nov 9, 2023
58811f1
Merge pull request #14678 from ethereum/fix-no-output-timeout-in-js-b…
cameel Nov 10, 2023
103e397
fix:typo errors
jitendragangwar123 Nov 23, 2023
158330b
Update optimizer docs to include codegen-based optimizer section
matheusaaguiar Oct 26, 2023
efed3b2
Merge pull request #14650 from ethereum/uncheckedForLoopIncrementDocs
matheusaaguiar Nov 23, 2023
8387ba0
Merge pull request #14696 from jitendragangwar123/patch-2
nikola-matic Nov 27, 2023
15afdc3
Switch from yarn to pnpm for hardhat external tests
r0qs Nov 27, 2023
7b269d1
Merge pull request #14704 from ethereum/switch-yarn-to-pnpm
r0qs Nov 27, 2023
435f389
Fix docutils deprecated set_class method
nikola-matic Nov 28, 2023
cfdd2e0
Merge pull request #14706 from ethereum/fix-docutils-deprecated-set-c…
r0qs Nov 28, 2023
1ad3890
Fix typos
xiaolou86 Oct 11, 2023
4b29380
Merge pull request #14602 from xiaolou86/develop
nikola-matic Nov 28, 2023
4c62829
Update contributing.rst
mehtavishwa30 Nov 29, 2023
e658eeb
Merge pull request #14708 from ethereum/mehtavishwa30-patch-1
mehtavishwa30 Nov 29, 2023
1247ff4
Assert compiler outputs not generated when experimental Solidity is used
matheusaaguiar Oct 28, 2023
7006535
[FIXUP] Remove TODO comment
matheusaaguiar Nov 29, 2023
9b09afe
[REFACTOR] Use solUnimplementedAssert instead of solAssert
matheusaaguiar Nov 29, 2023
fc65c0c
Assert import AST
matheusaaguiar Nov 29, 2023
e43d105
Purge using namespace from test/libyul
nikola-matic Nov 30, 2023
3d7d8aa
Merge pull request #14712 from ethereum/purge-using-namespace-std-fro…
nikola-matic Nov 30, 2023
0022089
Introduce `Cancun` EVM version
r0qs Nov 27, 2023
5fcc8c7
Purge using namespace from test/solc
nikola-matic Dec 1, 2023
eaf1d3f
Merge pull request #14715 from ethereum/purge-using-namespace-std-fro…
nikola-matic Dec 1, 2023
abb0f08
Purge using namespace from tools/yulInterpreter
nikola-matic Dec 1, 2023
c3af02c
Merge pull request #14716 from ethereum/purge-using-namespace-from-te…
nikola-matic Dec 1, 2023
502f978
ReleaseChecklist: New solc-js publication process using a CI-built ta…
cameel Nov 10, 2023
7e90ad0
Merge pull request #14679 from ethereum/release-checklist-solc-js-pac…
cameel Dec 4, 2023
787a5c2
Use pnpm instead of forge install for prb-math external test
r0qs Dec 4, 2023
179ff6e
Merge pull request #14718 from ethereum/fix-prb-math
nikola-matic Dec 5, 2023
557d567
Merge pull request #14659 from ethereum/assertJsonArtifacts
ekpyron Dec 5, 2023
8f051dd
Fix import-ast bug when inline assembly had empty let var declaration.
matheusaaguiar Dec 8, 2023
66cb0ae
Fix argument expansion in command_available
nikola-matic Dec 11, 2023
3d3765c
Merge pull request #14724 from ethereum/fix-command-available-common-sh
nikola-matic Dec 12, 2023
cdf2f5e
Merge pull request #14723 from ethereum/fixImportAstInlineAssemblyEmp…
ekpyron Dec 12, 2023
ad9271e
Merge pull request #14705 from ethereum/add-cancun-evm-version
ekpyron Dec 13, 2023
38d992a
docs: fix incomplete member of address in cheatsheet.rst
hafeidejiangyou Aug 1, 2023
b5eb0f9
Merge pull request #14601 from ethereum/cheatsheet-update
matheusaaguiar Dec 13, 2023
7d6e6ee
prepare_report.py: Don't ignore CLI exit code
cameel Dec 13, 2023
646b342
prepare_report.py: Always exit on error from Standard JSON interface
cameel Dec 13, 2023
1b5c6f6
Merge pull request #14731 from ethereum/fix-bytecode-report-ignoring-…
cameel Dec 13, 2023
194b114
Add basic type inference infrastructure for experimental Solidity
ekpyron Jun 6, 2023
e6555d8
Increase resource_class of prb-math external test
r0qs Dec 18, 2023
ed52376
Merge pull request #14510 from ethereum/newAnalysis
ekpyron Dec 18, 2023
92f383d
Merge pull request #14738 from ethereum/fix-prb-math-ext-test
ekpyron Dec 18, 2023
5fd52f3
Switch to building GMP from an unofficial git mirror
nikola-matic Dec 26, 2023
b54a554
Merge pull request #14767 from ethereum/fix-gmp-build-in-ossfuzz-docker
cameel Jan 5, 2024
5c79d5e
CI: Update ossfuzz docker image hash
cameel Jan 5, 2024
2348552
Merge pull request #14768 from ethereum/fix-gmp-build-in-ossfuzz-dock…
cameel Jan 5, 2024
d5119f7
Bump evmone to 11 in Docker images
nikola-matic Dec 22, 2023
e08da86
Merge pull request #14743 from ethereum/bump-evmone-and-evmc-to-11
cameel Jan 6, 2024
567e8cc
Bump evmc to v11.0.0
nikola-matic Dec 20, 2023
8fb37d4
Bump evmone to 11 in CI
nikola-matic Dec 22, 2023
4e7bb4e
Bump evmc and evmone images to v11 in CI
nikola-matic Dec 23, 2023
c78f965
Merge pull request #14758 from ethereum/bump-evmc-evmone-in-ci
cameel Jan 6, 2024
373bc2b
Fix chai to version 4.4.0 in Brink external test
r0qs Jan 9, 2024
814225e
Merge pull request #14773 from ethereum/fix-brink-ext-test
ekpyron Jan 9, 2024
fbbac9c
Fix several minor typo (#14629)
sukey2008 Jan 10, 2024
47fc4f9
Yul fuzzer: Add Shanghai EVM version
bshastry Jan 12, 2024
bf59ff8
Introduce block.blobbasefee in Solidity and blobbasefee in Yul
nikola-matic Dec 25, 2023
1473ce2
Merge pull request #14755 from ethereum/introduce-blobbasefee
nikola-matic Jan 12, 2024
5aace4f
Merge pull request #14782 from ethereum/fuzzer-shanghai
nikola-matic Jan 15, 2024
b8d0077
Fix typos
GoodDaisy Jan 9, 2024
9c9eddb
Merge pull request #14771 from GoodDaisy/develop
matheusaaguiar Jan 17, 2024
269951e
Add blobhash opcode
r0qs Dec 21, 2023
ec563a1
Merge pull request #14757 from ethereum/eip-4844-add-blobhash
r0qs Jan 18, 2024
9af30b5
Yul fuzzer: Introduce basefee() and blobbasefee() builtins
bshastry Jan 12, 2024
43c3910
Merge pull request #14781 from ethereum/fuzzer-blobbasefee
bshastry Jan 20, 2024
0da0bff
EVMInstructionInterpreter: Readability/style tweaks
cameel Jan 11, 2024
492c0eb
GasMeter tests: Skip tests with abicoder v2 only if they actually don…
cameel Jan 19, 2024
3876717
test/Common: minEVMVersionCheck() predicate for skipping boost tests
cameel Jan 19, 2024
9512f41
Make tests based on Analysis Framework properly use line prefix also …
cameel Jan 19, 2024
d1447c0
MemoryGuardTest: Don't hide errors that occur at the IR parsing stage
cameel Jan 19, 2024
7f79cd8
MemoryGuardTest: Respect EVM version selected on the command line
cameel Jan 19, 2024
f05d0a9
Merge pull request #14790 from ethereum/testing-tweaks-before-mcopy
cameel Jan 22, 2024
81268e3
Add blobhash high-level global function.
r0qs Dec 27, 2023
01cb85f
Merge pull request #14759 from ethereum/eip-4844-add-blobhash-2
cameel Jan 22, 2024
ce98680
Support bytes concat in formal verification (#14685)
pgebal Jan 24, 2024
1b75d48
More basic tests for memory guard
cameel Jan 23, 2024
1a80202
A few extra optimizer tests for MSTORE
cameel Jan 23, 2024
bd76278
Yul builtin for MCOPY
cameel Jan 8, 2024
ba95a29
Fix macOS dependency cache.
aarlt Jan 22, 2024
89a70c7
Merge pull request #14795 from ethereum/osx-caching
cameel Jan 24, 2024
8f5ee88
Merge pull request #14779 from ethereum/mcopy
cameel Jan 24, 2024
89b73b6
Introduce transient storage support for Yul and inline assembly.
matheusaaguiar Jan 12, 2024
261e8b9
Test new semantic of selfdestruct added by EIP-6780
r0qs Jan 16, 2024
ea0b750
Add support for apple silicon.
aarlt Dec 11, 2023
7e7c45c
Merge pull request #14737 from ethereum/transientStorageBasicSupport
cameel Jan 25, 2024
29fc962
Merge pull request #14785 from ethereum/eip-6780-selfdestruct
cameel Jan 25, 2024
bc62f28
Merge pull request #14725 from ethereum/apple_silicon_build
cameel Jan 25, 2024
631fd9d
Issue a warning when comparing internal function pointers
nikola-matic Jan 17, 2024
ef663c2
Changelog and docs
nikola-matic Jan 18, 2024
ae7039f
Merge pull request #14784 from ethereum/issue-a-warning-when-comparin…
cameel Jan 25, 2024
ac3703a
using-the-compiler.rst: Adjust SolidityAST docs to match the pre-exis…
cameel Jan 25, 2024
4ed2380
Add support to import EVM assembly via Standard JSON.
aarlt May 31, 2023
62e27e4
Merge pull request #14285 from ethereum/evmjson-import-via-standard-json
cameel Jan 25, 2024
6d7fc69
Fix broken link in docs
nikola-matic Jan 25, 2024
fe3b94d
Order changelog
nikola-matic Jan 25, 2024
1377d43
Merge pull request #14808 from ethereum/fix-docs-broken-links
nikola-matic Jan 25, 2024
2ec5726
Merge pull request #14809 from ethereum/fix-changelog-for-release
nikola-matic Jan 25, 2024
0da4527
Update changelog for 0.8.24 release
nikola-matic Jan 25, 2024
e11b9ed
Merge pull request #14810 from ethereum/set-changelog-for-8-24-release
nikola-matic Jan 25, 2024
0e03dec
Set version to 0.8.25
nikola-matic Jan 25, 2024
a70cae9
Fix 0.8.23 changelog formatting
cameel Jan 26, 2024
6d5aa39
Fix typos
rex4539 Jan 26, 2024
0f71a78
Merge pull request #14811 from ethereum/set-version-to-0.8.25
cameel Jan 26, 2024
fd73bce
Merge pull request #14815 from rex4539/typos
cameel Jan 26, 2024
fb99132
TypeInference: Remove unreachable errors on missing instantiation ann…
cameel Dec 13, 2023
9d80e0e
Yul proto fuzzer: Add mcopy builtin to generator.
cameel Jan 8, 2024
fb7c2b4
Yul fuzzer: Support transient storage.
bshastry Jan 25, 2024
ab18b6d
Merge pull request #14787 from ethereum/fuzz-mcopy
cameel Jan 26, 2024
4edbaf1
Merge pull request #14807 from ethereum/fuzz-transient-storage
cameel Jan 26, 2024
1906cf1
Merge pull request #14736 from ethereum/new-analysis-remove-unreachab…
ekpyron Jan 30, 2024
e545e93
TypeSystemHelper: substitute()
cameel Oct 30, 2023
44ffdb1
Introduce fixed type variables
cameel Oct 30, 2023
fd3c393
Use different prefixes when printing fixed and generic type variables
cameel Oct 30, 2023
fce70ef
Fixing type variables in defined type classes and functions
cameel Oct 30, 2023
8e210d2
Fixing type variables in type definitions
cameel Nov 7, 2023
4577aeb
Merge pull request #14655 from ethereum/new-analysis-fixed-type-varia…
ekpyron Jan 30, 2024
7bf8ff2
Fix openzeppelin external test
r0qs Feb 5, 2024
3ed82c6
Merge pull request #14833 from ethereum/fix-version-hardhat-chai-matc…
r0qs Feb 5, 2024
a3e5f3f
feat: add new rule name `usingAliases` for solidity `usingDirective`
jeasonstudio Jan 19, 2024
1183284
Merge pull request #14788 from jeasonstudio/grammar-provide-using-ali…
ekpyron Feb 5, 2024
c7db606
Print a warning about function parameter names being used instead of …
pgebal Feb 6, 2024
1c8072a
Remove dynamic byte arrays from value types section
nikola-matic Feb 7, 2024
5c70b35
Merge pull request #14835 from ethereum/remove-byte-array-from-value-…
nikola-matic Feb 7, 2024
71a05df
Purge using namespace std from test/yulPhaser
nikola-matic Jan 11, 2024
656bd6d
Merge pull request #14777 from ethereum/purge-using-namsepace-std-fro…
r0qs Feb 8, 2024
838658f
Install dependencies and add symbolic link for python3
nikola-matic Feb 9, 2024
0f3d40f
Merge pull request #14839 from ethereum/fix-win-pyscripts-no-module-r…
nikola-matic Feb 12, 2024
7c1bdba
Remove sha from foundry release tag
r0qs Feb 12, 2024
00a54f8
Merge pull request #14846 from ethereum/fix-foundry-install
r0qs Feb 12, 2024
c7549de
Only warn instead of failing when enforcing gas expectations with non…
cameel Feb 11, 2024
5fe3173
Merge pull request #14844 from ethereum/allow-enforcing-gas-costs-wit…
nikola-matic Feb 13, 2024
44da00d
Use MCOPY when copying byte arrays
nikola-matic Feb 6, 2024
3122d35
ABI decode test case
nikola-matic Feb 14, 2024
4032b59
Add DebugData to AssemblyItem.
aarlt Feb 10, 2024
c7b8dcc
[test] Add /usr/local/lib to search paths for macOS.
aarlt Feb 16, 2024
9b8ed03
Fix typo in Assembly::fromJSON(..).
aarlt Feb 18, 2024
5aed751
Use ethers version 6.11.0 on openzeppelin external tests
r0qs Feb 19, 2024
c21490f
[ci] Remove usage of ETH_EVMONE environment variable.
aarlt Feb 19, 2024
d8c3ca2
Merge pull request #14834 from ethereum/use_mcopy_in_code_generation
nikola-matic Feb 19, 2024
dc11306
Merge pull request #14865 from ethereum/fix_typo_in_assembly_from_json
ekpyron Feb 19, 2024
6c5026d
Merge pull request #14862 from ethereum/add_usr_local_lib_to_default_…
aarlt Feb 19, 2024
18cabee
CompilerStack: Don't swallow details include in OptimizerException
cameel Jan 9, 2024
f518815
Remove obsolete gas cost tiers
cameel Jan 9, 2024
686f5cd
Document the Tier enum and constants that come from Execution Specs
cameel Jan 9, 2024
a973b4c
Rename Ext gas cost tier to BlockHash
cameel Jan 9, 2024
f78eec5
Merge pull request #14867 from ethereum/fix-openzeppelin
ekpyron Feb 19, 2024
5cf513d
Merge pull request #14772 from ethereum/clean-and-document-gas-tiers
cameel Feb 19, 2024
88ee7d8
[ci] Remove code signature from universal binary.
aarlt Feb 19, 2024
15ff3bc
Merge pull request #14869 from ethereum/remove_signature_from_univers…
ekpyron Feb 19, 2024
0bd7383
Merge pull request #14868 from ethereum/remove_usage_of_eth_evmone_en…
ekpyron Feb 19, 2024
172f3cf
Merge pull request #14841 from ethereum/add_debugdata_to_assemblyitem
ekpyron Feb 19, 2024
ac54fe1
Purge using namespace std from test
nikola-matic Jan 11, 2024
8631af2
Merge pull request #14778 from ethereum/purge-using-namespace-std-fro…
ekpyron Feb 19, 2024
ac39886
SMTChecker: Respect signedness of integer type
blishko Feb 7, 2024
8770952
SMTChecker: Unsigned number expressions should have unsigned type
blishko Feb 7, 2024
a1ad970
SMTChecker: Add test case
blishko Feb 9, 2024
22da46c
Update changelog
blishko Feb 9, 2024
f7baede
Merge pull request #14840 from ethereum/smt-fix-types
blishko Feb 19, 2024
53a54b3
English documentation updates up to v0.8.24-59-gf7baedef8 (2024-02-20)
soldocsbot Feb 20, 2024
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
152 changes: 152 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
cmake_minimum_required(VERSION 3.13.0)

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 "${PROJECT_SOURCE_DIR}/.git")
set(DEFAULT_BUILD_TYPE "RelWithDebInfo")
else()
set(DEFAULT_BUILD_TYPE "Release")
endif()
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel")
endif()

include(EthToolchains)

# Set cmake_policies
include(EthPolicy)
eth_policy()

# project name and version should be set after cmake_policy CMP0048
set(PROJECT_VERSION "0.8.25")
# OSX target needed in order to support std::visit
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
project(solidity VERSION ${PROJECT_VERSION} LANGUAGES C CXX)

include(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if (IS_BIG_ENDIAN)
message(FATAL_ERROR "${PROJECT_NAME} currently does not support big endian systems.")
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(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)

# Setup cccache.
include(EthCcache)

# Let's find our dependencies
include(EthDependencies)
include(fmtlib)
include(jsoncpp)
include(range-v3)
include_directories(SYSTEM ${JSONCPP_INCLUDE_DIR})

find_package(Threads)

if(NOT PEDANTIC)
message(WARNING "-- Pedantic build flags turned off. Warnings will not make compilation fail. This is NOT recommended in development builds.")
endif()

if (PROFILE_OPTIMIZER_STEPS)
add_definitions(-DPROFILE_OPTIMIZER_STEPS)
endif()

# Figure out what compiler and system are we using
include(EthCompilerSettings)

# Include utils
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 ${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("${PROJECT_SOURCE_DIR}/cmake/templates/license.h.in" include/license.h)

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).")
endif()

add_subdirectory(libsolutil)
add_subdirectory(liblangutil)
add_subdirectory(libsmtutil)
add_subdirectory(libevmasm)
add_subdirectory(libyul)
add_subdirectory(libsolidity)
add_subdirectory(libsolc)
add_subdirectory(libstdlib)
add_subdirectory(tools)

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

if (TESTS AND NOT EMSCRIPTEN)
add_subdirectory(test)
endif()
22 changes: 11 additions & 11 deletions docs/050-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ For most of the topics the compiler will provide suggestions.

* Explicit data location for all variables of struct, array or mapping types is
now mandatory. This is also applied to function parameters and return
variables. For example, change ``uint[] x = m_x`` to ``uint[] storage x =
m_x``, and ``function f(uint[][] x)`` to ``function f(uint[][] memory x)``
variables. For example, change ``uint[] x = z`` to ``uint[] storage x =
z``, and ``function f(uint[][] x)`` to ``function f(uint[][] memory x)``
where ``memory`` is the data location and might be replaced by ``storage`` or
``calldata`` accordingly. Note that ``external`` functions require
parameters with a data location of ``calldata``.
Expand Down 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 Expand Up @@ -483,7 +483,7 @@ New version:
return data;
}

using address_make_payable for address;
using AddressMakePayable for address;
// Data location for 'arr' must be specified
function g(uint[] memory /* arr */, bytes8 x, OtherContract otherContract, address unknownContract) public payable {
// 'otherContract.transfer' is not provided.
Expand All @@ -500,7 +500,7 @@ New version:
// 'address payable' should be used whenever possible.
// To increase clarity, we suggest the use of a library for
// the conversion (provided after the contract in this example).
address payable addr = unknownContract.make_payable();
address payable addr = unknownContract.makePayable();
require(addr.send(1 ether));

// Since uint32 (4 bytes) is smaller than bytes8 (8 bytes),
Expand All @@ -516,8 +516,8 @@ New version:

// We can define a library for explicitly converting ``address``
// to ``address payable`` as a workaround.
library address_make_payable {
function make_payable(address x) internal pure returns (address payable) {
library AddressMakePayable {
function makePayable(address x) internal pure returns (address payable) {
return address(uint160(x));
}
}
19 changes: 12 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 @@ -53,6 +53,8 @@ For most of the topics the compiler will provide suggestions.
If the name contains a dot, its prefix up to the dot may not conflict with any declaration outside the inline
assembly block.

* In inline assembly, opcodes that do not take arguments are now represented as "built-in functions" instead of standalone identifiers. So ``gas`` is now ``gas()``.

* State variable shadowing is now disallowed. A derived contract can only
declare a state variable ``x``, if there is no visible state variable with
the same name in any of its bases.
Expand Down Expand Up @@ -103,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 Expand Up @@ -174,3 +176,6 @@ This section gives detailed instructions on how to update prior code for every b
``override`` to every overriding function. For multiple inheritance, add ``override(A, B, ..)``,
where you list all contracts that define the overridden function in the parentheses. When
multiple bases define the same function, the inheriting contract must override all conflicting functions.

* In inline assembly, add ``()`` to all opcodes that do not otherwise accept an argument.
For example, change ``pc`` to ``pc()``, and ``gas`` to ``gas()``.
12 changes: 6 additions & 6 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 @@ -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