Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
de857c2
Modify the metadata document.
LCamel Jul 21, 2022
4d4a030
Minor grammar fixes
anannyenaik Jul 26, 2022
14f63cc
Update docs/metadata.rst
LCamel Aug 3, 2022
d7531b7
Tidy up and update .gitignore
nikola-matic 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/comment-on-pr@v1.2.0 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/comment-on-pr@v1.3.0.
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
d5e2925
broken yul optimizer test
ekpyron Sep 5, 2022
a33da17
Bugfix and tests.
ekpyron Sep 5, 2022
d6eb255
Changelog entry and bug list entry.
ekpyron Sep 5, 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
217b0ee
Sync with ethereum/solidity@v0.8.17 (2023-04-06)
r0qs Apr 6, 2023
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
10 changes: 9 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ include(EthPolicy)
eth_policy()

# project name and version should be set after cmake_policy CMP0048
<<<<<<< HEAD
set(PROJECT_VERSION "0.8.15")
=======
set(PROJECT_VERSION "0.8.17")
>>>>>>> v0.8.17
# 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 +39,7 @@ 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)
Expand All @@ -48,6 +53,9 @@ 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)

Expand All @@ -65,7 +73,7 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/templates/license.h.in" include/licens

include(EthOptions)
configure_project(TESTS)
set(LATEST_Z3_VERSION "4.8.17")
set(LATEST_Z3_VERSION "4.11.0")
set(MINIMUM_Z3_VERSION "4.8.0")
find_package(Z3)
if (${Z3_FOUND})
Expand Down
76 changes: 76 additions & 0 deletions docs/abi-spec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,14 @@ blok zinciri dışından hem de sözleşmeler arası etkileşimde bulunmanın st
Veriler, bu spesifikasyonda açıklandığı gibi türlerine göre kodlanır. Şifreleme kendi
kendini tanımlamaz ve bu nedenle şifreyi çözmek için bir şema gerekir.

<<<<<<< HEAD
Bir sözleşmenin arayüz fonksiyonlarının güçlü bir şekilde yazıldığını, derleme zamanında
bilindiğini ve statik olduğunu varsayıyoruz. Tüm sözleşmelerin, çağırdıkları sözleşmelerin
arayüz tanımlamalarına derleme zamanında sahip olacağını varsayıyoruz.
=======
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.
>>>>>>> v0.8.17

Bu spesifikasyon, arayüzü dinamik olan veya başka bir şekilde yalnızca çalışma zamanında
bilinen sözleşmeleri ele almaz.
Expand All @@ -27,12 +32,21 @@ bilinen sözleşmeleri ele almaz.
Function Selector (Function Selector)
===========================================

<<<<<<< HEAD
Bir fonksiyon çağrısı için çağrı verisinin(call data) ilk dört baytı çağrılacak
fonksiyonu belirtmektedir. Bu, fonksiyonun imzasının Keccak-256 hash'inin ilk (sol,
büyük endian'da yüksek dereceden) dört baytıdır. İmza, veri konumu belirteci olmadan
temel prototipin kanonik ifadesi, yani parametre türlerinin parantezli listesiyle
birlikte fonksiyon adı olarak tanımlanır. Parametre tipleri tek bir virgülle ayrılır -
boşluk kullanılmaz.
=======
The first four bytes of the call data for a function call specifies the function to be called. It is the
first (left, high-order in big-endian) four bytes of the Keccak-256 hash of the signature of
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.
>>>>>>> v0.8.17

