Known Issues and Workarounds
Known Issues
- #870: All
impl
blocks need to be defined before any of the functions they define can be called. This includes sibling functions in the sameimpl
declaration, i.e., functions in animpl
can't call each other yet.
Missing Features
-
#1182 Arrays in a
storage
block are not yet supported. See the Manual Storage Management section for details on how to usestore
andget
from the standard library to manage storage slots directly. Note, however, thatStorageMap<K, V>
does support arbitrary types forK
andV
without any limitations. -
#428: Arrays are currently immutable which means that changing elements of an array once initialized is not yet possible.
-
#1796: It is not yet allowed to use
StorageMap<K, V>
as a component of a complex type such as a struct or an enum. -
#2647: Currently, it is only possible to define configuration-time constants that have primitive types and that are initialized using literals.
General
-
No compiler optimization passes have been implemented yet, therefore bytecode will be more expensive and larger than it would be in production. Note that eventually the optimizer will support zero-cost abstractions, avoiding the need for developers to go down to inline assembly to produce optimal code.
-
Currently, we need to parse the Sway code before formatting it. Hence, the formatter cannot work on Sway code that does not parse correctly. This requirement may be changed in the future.