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-26-g656bd6d4e (2024-02-09) #244

Open
wants to merge 2,290 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2290 commits
Select commit Hold shift + click to select a range
34c86d9
Merge pull request #14556 from ethereum/homebrew-update
r0qs Sep 11, 2023
14aed39
Introduce experimental analysis basic infrastructure
matheusaaguiar Sep 6, 2023
91cc72b
NatspecJSONTest based on SyntaxTest
cameel Jul 31, 2023
1041f07
SolidityNatspecJSON: A few tweaks and small fixes before automatic co…
cameel Aug 9, 2023
ba019e5
SolidityNatspecJSON: Manual conversion of two test cases that would n…
cameel Aug 10, 2023
99bfdf9
SolidityNatspecJSON: Convert Boost-based test cases into natspectJSON…
cameel Aug 9, 2023
481c725
natspecJSON: Include `version` and `kind` fields in expectations wher…
cameel Aug 9, 2023
d083925
natspecJSON: Generate missing expectations (including errors)
cameel Aug 21, 2023
dc68480
Move Natspec syntax tests to natspecJSON
cameel Aug 21, 2023
b63a940
Generate expectations for moved Natspec syntax tests
cameel Aug 21, 2023
64a0f62
Merge pull request #14506 from ethereum/extracted-natspec-json-tests
cameel Sep 11, 2023
9bce5f9
Merge pull request #14538 from ethereum/experimentalAnalysisBasicInfr…
ekpyron Sep 13, 2023
c43c3c3
Merge branch 'develop' into patch-2
robriks Sep 13, 2023
73d582d
Bump cmake to 3.27.4 and boost to 1.83 on Windows to work with Visual…
nikola-matic Aug 25, 2022
5d88b74
install_deps.ps1: Remove downloaded packages and sources after instal…
nikola-matic Aug 25, 2022
0a69758
FileReader::isPathPrefix(): Work around lexically_normal() no longer …
cameel Sep 8, 2023
85b1cb9
fixed MSTORE typo
Saw-mon-and-Natalie Aug 19, 2023
70cf104
fixup! Bump cmake to 3.27.4 and boost to 1.83 on Windows to work with…
cameel Sep 14, 2023
6e8b9df
docs: add clarification about post execution modifier behavior
zobront Sep 7, 2023
5a5e0b5
Merge pull request #14551 from zobront/develop
cameel Sep 14, 2023
020b596
Merge pull request #14552 from ethereum/bump-cmake-and-boost-to-work-…
nikola-matic Sep 14, 2023
b0a986f
Allow event definitions at file level
cameel Sep 7, 2023
586a7c5
Merge pull request #14503 from Saw-mon-and-Natalie/fix-test-typo
ekpyron Sep 18, 2023
dc44f8a
Merge pull request #14550 from ethereum/events-at-file-level
ekpyron Sep 18, 2023
309a8de
Refactor AnalysisFramework to share more features between test cases …
cameel Aug 7, 2023
b766268
AnalysisFramework: Get rid of parseAndAnalyse() and success()
cameel Aug 4, 2023
d2bfb2f
AnalysisFramework: Reimplement parseAnalyseAndReturnError() with runF…
cameel Aug 4, 2023
3fb2f1d
AnalysisFramework: Move common setup to the framework
cameel Aug 7, 2023
cc7a14a
Merge pull request #14518 from ethereum/analysis-framework-refactor
ekpyron Sep 19, 2023
e3b36f7
Avoid sorting FunctionDefinitions by AST ID during codegen
r0qs Sep 12, 2023
2b7ec23
Merge pull request #14562 from ethereum/fix-viaIR-codegen-import-bug
cameel Sep 29, 2023
ab2d395
Add bytecode test for multiple sources compiler at same time
r0qs Sep 17, 2023
fe1f9c6
Merge pull request #14565 from ethereum/viaIR-codegen-import-bug-test
cameel Sep 29, 2023
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
ddd0928
English documentation updates up to v0.8.24-26-g656bd6d4e (2024-02-09)
soldocsbot Feb 9, 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
26 changes: 21 additions & 5 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.12")
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)
Expand All @@ -35,6 +35,8 @@ 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)
Expand All @@ -48,6 +50,14 @@ 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)