.. note::
Bir fonksiyonun geri dönüş tipi bu imzanın bir parçası değildir. ref:`Solidity'nin
Expand Down Expand Up @@ -133,8 +147,13 @@ sütunda ise bunları temsil eden ABI tipleri verilmiştir.
okuma gerekir. ABI'nin önceki bir sürümünde, okuma sayısı en kötü senaryoda toplam
dinamik parametre sayısı ile doğrusal olarak ölçeklenmekteydi.

<<<<<<< HEAD
2. Bir değişken veya dizi elemanının verileri diğer verilerle iç içe geçmez ve yeniden
konumlandırılabilir, yani yalnızca ilişkili "adresler" kullanabilirler.
=======
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".
>>>>>>> v0.8.17


Şifrelemenin Formal Spesifikasyonu
Expand Down Expand Up @@ -250,7 +269,12 @@ Sözleşmeye göre:
}


<<<<<<< HEAD
Böylece ``Foo`` örneğimiz için ``69`` ve ``true`` parametreleriyle ``baz`` ı çağırmak istersek, toplam 68 bayt iletiriz, bu da şu şekilde ayrılabilir:
=======
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:
>>>>>>> v0.8.17

- ``0xcdcd77c0``: Method ID. Bu, ``baz(uint32,bool)`` imzasının ASCII formunun Keccak hash'inin ilk 4 baytı olacak şekilde türetilecektir.
- ``0x000000000000000000000000000000000000000000000045``: ilk parametre, 32 bayta doldurulmuş bir uint32 değeri ``69``
Expand Down Expand Up @@ -595,10 +619,18 @@ Hatalar aşağıdaki gibi görünür:
* ``components``: tuple türleri için kullanılır (daha fazla bilgi aşağıdadır).

.. note::
<<<<<<< HEAD
JSON dizisinde aynı ada ve hatta aynı imzaya sahip birden fazla hata(error) olabilir,
örneğin hatalar akıllı sözleşmedeki farklı dosyalardan kaynaklanıyorsa veya başka bir
akıllı sözleşmeden referans alınıyorsa. ABI için hatanın nerede tanımlandığı değil,
yalnızca adı önemlidir.
=======
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
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.
>>>>>>> v0.8.17


Örneğin,
Expand Down Expand Up @@ -644,6 +676,7 @@ JSON ile sonuçlanacaktır:
Tuple tiplerinin kullanılması
------------------------------

<<<<<<< HEAD
İsimler bilinçli olarak ABI şifrelemesinin bir parçası olmamasına rağmen, son kullanıcıya
gösterilmesini sağlamak için JSON'a dahil edilmeleri çok önemlidir. Yapı aşağıdaki şekilde
iç içe geçmiştir:
Expand All @@ -654,6 +687,18 @@ kadar olan dize açıklaması ``tuple`` kelimesiyle ``type`` önekinde saklanır
ve ardından ``[]`` ve ``[k]`` tamsayıları ``k`` ile bir dizi olacaktır. Tuple`ın bileşenleri
daha sonra dizi tipinde olan ve üst düzey nesne ile aynı yapıya sahip olan ``components``
üyesinde saklanır, ancak ``indexed`` öğesine bu durumda izin verilmez.
=======
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 an array type and has the same structure as the top-level object except that
``indexed`` is not allowed there.
>>>>>>> v0.8.17

Örnek olarak, kod

Expand Down Expand Up @@ -735,13 +780,23 @@ JSON ile sonuçlanacaktır:
Katı Şifreleme Modu
====================

<<<<<<< HEAD
Sıkı şifreleme modu, yukarıdaki resmi spesifikasyonda tanımlandığı gibi tam olarak aynı
şifrelemeye neden olan moddur. Bu, ofsetlerin veri alanlarında çakışma yaratmadan mümkün
olduğunca küçük olması gerektiği ve dolayısıyla hiçbir boşluğa izin verilmediği anlamına gelir.

Genellikle, ABI şifre çözücüler sadece ofset işaretçilerini takip ederek basit bir şekilde
yazılır, ancak bazı şifre çözücüler katı modu zorlayabilir. Solidity ABI şifre çözücü şu
anda katı modu kullanmayı zorunlu kılmaz, ancak şifreleyici her zaman katı modda veri oluşturur.
=======
Strict encoding mode is the mode that leads to exactly the same encoding as defined in the formal specification above.
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 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.
>>>>>>> v0.8.17

Standart Olmayan Paket Modu
=====================================
Expand All @@ -766,6 +821,7 @@ Ayrıca, struct'ların yanı sıra iç içe diziler de desteklenmez.

Daha spesifik olarak:

<<<<<<< HEAD
- Şifreleme sırasında her şey in-place olarak şifrelenir. Bu, ABI şifrelemesi gibi
baş ve kuyruk arasında bir ayrım olmadığı ve bir dizinin uzunluğunun şifrelenmediği
anlamına gelir.
Expand All @@ -777,6 +833,20 @@ Daha spesifik olarak:
uzunluk alanları olmadan şifrelenir.
- Bir dizinin veya struct'ın parçası olmadığı sürece ``string`` veya ``bytes``
şifrelemesinin sonuna doldurma uygulanmaz (bu durumda 32 baytın katlarına kadar doldurulur).
=======
- During the encoding, everything is encoded in-place. This means that there is
no distinction between head and tail, as in the ABI encoding, and the length
of an array is not encoded.
- The direct arguments of ``abi.encodePacked`` are encoded without padding,
as long as they are not arrays (or ``string`` or ``bytes``).
- The encoding of an array is the concatenation of the
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,
unless it is part of an array or struct (then it is padded to a multiple of
32 bytes).
>>>>>>> v0.8.17

Genel olarak, eksik uzunluk değeri nedeniyle dinamik olarak boyutlandırılmış iki
öğe olduğu anda şifreleme belirsizleşir.
Expand All @@ -802,9 +872,15 @@ Fonksiyonları çağırırken paketlenmiş şifreleme kullanılmadığından, bi
İndekslenmiş Event Parametrelerinin Şifrelenmesi
=================================================

