@@ -6,51 +6,16 @@ listed in no particular order.
6
6
7
7
## High Priority
8
8
9
- - Reliability
10
-
11
- Cadence should run deterministically, and should not have crashers, stack overflows, or security issues.
12
-
13
9
- Performance
14
10
15
- Cadence's checker is currently not optimized for performance.
16
- We are making performance improvements, mainly by profiling it using real-world programs
17
- and optimizing hot paths, as well as avoiding unnecessary work (e.g. tracking position information).
18
-
19
11
Cadence programs are also currently executed using a tree-walking interpreter,
20
12
which is easy to modify and useful for debugging. However, it is not optimized for performance.
21
13
We are investigating compilation to improve performance.
22
14
Potential targets / inspirations are WebAssembly, MoveVM, and IELE.
23
15
24
- ## Lower Priority
25
-
26
- - [ Testing of Cadence programs] ( https://github.com/onflow/cadence/issues/330 )
27
-
28
- Cadence should provide means to test code.
29
-
30
- - Storage API
31
-
32
- - [ Storage querying API] ( https://github.com/onflow/cadence/issues/208 )
33
-
34
- Cadence should provide an API to query/iterate over account storage.
35
-
36
- - [ Storage API improvements] ( https://github.com/onflow/cadence/issues/376 )
16
+ - Standard Library
37
17
38
- Cadence should provide APIs to overwrite and remove stored values.
39
-
40
- - [ Scripts should have access to authorized accounts] ( https://github.com/onflow/cadence/issues/539 )
41
-
42
-
43
- - Extensibility
44
-
45
- Cadence should provide means to extend existing types with additional functionality
46
- even when those types did not explicitly provide mechanisms to do so.
47
- This would be very useful and would increase future-proofing code.
48
-
49
- However, it might have a negative impact on explicitness/discoverability,
50
- i.e it might be hard for a user to understand where a definition originates from
51
- if it wasn't defined in the type's original set of functions.
52
- It might also have system and security implications.
53
- A solution needs to take these issues into account.
18
+ ## Lower Priority
54
19
55
20
- Host interface
56
21
@@ -70,19 +35,10 @@ listed in no particular order.
70
35
71
36
Cadence should offer a tool that generates human-readable documentation for programs.
72
37
73
- - Improving type inference
74
-
75
- - [ Improve the inferred type of conditional statements and expressions] ( http://github.com/onflow/cadence/issues/61 ) ,
76
- binary expressions and literal expressions (e.g. arrays and dictionaries).
77
-
78
38
- Type aliases
79
39
80
40
Cadence should provide a way to define type aliases.
81
41
82
- - ` Word128 ` and ` Word256 ` types
83
-
84
- Cadence should provide ` Word128 ` and ` Word256 ` types, just like it provides ` UInt128 ` and ` UInt256 `
85
-
86
42
- ABI generation and code generation
87
43
88
44
Cadence should offer a tool to generate an ABI file, a description
@@ -96,12 +52,6 @@ listed in no particular order.
96
52
From an ABI source code could be generated that would allow client libraries
97
53
to call Cadence programs in a type-safe way.
98
54
99
- - Code size reduction
100
-
101
- Cadence programs are currently stored in source code form on-chain.
102
-
103
- Cadence should offer a more efficient format that is optimized for size and read time.
104
-
105
55
- Allow import statements to specify the hash of the imported contract
106
56
107
57
Cadence programs can import other programs.
@@ -152,20 +102,6 @@ listed in no particular order.
152
102
153
103
Cadence should provide an XOR operator (` ^ ` ): logical for booleans and bitwise for integers.
154
104
155
- - Debugger
156
-
157
- Cadence should offer a debugger, which would assist developers with debugging issues.
158
-
159
- This could be done as a command line tool, potentially integrated into the command line runner
160
- and/or REPL.
161
-
162
- Another opportunity could be implementing the debugger as a server process
163
- that implements the
164
- [ Debug Adapter Protocol] ( https://microsoft.github.io/debug-adapter-protocol/ ) ,
165
- which would allow multiple editors to debug Cadence programs,
166
- just like the language server implements the Language Server Protocol
167
- to allow different editors to provide editing features for Cadence code.
168
-
169
105
- Loose mode / Gradual typing
170
106
171
107
Cadence should have a mode that does not require type annotations and which performs
@@ -223,12 +159,6 @@ listed in no particular order.
223
159
224
160
Optimize the performance by reducing the number of actual copies through copy-on-write.
225
161
226
- - Interface requirements
227
-
228
- Cadence should allow interfaces to require conforming types to also conform to other interfaces,
229
- e.g. the interface declaration ` interface I3: I1, I2 {} ` requires conforming types
230
- to also conform to interfaces ` I1 ` and ` I2 ` .
231
-
232
162
- Built-in types to work with timestamps and durations
233
163
234
164
Cadence should offer two new built in types: ` Timestamp ` and ` Duration ` ,
@@ -257,13 +187,6 @@ listed in no particular order.
257
187
might be useful in the blocktime field,
258
188
given that the block rate might be >1 block/sec at some point.
259
189
260
- - Exposing entropy, safe random functionality
261
-
262
- Cadence should provide a way to get safe random numbers.
263
-
264
- This could potentially be based on a callback mechanism,
265
- which depends on contexts and a service chunk in the block.
266
-
267
190
- Re-entrancy
268
191
269
192
Cadence should provide means to prevent re-entrancy attacks.
@@ -296,19 +219,7 @@ listed in no particular order.
296
219
297
220
- [ Support more code-suggestions/auto-completions] ( https://github.com/onflow/cadence/issues/531 )
298
221
299
- - [ Make the Crypto contract compatible with Ethereum] ( https://github.com/onflow/cadence/issues/537 )
300
-
301
- Cadence should offer a mechanism to verify an Ethereum signature, ideally a personal signed message.
302
-
303
- For this to be possible, the Crypto contract needs support for the Keccak hashing algorithm,
304
- and the signature verification method must allow providing a custom tag,
305
- e.g. the Ethereum personal signed message prefix.
306
-
307
222
- Extend paths
308
223
309
224
Cadence should [ allow values like types, numbers, and addresses to be included in paths] ( https://github.com/onflow/cadence/issues/538 ) .
310
225
Currently paths only consist of a domain and an identifier.
311
-
312
- - Extend run-time types
313
-
314
- Cadence should [ allow run-time types to be tested for subtyping relationships] ( https://github.com/onflow/cadence/issues/473 )
0 commit comments