Expand All @@ -56,17 +66,22 @@ 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)
<<<<<<< HEAD
set(LATEST_Z3_VERSION "4.8.13")
set(MINIMUM_Z3_VERSION "4.8.0")
=======
set(LATEST_Z3_VERSION "4.12.1")
set(MINIMUM_Z3_VERSION "4.8.16")
>>>>>>> english/develop
find_package(Z3)
if (${Z3_FOUND})
if (${STRICT_Z3_VERSION})
Expand Down Expand Up @@ -130,6 +145,7 @@ add_subdirectory(libevmasm)
add_subdirectory(libyul)
add_subdirectory(libsolidity)
add_subdirectory(libsolc)
add_subdirectory(libstdlib)
add_subdirectory(tools)

if (NOT EMSCRIPTEN)
Expand Down
39 changes: 35 additions & 4 deletions docs/050-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,23 @@ Pour la plupart des sujets, le compilateur fournira des suggestions.
fonction et constructeur, et ``external`` à chaque fonction de fallback ou d'interface
d'interface qui ne spécifie pas déjà sa visibilité.

<<<<<<< HEAD
* La localisation explicite des données pour toutes les variables de type struct, array ou mapping est
maintenant obligatoire. Ceci s'applique également aux paramètres des fonctions et aux
de retour. Par exemple, changez ``uint[] x = m_x`` en ``uint[] storage x =
m_x``, et ``fonction f(uint[][] x)`` en ``fonction f(uint[][] mémoire x)``
où "memory" est l'emplacement des données et peut être remplacé par "storage" ou "calldata".
``calldata`` en conséquence. Notez que les fonctions ``externes`` requièrent des
paramètres dont l'emplacement des données est ``calldata``.
=======
* 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 = 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``.
>>>>>>> english/develop

* Les types de contrats n'incluent plus les membres ``addresses`` afin de
afin de séparer les espaces de noms. Par conséquent, il est maintenant nécessaire de
Expand Down Expand Up @@ -139,8 +149,13 @@ Pour la plupart des sujets, le compilateur fournira des suggestions.
payante " ou créez une nouvelle fonction interne pour la logique du programme qui
utilise ``msg.value``.

<<<<<<< HEAD
* Pour des raisons de clarté, l'interface de la ligne de commande exige maintenant ``-`` si l'
l'entrée standard est utilisée comme source.
=======
* For clarity reasons, the command-line interface now requires ``-`` if the
standard input is used as source.
>>>>>>> english/develop

Éléments dépréciés
===================
Expand All @@ -149,6 +164,7 @@ Cette section liste les changements qui déprécient des fonctionnalités ou des
plusieurs de ces changements étaient déjà activés dans le mode expérimental
``v0.5.0``.

<<<<<<< HEAD
Interfaces en ligne de commande et JSON
--------------------------------

Expand All @@ -162,6 +178,21 @@ Interfaces en ligne de commande et JSON

* Les options de ligne de commande ``--clone-bin`` et ``--combined-json clone-bin`` ont été supprimées.
ont été supprimées.
=======
Command-line and JSON Interfaces
--------------------------------

* 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
renaming of the intermediate language ``Julia`` to ``Yul``.

* The ``--clone-bin`` and ``--combined-json clone-bin`` command-line options
were removed.
>>>>>>> english/develop

* Les remappages avec un préfixe vide ne sont pas autorisés.

Expand Down Expand Up @@ -485,7 +516,7 @@ Nouvelle 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 @@ -502,7 +533,7 @@ Nouvelle 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 @@ -518,8 +549,8 @@ Nouvelle 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));
}
}
44 changes: 44 additions & 0 deletions docs/060-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,13 @@ Pour la liste complète, consultez
Changements dont le compilateur pourrait ne pas être averti
=========================================

<<<<<<< HEAD
Cette section liste les changements pour lesquels le comportement de votre code pourrait
changer sans que le compilateur vous en avertisse.
=======
This section lists changes where the behavior of your code might
change without the compiler telling you about it.
>>>>>>> english/develop

* Le type résultant d'une exponentiation est le type de la base. Il s'agissait auparavant du plus petit type
qui peut contenir à la fois le type de la base et le type de l'exposant, comme pour les opérations symétriques.
Expand Down Expand Up @@ -53,9 +58,17 @@ Pour la plupart des sujets, le compilateur fournira des suggestions.
Si le nom contient un point, son préfixe jusqu'au point ne doit pas entrer en conflit avec une déclaration en dehors du bloc d'assemblage en ligne.
d'assemblage.