<<<<<<< HEAD
Değer türü olmayan indekslenmiş event parametreleri, yani diziler ve struct'lar
doğrudan saklanmaz, bunun yerine bir şifrelemenin keccak256-hash'i saklanır. Bu
şifreleme aşağıdaki gibi tanımlanmaktadır:
=======
Indexed event parameters that are not value types, i.e. arrays and structs are not
stored directly but instead a Keccak-256 hash of an encoding is stored. This encoding
is defined as follows:
>>>>>>> v0.8.17

- bir ``bytes`` ve ``string`` değerinin şifrelenmesi, herhangi bir doldurma veya
uzunluk öneki olmaksızın sadece string içeriğinden ibarettir.
Expand Down
7 changes: 7 additions & 0 deletions docs/assembly.rst
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,17 @@ Dinamik array'in uzunluğu array'in ilk slotunda saklanır ve diğer slotlara ar
Hafıza Güvenliği
================

<<<<<<< HEAD
Inline assembly kullanmadan; derleyici(compiler), iyi tanımlanmış bir durumda kalmak için her zaman belleğe güvenir. Bu özellikle
:ref:`Yul IR üzerinden yeni kod oluşturma hattı Yul IR <ir-breaking-changes>` ile ilgilidir. Bu kod parçası yerel değişkenleri
stack üzerinden belleğe atarak stack-too-deep hatasından kaçınmayı sağlar ve eğer bazı kesin varsayımlara uyuyorsa ekstra
bellek optimizasyonları uygulayabilir.
=======
While we recommend to always respect Solidity's memory model, inline assembly allows you to use memory
in an incompatible way. Therefore, moving stack variables to memory and additional memory optimizations are,
by default, globally disabled in the presence of any inline assembly block that contains a memory operation
or assigns to Solidity variables in memory.
>>>>>>> v0.8.17


