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.17-65-g2201526a9 (2022-09-28) #40

Open
wants to merge 1,009 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1009 commits
Select commit Hold shift + click to select a range
4e67ef2
Merge pull request #13282 from ethereum/fix-array-encode-bug
ekpyron Aug 8, 2022
0835e41
Sort changelog for 0.8.16 alphabetically
cameel Aug 8, 2022
fb51bd6
Changelog cleanup for 0.8.16
cameel Aug 8, 2022
f390b01
Merge pull request #13357 from ethereum/sort-changelog-0.8.16
ekpyron Aug 8, 2022
caba38d
Set release date for 0.8.16 and update the bug list
cameel Aug 8, 2022
d7531b7
Tidy up and update .gitignore
nikola-matic Aug 8, 2022
07a7930
Merge pull request #13358 from ethereum/set-release-date-0.8.16
cameel Aug 8, 2022
cc11c6f
Set version to 0.8.17
cameel Aug 8, 2022
abe869a
Merge pull request #13359 from ethereum/set-version-to-0.8.17
ekpyron Aug 8, 2022
c1cbffc
update_bugs_by_version: Use pathlib
cameel Aug 8, 2022
8874627
update_bugs_by_version: Don't fail when the list gets updated
cameel Aug 8, 2022
c2d4e03
Add blog post link to bug list.
ekpyron Aug 8, 2022
6a42da8
Merge pull request #13361 from ethereum/addBuglistLink
cameel Aug 8, 2022
bb1a8df
Merge pull request #13355 from ethereum/tidy-up-gitignore
nikola-matic Aug 9, 2022
9a429e2
Fix ICE on invalid tuple assignments.
ekpyron Aug 9, 2022
6b60524
Merge pull request #13367 from ethereum/invalidTupleAssignment
ekpyron Aug 9, 2022
6439955
Update the default free memory pointer in Yul.rst
0xpranay Aug 10, 2022
80f77dc
Merge pull request #13360 from ethereum/update-bugs-by-version-no-err…
cameel Aug 10, 2022
664b7bf
[Docs] Fixed link to internal-function-calls
xromrom Jul 11, 2022
bbf6ecf
[Docs] Updated a part about abicoder v2 and multi-dimensional array f…
xromrom Jul 13, 2022
213f951
Make gas diff stats script executable.
ekpyron Aug 10, 2022
676e2fe
Merge pull request #13379 from ethereum/makeGasDiffScriptExecutable
ekpyron Aug 10, 2022
c4b0cb7
Merge pull request #13300 from krakxn/patch-1
ekpyron Aug 10, 2022
3a5b43e
Merge pull request #13286 from LCamel/contract_metadata_doc
ekpyron Aug 10, 2022
3c0a735
Merge pull request #13262 from xromrom/fixLinkToInternalFunctionCalls…
cameel Aug 10, 2022
d066dd2
Calldata validation tests
wechman Jul 22, 2022
123a410
fixup! Calldata validation tests
wechman Aug 10, 2022
60e7e4a
fixup! Calldata validation tests
wechman Aug 10, 2022
99ac7e0
fixup! Calldata validation tests
wechman Aug 11, 2022
9290ccb
Added build flag to disable pedantic builds
YuviTz1 Jul 8, 2022
b7847c9
installing-solidity.rst: Mention the PEDANTIC flag
cameel Aug 11, 2022
351efae
Little enhancements to the ppa release script
Marenz Aug 9, 2022
0fab970
Remove old distributions in release_ppa script
Marenz Aug 10, 2022
e3ed29d
Permit multiple indirections in coding calldata to and from memory/ca…
bshastry Aug 8, 2022
b9967c6
Merge pull request #13289 from ethereum/calldata_tests
ekpyron Aug 12, 2022
51e2259
Merge pull request #13370 from ethereum/ppa_release_fixes
ekpyron Aug 12, 2022
c48be40
Merge pull request #13380 from ethereum/multiple-indirections
bshastry Aug 12, 2022
2282ea5
Added overflow checks after multiplication operation is executed.
matheusaaguiar Jun 20, 2022
e27cb02
Merge pull request #13177 from ethereum/check-overflow-after-mul-oper…
matheusaaguiar Aug 12, 2022
f1a5bc7
Update reference-types.rst
aathan Mar 23, 2022
9d5fb1b
Update operators.rst
aathan Mar 24, 2022
0561bd6
Update control-structures.rst
aathan Mar 24, 2022
cdf48de
Merge pull request #12837 from aathan/patch-2
Aug 13, 2022
ffbb6f1
Update value-types.rst
aathan Apr 23, 2022
681581d
Merge pull request #12844 from aathan/patch-6
Aug 13, 2022
18ce69e
Update reference-types.rst
aathan Mar 24, 2022
898ad25
Review suggestions
Aug 13, 2022
ec4ccf8
Improve docs of possible function inputs and outputs
minaminao Aug 4, 2022
9dd2e0e
Merge pull request #12954 from aathan/clarify-address-literals-eip-55
Aug 13, 2022
5cf3973
Merge pull request #12852 from aathan/patch-9
Aug 13, 2022
60d513c
Updated yul.rst with feedback.
0xpranay Aug 13, 2022
b175591
Merge pull request #13256 from YuviTz1/develop
Aug 13, 2022
1b8d7aa
Merge pull request #13346 from minaminao/docs-abi-encoder-v2-default
Aug 13, 2022
a78a2bc
Merge pull request #13374 from 0xpranay/patch-2
Aug 13, 2022
4682c01
Update ASTJsonExporter.cpp
Pospelove Aug 14, 2022
32aa000
Update FullInliner.cpp
Pospelove Aug 14, 2022
31bd4f6
Merge pull request #13389 from Pospelove/patch-1
ekpyron Aug 15, 2022
5da4658
Document in ``solc --help`` usage of ``--metadata`` better.
Marenz Jul 21, 2022
730950f
[buildpack] Switch from aarlt/[email protected] to unsplash/commen…
aarlt Aug 15, 2022
fbef272
Merge pull request #13394 from ethereum/buildpack-deps-fix
Aug 15, 2022
e996fe6
Yul Optimizer: Simplify start offset of zero-length operations.
ekpyron Apr 6, 2022
733b0f6
Disable failing chainlink tests.
ekpyron Jun 16, 2022
c0e6780
Merge pull request #12855 from aathan/patch-12
Aug 15, 2022
a9c2186
Update tests.
ekpyron Aug 10, 2022
1b081d0
Merge pull request #13388 from Pospelove/fix-12027
ekpyron Aug 15, 2022
ee2c4cd
test/cmdlineTests.sh: fix verbosity.
aarlt Aug 15, 2022
b08454e
Remove callcode in heading
minaminao Aug 15, 2022
1706db2
Fix underline
minaminao Aug 15, 2022
a0ee14f
Merge pull request #13399 from minaminao/remove-callcode-in-heading
Aug 15, 2022
0400b43
Enable highlighting for more code blocks in the docs
cameel Aug 16, 2022
f20ca0c
Merge pull request #13401 from ethereum/docs-more-highlighting
cameel Aug 16, 2022
6b6cfa1
Peg hardhat-ethers version
nikola-matic Aug 16, 2022
a4358b1
Merge pull request #13398 from ethereum/cmdline-test-verbosity-fix
aarlt Aug 16, 2022
bb41ddd
Merge pull request #13404 from ethereum/peg-hardhat-ethers-version
nikola-matic Aug 16, 2022
cf3bae0
Fix "slot" access via mapping reference in assembly
wechman Aug 16, 2022
86ab18c
Merge pull request #13287 from ethereum/bettercmdlineHelp
Marenz Aug 18, 2022
1b5332c
Fix spelling mistakes and CI spellcheck job
Marenz Aug 18, 2022
a229d72
Merge pull request #13411 from ethereum/fix-spelling-ci
Marenz Aug 18, 2022
4addf1e
[buildpack] Switch to unsplash/[email protected].
aarlt Aug 15, 2022
542ce5a
Use long option for spellchecker in CI
Marenz Aug 18, 2022
3497e2b
Merge pull request #13413 from ethereum/fix-spelling-ci
Marenz Aug 18, 2022
f01a09f
Merge pull request #13400 from ethereum/buildpack-deps-fix2
aarlt Aug 19, 2022
a3de6cd
Merge pull request #12762 from ethereum/emptyReturnRevert
Marenz Aug 22, 2022
0e2ab05
libsolutil: Adding findFilesRecursively() helper to find files recurs…
christianparpart Jun 13, 2022
b6ba432
lsp: Always load all solidity files from project for analyzing.
christianparpart Jun 13, 2022
122fbc6
Adds include-paths-nested test case.
christianparpart Aug 15, 2022
d31e4dc
lsp: Finishing last missing test wrt complex nested project directory…
christianparpart Aug 15, 2022
d0854cb
Applying CI-reported fixes.
christianparpart Aug 22, 2022
b22d149
Adds extra check to only consider regular files (e.g. not directories…
christianparpart Aug 22, 2022
3fc7deb
lsp: Code-review fixups.
christianparpart Aug 24, 2022
c8074d2
lsp: Limit resolvesToRegularFile()'s recursion depth to 10.
christianparpart Aug 24, 2022
44fcf35
Merge pull request #13150 from ethereum/lsp-analyze-all-in-project
christianparpart Aug 24, 2022
66f4828
change to common config of 1 job to reuse between osx and ubuntu
super1ha1 Apr 11, 2022
22a0c46
Merge pull request #12923 from super1ha1/circle-ci-merge_similar_jobs
cameel Aug 24, 2022
1cd6f2a
Fix warning about DOWNLOAD_EXTRACT_TIMESTAMP on CMake 3.24
Sotatek-ThanhTran Aug 24, 2022
318dedf
Update emscripten Dockerfile to 3.1.19
timweri Aug 13, 2022
3587054
Dockerfile.emscripten: Use ``&&`` instead of ``;`` everywhere
Marenz Aug 23, 2022
3d54bfd
ast: condense duplicate code
tcoyvwac Aug 17, 2022
0475ec8
Cleanup static z3 script to work similar to release_ppa
Marenz Aug 22, 2022
c5e9b6e
static_z3.sh: Update releases to include only maintained ones
Marenz Aug 25, 2022
5849fc3
Update contract metadata docs
kuzdogan Aug 25, 2022
c4d9cdf
Merge pull request #13424 from ethereum/update-emscripten-dockerfile
Marenz Aug 25, 2022
484c9d3
Update docker images for emscripten.
Marenz Aug 25, 2022
0bec0e8
Merge pull request #13397 from kuzdogan/patch-1
Aug 25, 2022
f802eaf
Merge pull request #13436 from ethereum/newemscripthashes
cameel Aug 25, 2022
71c3c26
Fix inconsistent nested dependency in safe-contracts
nikola-matic Aug 24, 2022
7bfec3b
Merge pull request #13430 from ethereum/fix-gnosis-test-inconsistent-…
nikola-matic Aug 26, 2022
e99e93f
Fix pylint warning
Aug 29, 2022
409f3b4
Merge pull request #13444 from ethereum/fix_pylint
Aug 29, 2022
a2a8040
Meetings on Mondays and Wednesdays should happen at the same time
nishant-sachdeva Aug 26, 2022
eb644b1
fixed grammar typo in readme.md
MeetRajput00 Aug 29, 2022
e49c2ef
Merge pull request #13440 from ethereum/meeting_time_standardized
Aug 29, 2022
f0d1dda
Merge pull request #13447 from MeetRajput00/develop
Aug 29, 2022
5a3ae1a
Merge pull request #13422 from ethereum/cleanup-z3-script
Marenz Aug 29, 2022
f508494
Fix undefined order of evaluation
Marenz Aug 29, 2022
2ddb26a
Merge pull request #13429 from sotatek-dev/fix/13421
Marenz Aug 29, 2022
81c4604
Clarify effect of memory unsafe assembly
frangio Aug 28, 2022
94fd40f
Merge pull request #13443 from frangio/fix-13416
Aug 29, 2022
8ea483d
Merge pull request #13449 from ethereum/fix-undefined-order-of-evalua…
Marenz Aug 29, 2022
216d38c
added yul exception to compiler error types
nishant-sachdeva Aug 29, 2022
7fdd494
Merge pull request #13450 from ethereum/add_yul_exception_to_compiler…
Marenz Aug 29, 2022
99400a6
Fix typo
minaminao Aug 30, 2022
a08d39c
Update issue selector, and remove auto labeling
nikola-matic Aug 30, 2022
776f74d
Grammer fix
emmaodia Aug 30, 2022
ec36a5a
Merge pull request #13452 from minaminao/fix-typo-optimizer
Aug 30, 2022
19e3c73
Merge pull request #13455 from emmaodia/patch-2
Aug 30, 2022
f7cc29b
Add std:: qualifier to move() calls
Marenz Aug 23, 2022
fa5ea38
Merge pull request #13409 from tcoyvwac/fix/refactor/reduce-code-dupl…
Marenz Aug 30, 2022
16c0838
Update docker images and tests
Aug 26, 2022
22e4e2c
disable SMT tests for the clang job
Aug 30, 2022
4f65240
Merge pull request #13454 from ethereum/github-labels-and-issue-changes
Aug 30, 2022
2420966
Merge pull request #13428 from ethereum/qualify-move
Aug 30, 2022
e96453d
Added details on placeholders in function-modifiers
The-Arbiter Jul 23, 2022
3658d8a
Merge pull request #13292 from The-Arbiter/Function_modifiers_placeho…
Aug 30, 2022
e048ba4
Merge pull request #13439 from ethereum/z3_4_8_11_smt_tests
Aug 30, 2022
cbcd8a7
Update z3 to 4.11.0
Aug 26, 2022
79adec0
Add detail about limitation in voting contract example
taylorferran Aug 13, 2022
b676944
Update security-considerations.rst
lukehutch Jun 25, 2022
b028671
Merge pull request #13438 from ethereum/z3_4_11_0
Aug 30, 2022
b2afe9f
Merge pull request #13457 from ethereum/checks
Marenz Aug 30, 2022
ecdc808
Merge pull request #13387 from taylorferran/improve-voting-example
matheusaaguiar Aug 30, 2022
6e1f0e7
Set CMP0115 to new in EthPolicy
Pospelove Aug 30, 2022
6d331a8
Improve comment on CMP0115
Pospelove Aug 31, 2022
66994b6
README.md: added comma
xternet Aug 31, 2022
220aece
Merge pull request #13465 from xternet/patch-1
matheusaaguiar Sep 1, 2022
5192965
Merge pull request #13460 from Pospelove/patch-1
ekpyron Sep 1, 2022
6b99162
Merge pull request #13406 from ethereum/slot_on_reference_fix
wechman Sep 5, 2022
e5769d7
Fix compiler version check in hardhat artifacts json
nikola-matic Sep 5, 2022
99f15ff
Merge pull request #13481 from ethereum/fix-artifacts-check-in-hardha…
ekpyron Sep 5, 2022
1f6a299
Add a check for unqualified move
nikola-matic Sep 1, 2022
f2168c1
Merge pull request #13467 from ethereum/check-for-unqualified-move
Marenz Sep 5, 2022
71a9fb2
ReleaseChecklist: Documentation now gets built automatically from tags
cameel Aug 8, 2022
dd2f718
ReleaseChecklist: Regenerating the bug list does not require running …
cameel Aug 8, 2022
b9d06b4
ReleaseChecklist: More detailed steps related to blog posts
cameel Aug 8, 2022
3f437da
ReleaseChecklist: Emphasize separate changelog and version commits
cameel Aug 8, 2022
3388305
ReleaseChecklist: Add "still in progress" warning and make the releas…
cameel Aug 8, 2022
d9f169e
ReleaseChecklist: Consistently use double backticks everywhere, fix i…
cameel Aug 9, 2022
f5c91ec
ReleaseChecklist: Don't sort contributor list by number of commits an…
cameel Aug 11, 2022
be67e76
ReleaseChecklist: Update the list of requirements
cameel Aug 11, 2022
98ad27d
ReleaseChecklist: Update PPA instructions
cameel Aug 16, 2022
ccc3317
ReleaseChecklist: Markdown formatting for all links
cameel Sep 5, 2022
62e4ce3
Merge pull request #13363 from ethereum/release-checklist-update-and-…
ekpyron Sep 5, 2022
0d98436
Grammar fix
emmaodia Aug 31, 2022
7911666
Merge pull request #13463 from emmaodia/develop
ekpyron Sep 5, 2022
5305993
Pin hardhat version in GP2 external tests
nikola-matic Sep 5, 2022
e0b2162
Merge pull request #13485 from ethereum/pin-hardhat-in-gp2-ext-tests
nikola-matic Sep 5, 2022
deab2bf
Add comment to pinned GP2 hardhat version
nikola-matic Sep 6, 2022
8c4bbf1
Pin hardhat version in yield-liquidator tests
nikola-matic Sep 6, 2022
f7e22fc
Merge pull request #13487 from ethereum/add-message-to-gp2-pin
nikola-matic Sep 6, 2022
b4b5f7b
Merge pull request #13489 from ethereum/pin-hardhat-version-in-yield-…
nikola-matic Sep 6, 2022
71d1209
Pin hardhat version in bleeps tests
nikola-matic Sep 6, 2022
7351f6d
Merge pull request #13491 from ethereum/pin-hardhat-version-in-bleeps…
ekpyron Sep 6, 2022
efe558a
Added note about PeepholeOptimizer in docs.
matheusaaguiar Sep 1, 2022
548a4b4
Merge pull request #13474 from ethereum/add-note-about-peephole-optim…
cameel Sep 6, 2022
c5d8c5a
Add test for copying reference types between data locations
wechman Aug 24, 2022
0262621
fixup! Add test for copying reference types between data locations
wechman Sep 7, 2022
d5e2925
broken yul optimizer test
ekpyron Sep 5, 2022
f562021
Update ReleaseChecklist.md
eltociear Sep 8, 2022
a33da17
Bugfix and tests.
ekpyron Sep 5, 2022
d6eb255
Changelog entry and bug list entry.
ekpyron Sep 5, 2022
a39bce0
Fix dynamic array spec
supermassive Sep 8, 2022
727591b
Merge pull request #13479 from ethereum/unusedStoreStorageBug
ekpyron Sep 8, 2022
f90b254
Fix SMT checker paper link
nikola-matic Sep 8, 2022
130892c
Merge pull request #13503 from ethereum/release-link-check
ekpyron Sep 8, 2022
1649f24
Add missing changelog entries for a few PRs that will go into 0.8.17
cameel Sep 8, 2022
514842e
Sort changelog for 0.8.17 alphabetically
cameel Sep 8, 2022
722e9d8
Set release date for 0.8.17 and update the bug list
cameel Sep 8, 2022
8df45f5
Merge pull request #13502 from ethereum/finalize-release-0.8.17
ekpyron Sep 8, 2022
3b52445
Set version to 0.8.18
cameel Sep 8, 2022
a12a96c
Merge pull request #13505 from ethereum/set-version-to-0.8.18
ekpyron Sep 8, 2022
918307a
ReleaseChecklist: Make sure the changelog is complete
cameel Sep 8, 2022
46b9df9
Update PPA instructions for Z3 in checklist
Marenz Sep 8, 2022
9942883
Merge pull request #13509 from ethereum/Marenz-patch-1
ekpyron Sep 8, 2022
c4d9712
Add test for copying elements of nested storage array
wechman Sep 8, 2022
dfe8fce
Tests for copying nested array of structs between data locations
wechman Sep 8, 2022
0eae9e7
Tests for copying structs between data locations
wechman Sep 9, 2022
3677c7a
Merge pull request #13510 from ethereum/release-checklist-look-for-mi…
ekpyron Sep 9, 2022
ddea589
fix per review
supermassive Sep 9, 2022
faffe3e
Update docs/abi-spec.rst
supermassive Sep 9, 2022
34be07b
Merge pull request #13500 from supermassive/patch-2
ekpyron Sep 9, 2022
f808855
Merge pull request #13498 from eltociear/patch-2
cameel Sep 9, 2022
69d9869
Fix create2 memory access in yul interpreter.
bshastry Sep 9, 2022
f6f0d6a
Make hardcoded parts of the optimizer sequence configurable
nikola-matic Aug 10, 2022
ddf0d78
Changelog and docs
nikola-matic Aug 12, 2022
314a1cc
Command line tests and minor touch ups
nikola-matic Aug 23, 2022
feba1bf
Rework metadata and cover with tests
nikola-matic Sep 5, 2022
e37dc8e
Address review comments
nikola-matic Sep 12, 2022
ea78c8f
Merge pull request #13376 from ethereum/make-hardcoded-parts-of-optim…
nikola-matic Sep 13, 2022
4a52be8
Boost tests for non-delimited optimizer sequence
nikola-matic Sep 13, 2022
12ea115
Remove std qualifier from string in Metadata tests
nikola-matic Sep 14, 2022
f05cbb9
Merge pull request #13524 from ethereum/remove-std-qualifier-from-met…
ekpyron Sep 14, 2022
1730e43
Merge pull request #13514 from ethereum/yul-interpreter-create2
ekpyron Sep 14, 2022
5f63b3c
Merge pull request #13519 from ethereum/boost-tests-for-non-delimited…
ekpyron Sep 14, 2022
1fbee82
Merge pull request #13464 from ethereum/copying_reference_types
ekpyron Sep 15, 2022
c8011d8
Cleaning up helpers around errors
nishant-sachdeva Jun 17, 2022
1f244cc
Fix Euler tests by pinning v3-periphery
nikola-matic Sep 20, 2022
db571ad
Merge pull request #13542 from ethereum/pin-v3-periphery-in-euler-tests
nikola-matic Sep 20, 2022
eafd721
refactored struct message to use std::variant for _typeOrSeverity
nishant-sachdeva Sep 6, 2022
37597f9
Merge pull request #13162 from ethereum/cleanup_helpers_around_errors
nishant-sachdeva Sep 20, 2022
f0f46a1
Add v0.6.0 change notes for inline assembly opcode syntax changes.
gnattishness Sep 21, 2022
4e929ee
Fix stripping in CLI tests does not produce correct JSON formatting
miles170 Sep 21, 2022
dad1a56
Pretty print expected json output of command line tests
miles170 Sep 22, 2022
e276736
Add workflow to label, comment and close stale pull requests
r0qs Sep 8, 2022
d0103b5
Merge pull request #13522 from ethereum/gh-stale-actions
r0qs Sep 22, 2022
c2a9e36
Add code style rule for std:: qualifier
nikola-matic Sep 23, 2022
b12b845
Merge pull request #13554 from ethereum/code-style-rule-for-std-quali…
nikola-matic Sep 23, 2022
44e8ada
Merge pull request #13549 from miles170/develop
nishant-sachdeva Sep 23, 2022
3ddf5db
Merge pull request #13548 from gnattishness/060-opcode-breaking-changes
cameel Sep 23, 2022
e3c7369
EVMHost: Simplify some code and dcoument functions
axic Sep 16, 2022
a260000
EVMHost: Make it clear which MockedHost helpers are used
axic Sep 25, 2022
d07c596
Renaming lspAssert to lspRequire plus adding some documentation to ma…
christianparpart Sep 19, 2022
70aa3ae
Merge pull request #13540 from ethereum/lsp-require
christianparpart Sep 26, 2022
c967a62
EVMHost: Reduce code duplication in precompiles
axic Sep 26, 2022
8b70108
Merge pull request #13562 from ethereum/evmc-cleanup
axic Sep 26, 2022
f40d1d6
EVMHost: Add size%192 check to bn128pairing
axic Sep 26, 2022
50182d7
EVMHost: replace precompileALTBN128PairingProduct with mapping
axic Sep 26, 2022
44a2dd8
Update CVC4::BitVector ctor call
0xGeorgii Sep 23, 2022
311b205
Merge pull request #13556 from GeorgePlotnikov/fix-cvc4-bitvector-cto…
axic Sep 26, 2022
565423c
Replace use of boost::adapters::filtered with ranges::views::filter
axic Sep 27, 2022
8230022
Remove unused include of boost/variant
axic Sep 27, 2022
0f484ec
Replace use of boost::algorithm::all_of with ranges::all_of
axic Sep 27, 2022
cb5c559
Merge pull request #13567 from ethereum/ranges-filter
axic Sep 27, 2022
d1b8991
Merge pull request #13565 from ethereum/evmc-cleanup
axic Sep 27, 2022
7252535
Improve FunctionSelector helpers
axic Sep 27, 2022
2a41295
Drop implicit alignment argument from FixedHash
axic Sep 27, 2022
5f8b487
Merge pull request #13571 from ethereum/explicit-fixedhash
axic Sep 27, 2022
9aa304d
EVMHost: Calculate address for CREATE properly
axic Sep 16, 2022
0357ced
Update tests and include new for create/create2 calculation
axic Sep 16, 2022
2201526
Merge pull request #13533 from ethereum/evmhost-create
axic Sep 28, 2022
e8db582
English documentation updates up to v0.8.17-65-g2201526a9 (2022-09-28)
soldocsbot Sep 28, 2022
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
145 changes: 145 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
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")
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")
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.18")
# 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)

# 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()
# 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 ${CMAKE_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)

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

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

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

if (NOT (${Z3_FOUND} OR ${CVC4_FOUND}))
message("No SMT solver found (or it has been forcefully disabled). Optional SMT checking will not be available.\
\nPlease install Z3 or CVC4 or remove the option disabling them (USE_Z3, USE_CVC4).")
endif()

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

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

if (TESTS AND NOT EMSCRIPTEN)
add_subdirectory(test)
endif()
12 changes: 6 additions & 6 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 @@ -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));
}
}
5 changes: 5 additions & 0 deletions docs/060-breaking-changes.rst
Original file line number Diff line number Diff line change
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 @@ -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()``.
7 changes: 4 additions & 3 deletions docs/_static/js/toggle.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@ document.addEventListener('DOMContentLoaded', function() {
var mode = (isDay ? "Day" : "Night");
localStorage.setItem("css-mode", mode);

var daysheet = $('link[href="_static/pygments.css"]')[0].sheet;
var url_root = DOCUMENTATION_OPTIONS.URL_ROOT == "./" ? "" : DOCUMENTATION_OPTIONS.URL_ROOT;
var daysheet = $(`link[href="${url_root}_static/pygments.css"]`)[0].sheet;
daysheet.disabled = !isDay;

var nightsheet = $('link[href="_static/css/dark.css"]')[0];
var nightsheet = $(`link[href="${url_root}_static/css/dark.css"]`)[0];
if (!isDay && nightsheet === undefined) {
var element = document.createElement("link");
element.setAttribute("rel", "stylesheet");
element.setAttribute("type", "text/css");
element.setAttribute("href", "_static/css/dark.css");
element.setAttribute("href", `${url_root}_static/css/dark.css`);
document.getElementsByTagName("head")[0].appendChild(element);
return;
}
Expand Down
35 changes: 18 additions & 17 deletions docs/abi-spec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ The Contract Application Binary Interface (ABI) is the standard way to interact
from outside the blockchain and for contract-to-contract interaction. Data is encoded according to its type,
as described in this specification. The encoding is not self describing and thus requires a schema in order to decode.

We assume the interface functions of a contract are strongly typed, known at compilation time and static.
We assume that the interface functions of a contract are strongly typed, known at compilation time and static.
We assume that all contracts will have the interface definitions of any contracts they call available at compile-time.

This specification does not address contracts whose interface is dynamic or otherwise known only at run-time.

.. _abi_function_selector:
.. index:: selector
.. index:: ! selector; of a function

Function Selector
=================
Expand All @@ -29,7 +29,7 @@ first (left, high-order in big-endian) four bytes of the Keccak-256 hash of the
the function. The signature is defined as the canonical expression of the basic prototype without data
location specifier, i.e.
the function name with the parenthesised list of parameter types. Parameter types are split by a single
comma - no spaces are used.
comma no spaces are used.

.. note::
The return type of a function is not part of this signature. In
Expand Down Expand Up @@ -133,7 +133,7 @@ The encoding is designed to have the following properties, which are especially
previous version of the ABI, the number of reads scaled linearly with the total number of dynamic
parameters in the worst case.

2. The data of a variable or array element is not interleaved with other data and it is
2. The data of a variable or an array element is not interleaved with other data and it is
relocatable, i.e. it only uses relative "addresses".


Expand Down Expand Up @@ -191,9 +191,9 @@ on the type of ``X`` being

- ``T[]`` where ``X`` has ``k`` elements (``k`` is assumed to be of type ``uint256``):

``enc(X) = enc(k) enc([X[0], ..., X[k-1]])``
``enc(X) = enc(k) enc((X[0], ..., X[k-1]))``

i.e. it is encoded as if it were an array of static size ``k``, prefixed with
i.e. it is encoded as if it were a tuple with ``k`` elements of the same type (resp. an array of static size ``k``), prefixed with
the number of elements.

- ``bytes``, of length ``k`` (which is assumed to be of type ``uint256``):
Expand Down Expand Up @@ -252,7 +252,7 @@ Given the contract:
}


Thus for our ``Foo`` example if we wanted to call ``baz`` with the parameters ``69`` and
Thus, for our ``Foo`` example if we wanted to call ``baz`` with the parameters ``69`` and
``true``, we would pass 68 bytes total, which can be broken down into:

- ``0xcdcd77c0``: the Method ID. This is derived as the first 4 bytes of the Keccak hash of
Expand Down Expand Up @@ -308,7 +308,7 @@ In total:
Use of Dynamic Types
====================

A call to a function with the signature ``f(uint,uint32[],bytes10,bytes)`` with values
A call to a function with the signature ``f(uint256,uint32[],bytes10,bytes)`` with values
``(0x123, [0x456, 0x789], "1234567890", "Hello, world!")`` is encoded in the following way:

We take the first four bytes of ``sha3("f(uint256,uint32[],bytes10,bytes)")``, i.e. ``0x8be65246``.
Expand Down Expand Up @@ -348,7 +348,7 @@ All together, the encoding is (newline after function selector and each 32-bytes
000000000000000000000000000000000000000000000000000000000000000d
48656c6c6f2c20776f726c642100000000000000000000000000000000000000

Let us apply the same principle to encode the data for a function with a signature ``g(uint[][],string[])``
Let us apply the same principle to encode the data for a function with a signature ``g(uint256[][],string[])``
with values ``([[1, 2], [3]], ["one", "two", "three"])`` but start from the most atomic parts of the encoding:

First we encode the length and data of the first embedded dynamic array ``[1, 2]`` of the first root array ``[[1, 2], [3]]``:
Expand Down Expand Up @@ -417,7 +417,7 @@ thus ``e = 0x00000000000000000000000000000000000000000000000000000000000000e0``.


Note that the encodings of the embedded elements of the root arrays are not dependent on each other
and have the same encodings for a function with a signature ``g(string[],uint[][])``.
and have the same encodings for a function with a signature ``g(string[],uint256[][])``.

Then we encode the length of the first root array:

Expand Down Expand Up @@ -503,6 +503,7 @@ efficient search and arbitrary legibility by defining events with two arguments
indexed, one not — intended to hold the same value.

.. _abi_errors:
.. index:: error, selector; of an error

Errors
======
Expand Down Expand Up @@ -596,7 +597,7 @@ Errors look as follows:

.. note::
There can be multiple errors with the same name and even with identical signature
in the JSON array, for example if the errors originate from different
in the JSON array; for example, if the errors originate from different
files in the smart contract or are referenced from another smart contract.
For the ABI, only the name of the error itself is relevant and not where it is
defined.
Expand Down Expand Up @@ -645,15 +646,15 @@ would result in the JSON:
Handling tuple types
--------------------

Despite that names are intentionally not part of the ABI encoding they do make a lot of sense to be included
Despite the fact that names are intentionally not part of the ABI encoding, they do make a lot of sense to be included
in the JSON to enable displaying it to the end user. The structure is nested in the following way:

An object with members ``name``, ``type`` and potentially ``components`` describes a typed variable.
The canonical type is determined until a tuple type is reached and the string description up
to that point is stored in ``type`` prefix with the word ``tuple``, i.e. it will be ``tuple`` followed by
a sequence of ``[]`` and ``[k]`` with
integers ``k``. The components of the tuple are then stored in the member ``components``,
which is of array type and has the same structure as the top-level object except that
which is of an array type and has the same structure as the top-level object except that
``indexed`` is not allowed there.

As an example, the code
Expand Down Expand Up @@ -737,10 +738,10 @@ Strict Encoding Mode
====================

Strict encoding mode is the mode that leads to exactly the same encoding as defined in the formal specification above.
This means offsets have to be as small as possible while still not creating overlaps in the data areas and thus no gaps are
This means that offsets have to be as small as possible while still not creating overlaps in the data areas, and thus no gaps are
allowed.

Usually, ABI decoders are written in a straightforward way just following offset pointers, but some decoders
Usually, ABI decoders are written in a straightforward way by just following offset pointers, but some decoders
might enforce strict mode. The Solidity ABI decoder currently does not enforce strict mode, but the encoder
always creates data in strict mode.

Expand Down Expand Up @@ -776,7 +777,7 @@ More specifically:
encoding of its elements **with** padding.
- Dynamically-sized types like ``string``, ``bytes`` or ``uint[]`` are encoded
without their length field.
- The encoding of ``string`` or ``bytes`` does not apply padding at the end
- The encoding of ``string`` or ``bytes`` does not apply padding at the end,
unless it is part of an array or struct (then it is padded to a multiple of
32 bytes).

Expand Down Expand Up @@ -804,7 +805,7 @@ Encoding of Indexed Event Parameters
====================================

Indexed event parameters that are not value types, i.e. arrays and structs are not
stored directly but instead a keccak256-hash of an encoding is stored. This encoding
stored directly but instead a Keccak-256 hash of an encoding is stored. This encoding
is defined as follows:

- the encoding of a ``bytes`` and ``string`` value is just the string contents
Expand Down
Loading