<<<<<<< HEAD
* Le shadowing de variables d'état est désormais interdit. Un contrat dérivé peut seulement
déclarer une variable d'état ``x``, que s'il n'y a pas de variable d'état visible avec le même nom
d'état visible portant le même nom dans l'une de ses bases.
=======
* 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.
>>>>>>> english/develop


Changements sémantiques et syntaxiques
Expand Down Expand Up @@ -102,25 +115,45 @@ ou qui étaient plus difficiles à réaliser.
Changements d'interface
=================

<<<<<<< HEAD
Cette section liste les changements qui ne sont pas liés au langage lui-même, mais qui ont un effet sur les interfaces du compilateur.
le compilateur. Ces modifications peuvent changer la façon dont vous utilisez le compilateur sur la ligne de commande, la façon dont vous utilisez son interface programmable, ou la façon dont vous analysez la sortie qu'il produit.
ou comment vous analysez la sortie qu'il produit.
=======
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
interface, or how you analyze the output produced by it.
>>>>>>> english/develop

Nouveau rapporteur d'erreurs
~~~~~~~~~~~~~~~~~~

<<<<<<< HEAD
Un nouveau rapporteur d'erreur a été introduit, qui vise à produire des messages d'erreur plus accessibles sur la ligne de commande.
Il est activé par défaut, mais si vous passez ``--old-reporter``, vous revenez à l'ancien rapporteur d'erreurs, qui est déprécié.
=======
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.
>>>>>>> english/develop

Options de hachage des métadonnées
~~~~~~~~~~~~~~~~~~~~~

<<<<<<< HEAD
Le compilateur ajoute maintenant le hash `IPFS <https://ipfs.io/>`_ du fichier de métadonnées à la fin du bytecode par défaut.
(pour plus de détails, voir la documentation sur :doc:`contract metadata <metadata>`). Avant la version 0.6.0, le compilateur ajoutait la balise
`Swarm <https://ethersphere.github.io/swarm-home/>`_ hash par défaut, et afin de toujours supporter ce comportement,
la nouvelle option de ligne de commande ``--metadata-hash`` a été introduite. Elle permet de sélectionner le hachage à produire et à ajouter
ajouté, en passant soit ``ipfs`` soit ``swarm`` comme valeur à l'option de ligne de commande ``--metadata-hash``.
Passer la valeur ``none`` supprime complètement le hachage.
=======
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,
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.
>>>>>>> english/develop

Ces changements peuvent également être utilisés via l'interface :ref:`Standard JSON Interface<compiler-api>` et affecter les métadonnées JSON générées par le compilateur.

Expand Down Expand Up @@ -169,8 +202,19 @@ Cette section donne des instructions détaillées sur la façon de mettre à jou
* Choisissez des identifiants uniques pour les déclarations de variables dans l'assemblage en ligne qui n'entrent pas en conflit avec les déclarations en dehors de l'assemblage en ligne.
avec des déclarations en dehors du bloc d'assemblage en ligne.