Biz her ne kadar Solidity'nin kendi bellek modeline saygı gösterilmesini önersek de
Expand Down
14 changes: 14 additions & 0 deletions docs/bugs.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
[
{
"uid": "SOL-2022-7",
"name": "StorageWriteRemovalBeforeConditionalTermination",
"summary": "Calling functions that conditionally terminate the external EVM call using the assembly statements ``return(...)`` or ``stop()`` may result in incorrect removals of prior storage writes.",
"description": "A call to a Yul function that conditionally terminates the external EVM call could result in prior storage writes being incorrectly removed by the Yul optimizer. This used to happen in cases in which it would have been valid to remove the store, if the Yul function in question never actually terminated the external call, and the control flow always returned back to the caller instead. Conditional termination within the same Yul block instead of within a called function was not affected. In Solidity with optimized via-IR code generation, any storage write before a function conditionally calling ``return(...)`` or ``stop()`` in inline assembly, may have been incorrectly removed, whenever it would have been valid to remove the write without the ``return(...)`` or ``stop()``. In optimized legacy code generation, only inline assembly that did not refer to any Solidity variables and that involved conditionally-terminating user-defined assembly functions could be affected.",
"link": "https://blog.soliditylang.org/2022/09/08/storage-write-removal-before-conditional-termination/",
"introduced": "0.8.13",
"fixed": "0.8.17",
"severity": "medium/high",
"conditions": {
"yulOptimizer": true
}
},
{
"uid": "SOL-2022-6",
"name": "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"summary": "ABI-encoding a tuple with a statically-sized calldata array in the last component would corrupt 32 leading bytes of its first dynamically encoded component.",
"description": "When ABI-encoding a statically-sized calldata array, the compiler always pads the data area to a multiple of 32-bytes and ensures that the padding bytes are zeroed. In some cases, this cleanup used to be performed by always writing exactly 32 bytes, regardless of how many needed to be zeroed. This was done with the assumption that the data that would eventually occupy the area past the end of the array had not yet been written, because the encoder processes tuple components in the order they were given. While this assumption is mostly true, there is an important corner case: dynamically encoded tuple components are stored separately from the statically-sized ones in an area called the *tail* of the encoding and the tail immediately follows the *head*, which is where the statically-sized components are placed. The aforementioned cleanup, if performed for the last component of the head would cross into the tail and overwrite up to 32 bytes of the first component stored there with zeros. The only array type for which the cleanup could actually result in an overwrite were arrays with ``uint256`` or ``bytes32`` as the base element type and in this case the size of the corrupted area was always exactly 32 bytes. The problem affected tuples at any nesting level. This included also structs, which are encoded as tuples in the ABI. Note also that lists of parameters and return values of functions, events and errors are encoded as tuples.",
"link": "https://blog.soliditylang.org/2022/08/08/calldata-tuple-reencoding-head-overflow-bug/",
"introduced": "0.5.8",
"fixed": "0.8.16",
"severity": "medium",
Expand Down
11 changes: 10 additions & 1 deletion docs/bugs_by_version.json
Original file line number Diff line number Diff line change
Expand Up @@ -1737,6 +1737,7 @@
},
"0.8.13": {
"bugs": [
"StorageWriteRemovalBeforeConditionalTermination",
"AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage",
"InlineAssemblyMemorySideEffects",
Expand All @@ -1747,6 +1748,7 @@
},
"0.8.14": {
"bugs": [
"StorageWriteRemovalBeforeConditionalTermination",
"AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage",
"InlineAssemblyMemorySideEffects"
Expand All @@ -1755,14 +1757,21 @@
},
"0.8.15": {
"bugs": [
"StorageWriteRemovalBeforeConditionalTermination",
"AbiReencodingHeadOverflowWithStaticArrayCleanup"
],
"released": "2022-06-15"
},
"0.8.16": {
"bugs": [],
"bugs": [
"StorageWriteRemovalBeforeConditionalTermination"
],
"released": "2022-08-08"
},
"0.8.17": {
"bugs": [],
"released": "2022-09-08"
},
"0.8.2": {
"bugs": [
"AbiReencodingHeadOverflowWithStaticArrayCleanup",
Expand Down
12 changes: 12 additions & 0 deletions docs/contracts/function-modifiers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,20 @@ Modifier'lar eklendikleri fonksiyonların parametrelerine veya return değerleri
Eğer bir parametreyi bir modifier'da kullanmak istiyorsanız, o modifier'ı eklediğiniz yerde
parametreyi de vermelisiniz. Fonksiyon çağırma yapısına benzer bir şekilde kullanılırlar.

<<<<<<< HEAD
Modifier'daki veya fonksiyon'daki return işlemi sadece o yazıldığı modifier'dan veya fonksiyon'dan
çıkmaya yarar. Program akışı ``_`` işaretinin olduğu yerden çalışmaya devam eder.
=======
In function modifiers, it is necessary to specify when you want the function to which the modifier is
applied to be run. The placeholder statement (denoted by a single underscore character ``_``) is used to
denote where the body of the function being modified should be inserted. Note that the
placeholder operator is different from using underscores as leading or trailing characters in variable
names, which is a stylistic choice.

Explicit returns from a modifier or function body only leave the current
modifier or function body. Return variables are assigned and
control flow continues after the ``_`` in the preceding modifier.
>>>>>>> v0.8.17

.. warning::
Daha önceki Solidity versiyonlarında modifier'a sahip fonksiyonlarda ``return`` ifadesi farklı
Expand Down
16 changes: 16 additions & 0 deletions docs/contracts/functions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ parametre olarak almasını isterseniz, aşağıdaki gibi bir yapı kullanabilir
Fonksiyon parametreleri herhangi bir lokal değişken olarak kullanılaiblir ve ayrıca lokal
değişkenlere atanabilirler.

<<<<<<< HEAD
.. note::

Bir :ref:`external fonksiyon<external-function-calls>` çok boyutlu bir
Expand All @@ -80,6 +81,8 @@ değişkenlere atanabilirler.
Bir :ref:`internal fonksiyon<external-function-calls>` o özelliği aktifleştirmeden
de çok boyutlu bir diziyi parametre olarak alabilir.

=======
>>>>>>> v0.8.17
.. index:: return array, return string, array, string, array of strings, dynamic array, variably sized array, return struct, struct

Return Değişkenleri
Expand Down Expand Up @@ -134,11 +137,24 @@ Eğer fonksiyondan çıkmak için erkenden ``return`` kullanmanak istiyorsanız,
bütün return değişkenlerini vermeniz gerekir.

.. note::
<<<<<<< HEAD
Bazı tipleri internal olmayan fonksiyonlardan return edemezsiniz,
örneğin, çok boyutlu dinamik boyutlu diziler ve structlar. Eğer
ABI coder v2'yi ``pragma abicoder v2;`` şeklinde kodunuza eklerseniz
daha fazla tip kullanılabilir olacaktır, ancak ``mapping`` tipi
hâlâ bir akıllı sözleşme içerisinde sınırlıdır ve onları transfer edemezsiniz.
=======
You cannot return some types from non-internal functions.
This includes the types listed below and any composite types that recursively contain them:

- mappings,
- internal function types,
- reference types with location set to ``storage``,
- multi-dimensional arrays (applies only to :ref:`ABI coder v1 <abi_coder>`),
- structs (applies only to :ref:`ABI coder v1 <abi_coder>`).

This restriction does not apply to library functions because of their different :ref:`internal ABI <library-selectors>`.
>>>>>>> v0.8.17

.. _multi-return:

Expand Down
Loading