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-111-g7676ab101 (2024-03-01) #253

Open
wants to merge 2,375 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2375 commits
Select commit Hold shift + click to select a range
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
ed96eb2
Yul fuzzer: Support blobhash(uint) global function
bshastry Jan 25, 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
4d163ff
Convert tagPos to a size for address size computation
simon-perriard Feb 18, 2024
8e21255
Account for subassemblies in tag size calculation, test adjustments a…
ekpyron Feb 19, 2024
c49d847
Force install python3.12 for Window bytecode compare job
nikola-matic Feb 20, 2024
0316f84
Merge pull request #14864 from simon-perriard/fix_subTagSize_computation
ekpyron Feb 20, 2024
1185ad0
Build hardhat from latest release in t_ems_ext_hardhat
r0qs Feb 20, 2024
9f0c222
Merge pull request #14873 from ethereum/pin-python-in-windows-ci
cameel Feb 20, 2024
d703b82
gas_diff_stats.py: Add basic unit tests
cameel Feb 11, 2024
c6e2331
gas_diff_stats.py: Add a Python shebang
cameel Feb 11, 2024
e28a1d4
gas_diff_stats.py: Print errors to stderr, not stdout
cameel Feb 11, 2024
5518a30
gas_diff_stats.py: Don't let shell evaluate file names and support na…
cameel Feb 11, 2024
39f3e76
gas_diff_stats.py: Fail when the semantic test dir does not exist
cameel Feb 11, 2024
855096b
gas_diff_stats.py: Skip non-gas lines to avoid having to silence pars…
cameel Feb 11, 2024
b9c7b69
gas_diff_stats.py: Explicitly ignore ir gas instead of failing to par…
cameel Feb 11, 2024
65031d3
gas_diff_stats.py: Handle errors instead of ignoring them
cameel Feb 11, 2024
43274fd
gas_diff_stats.py: Improve table and number formatting
cameel Feb 11, 2024
b88d690
gas_diff_stats.py: Order rows in a deterministic way (by file path)
cameel Feb 11, 2024
36f2d39
CI: Add a smoke test run for gas_diff_stats.py
cameel Feb 11, 2024
c130163
Merge pull request #14875 from ethereum/ext-test-hardhat-latest-release
ekpyron Feb 21, 2024
a851c59
Fix ENS external test ensuring it applies memory-safe-assembly filter…
r0qs Feb 21, 2024
f4105a9
Merge pull request #14842 from ethereum/more-robust-gas-diff-stats
ekpyron Feb 21, 2024
d7aa37d
Use latest release instead of main branch on external tests
r0qs Feb 20, 2024
a9a870d
Test coverage for existing parsing and formatting functionality of ga…
cameel Feb 7, 2024
e47e948
SoltesTypes: Fix outdated comment about allowed keys in gasUsed
cameel Feb 11, 2024
d98c943
TestFunctionCall::formatGasExpectations(): runType can't be empty in …
cameel Feb 7, 2024
c55c8b5
TestFunctionCall::formatGasExpectations(): Move diffing into a helper
cameel Feb 7, 2024
cd94139
TestFunctionCall::formatGasExpectations(): Handle corner cases properly
cameel Feb 7, 2024
d5bae3f
TestFunctionCall::formatGasExpectations(): Helper for getting optiona…
cameel Feb 7, 2024
2ee4d6b
Keep track of code deposit gas when executing contract code
cameel Feb 9, 2024
9623386
Separate 'code' gas settings in semantic tests
cameel Feb 9, 2024
96ce95a
Do not include code deposit gas in the total visible in test expectat…
cameel Feb 9, 2024
381b149
gas_diff_stats.py: Include code deposit costs in total cost
cameel Feb 11, 2024
e7312a5
Use CircleCI rust+node convenience image for t_ems_ext_hardhat job
r0qs Feb 21, 2024
c8358f5
Fix detect_hardhat_artifact_dir in externalTests scripts
r0qs Feb 21, 2024
4438082
Merge pull request #14880 from ethereum/update-external-tests
ekpyron Feb 21, 2024
acf382b
Merge pull request #14843 from ethereum/separate-code-deposit-cost-in…
cameel Feb 21, 2024
602f855
Merge pull request #14882 from ethereum/change-hardhat-ci-image
ekpyron Feb 21, 2024
a439996
Merge pull request #14881 from ethereum/fix-detect-hardhat-artifacts
ekpyron Feb 21, 2024
bd9b92c
Merge pull request #14806 from ethereum/fuzz-blobhash
bshastry Feb 22, 2024
e095590
Parser::parseFunctionDefinition(): Return FunctionDefinition, not AST…
cameel Nov 2, 2023
fa35ed5
Add ForAllQuantifier AST node
cameel Nov 2, 2023
4d051c1
Add parser support for quantified function definitions
cameel Nov 2, 2023
cd52e5a
TypeInference: Require declarations for type variables
cameel Nov 6, 2023
dba754e
Merge pull request #14668 from ethereum/new-analysis-forall
cameel Feb 23, 2024
180f744
gas_diff_stats.py: Sort the table by average change
cameel Feb 26, 2024
14e217e
Merge pull request #14888 from ethereum/gas-diff-stats-sort-by-avg
cameel Feb 27, 2024
125767e
SMTCommand: Remember to flush query before calling solver
blishko Feb 27, 2024
28b2587
Merge pull request #14890 from ethereum/smt-solver-interface-small-up…
blishko Feb 27, 2024
51eff63
Update introduction-to-smart-contracts.rst (#14884)
eclipse1228 Feb 29, 2024
e7aaf03
docs: Replace references to "mining" with "attestation" (#14147)
Vojtch159 Feb 29, 2024
9bd2424
Fix typos in variable names and comment (#14876)
Chomtana Feb 29, 2024
7676ab1
Update natspec-format.rst : Added structs and enums to Tags (#14267)
adityakode Feb 29, 2024
52318af
English documentation updates up to v0.8.24-111-g7676ab101 (2024-03-01)
soldocsbot Mar 1, 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