@@ -56,7 +56,7 @@ you have to add the pragma to all your files if you want to enable it
56
56
in your whole project. If you :ref: `import<import> ` another file, the pragma
57
57
from that file does *not * automatically apply to the importing file.
58
58
59
- .. index :: ! pragma, version
59
+ .. index :: ! pragma; version
60
60
61
61
.. _version_pragma :
62
62
@@ -91,19 +91,21 @@ these follow the same syntax used by `npm <https://docs.npmjs.com/cli/v6/using-n
91
91
required by the pragma. If it does not match, the compiler issues
92
92
an error.
93
93
94
+ .. index :: ! ABI coder, ! pragma; abicoder, pragma; ABIEncoderV2
95
+ .. _abi_coder :
96
+
94
97
ABI Coder Pragma
95
98
----------------
96
99
97
100
By using ``pragma abicoder v1 `` or ``pragma abicoder v2 `` you can
98
101
select between the two implementations of the ABI encoder and decoder.
99
102
100
103
The new ABI coder (v2) is able to encode and decode arbitrarily nested
101
- arrays and structs. It might produce less optimal code and has not
102
- received as much testing as the old encoder, but is considered
103
- non-experimental as of Solidity 0.6.0. You still have to explicitly
104
- activate it using ``pragma abicoder v2; ``. Since it will be
105
- activated by default starting from Solidity 0.8.0, there is the option to select
106
- the old coder using ``pragma abicoder v1; ``.
104
+ arrays and structs. Apart from supporting more types, it involves more extensive
105
+ validation and safety checks, which may result in higher gas costs, but also heightened
106
+ security. It is considered
107
+ non-experimental as of Solidity 0.6.0 and it is enabled by default starting
108
+ with Solidity 0.8.0. There old coder can still be selected using ``pragma abicoder v1; ``.
107
109
108
110
The set of types supported by the new encoder is a strict superset of
109
111
the ones supported by the old one. Contracts that use it can interact with ones
@@ -126,8 +128,7 @@ enough to make the error go away.
126
128
by using ``pragma experimental ABIEncoderV2 ``, but it was not possible
127
129
to explicitly select coder v1 because it was the default.
128
130
129
- .. index :: ! pragma, experimental
130
-
131
+ .. index :: ! pragma; experimental
131
132
.. _experimental_pragma :
132
133
133
134
Experimental Pragma
@@ -137,6 +138,7 @@ The second pragma is the experimental pragma. It can be used to enable
137
138
features of the compiler or language that are not yet enabled by default.
138
139
The following experimental pragmas are currently supported:
139
140
141
+ .. index :: ! pragma; ABIEncoderV2
140
142
141
143
ABIEncoderV2
142
144
~~~~~~~~~~~~
@@ -145,6 +147,7 @@ Because the ABI coder v2 is not considered experimental anymore,
145
147
it can be selected via ``pragma abicoder v2 `` (please see above)
146
148
since Solidity 0.7.4.
147
149
150
+ .. index :: ! pragma; SMTChecker
148
151
.. _smt_checker :
149
152
150
153
SMTChecker
0 commit comments