<<<<<<< HEAD
* Ajoutez "virtual" à chaque fonction non interface que vous avez l'intention de remplacer. Ajoutez ``virtual`` à toutes les fonctions sans implémentation en dehors des interfaces.
à toutes les fonctions sans implémentation en dehors des interfaces. Pour l'héritage simple, ajoutez
``override`` à chaque fonction de remplacement. Pour l'héritage multiple, ajoutez ``override(A, B, ..)``,
où vous listez entre parenthèses tous les contrats qui définissent la fonction surchargée. Lorsque
plusieurs bases définissent la même fonction, le contrat qui hérite doit remplacer toutes les fonctions conflictuelles.
=======
* Add ``virtual`` to every non-interface function you intend to override. Add ``virtual``
to all functions without implementation outside interfaces. For single inheritance, add
``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()``.
>>>>>>> english/develop
37 changes: 37 additions & 0 deletions docs/080-breaking-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,34 @@ le changelog de la version `0.8.0 <https://github.com/ethereum/solidity/releases
Changements silencieux de la sémantique
===============================

<<<<<<< HEAD
Cette section répertorie les modifications où le code existant change de comportement sans que
le compilateur vous en informe.

* Les opérations arithmétiques s'inversent en cas de sous-dépassement et de dépassement. Vous pouvez utiliser ``unchecked { ... }`` pour utiliser
le comportement d'enveloppement précédent.
=======
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 behavior.
>>>>>>> english/develop

Les vérifications pour le débordement sont très communes, donc nous les avons faites par défaut pour augmenter la lisibilité du code,
même si cela entraîne une légère augmentation du coût de l'essence.

* ABI coder v2 est activé par défaut.

<<<<<<< HEAD
Vous pouvez choisir d'utiliser l'ancien comportement en utilisant ``pragma abicoder v1;``.
Le pragma ``pragma experimental ABIEncoderV2;`` est toujours valide, mais il est déprécié et n'a aucun effet.
Si vous voulez être explicite, veuillez utiliser le pragma ``pragma abicoder v2;`` à la place.
=======
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.
>>>>>>> english/develop

Notez que ABI coder v2 supporte plus de types que v1 et effectue plus de contrôles d'intégrité sur les entrées.
ABI coder v2 rend certains appels de fonctions plus coûteux et il peut aussi faire des appels de contrats
Expand Down Expand Up @@ -57,8 +71,13 @@ Nouvelles restrictions

Cette section énumère les changements qui pourraient empêcher les contrats existants de se compiler.

<<<<<<< HEAD
* Il existe de nouvelles restrictions liées aux conversions explicites de littéraux. Le comportement précédent dans
les cas suivants était probablement ambigu :
=======
* There are new restrictions related to explicit conversions of literals. The previous behavior in
the following cases was likely ambiguous:
>>>>>>> english/develop

1. Les conversions explicites de littéraux négatifs et de littéraux plus grands que ``type(uint160).max`` en
``adresse`` sont interdites.
Expand Down Expand Up @@ -106,7 +125,11 @@ Cette section énumère les changements qui pourraient empêcher les contrats ex

* Les fonctions globales ``log0``, ``log1``, ``log2``, ``log3`` et ``log4`` ont été supprimées.

<<<<<<< HEAD
Ce sont des fonctions de bas niveau qui étaient largement inutilisées. Leur comportement est accessible depuis l'assemblage en ligne.
=======
These are low-level functions that were largely unused. Their behavior can be accessed from inline assembly.
>>>>>>> english/develop

* Les définitions de ``enum`` ne peuvent pas contenir plus de 256 membres.

Expand Down Expand Up @@ -163,6 +186,7 @@ Changements d'interface
Comment mettre à jour votre code
=======================

<<<<<<< HEAD
- Si vous comptez sur l'arithmétique enveloppante, entourez chaque opération de ``unchecked { ... }``.
- Optionnel : Si vous utilisez SafeMath ou une bibliothèque similaire, changez ``x.add(y)`` en ``x + y``, ``x.mul(y)`` en ``x * y`` etc.
- Ajoutez ``pragma abicoder v1;`` si vous voulez rester avec l'ancien codeur ABI.
Expand All @@ -174,3 +198,16 @@ Comment mettre à jour votre code
- Remplacez ``x**y**z`` par ``(x**y)**z``.
- Utilisez l'assemblage en ligne en remplacement de ``log0``, ..., ``log4``.
- Négation des entiers non signés en les soustrayant de la valeur maximale du type et en ajoutant 1 (par exemple, ``type(uint256).max - x + 1``, tout en s'assurant que `x` n'est pas zéro)
=======
- If you rely on wrapping arithmetic, surround each operation with ``unchecked { ... }``.
- Optional: If you use SafeMath or a similar library, change ``x.add(y)`` to ``x + y``, ``x.mul(y)`` to ``x * y`` etc.
- Add ``pragma abicoder v1;`` if you want to stay with the old ABI coder.
- Optionally remove ``pragma experimental ABIEncoderV2`` or ``pragma abicoder v2`` since it is redundant.
- Change ``byte`` to ``bytes1``.
- Add intermediate explicit type conversions if required.
- Combine ``c.f{gas: 10000}{value: 1}()`` to ``c.f{gas: 10000, value: 1}()``.
- 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)
>>>>>>> english/develop
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
Loading