diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md index a1c7f9edd51..b6d2a2f97cd 100644 --- a/docs/book/src/SUMMARY.md +++ b/docs/book/src/SUMMARY.md @@ -70,6 +70,7 @@ - [Attributes](./reference/attributes.md) - [Style Guide](./reference/style_guide.md) - [Known Issues and Workarounds](./reference/known_issues_and_workarounds.md) + - [Behavior Considered Undefined](./reference/undefined_behavior.md) - [Differences From Solidity](./reference/solidity_differences.md) - [Differences From Rust](./reference/rust_differences.md) - [Contributing To Sway](./reference/contributing_to_sway.md) diff --git a/docs/book/src/reference/undefined_behavior.md b/docs/book/src/reference/undefined_behavior.md new file mode 100644 index 00000000000..07555223aad --- /dev/null +++ b/docs/book/src/reference/undefined_behavior.md @@ -0,0 +1,15 @@ +# Behavior Considered Undefined + +Sway code that contains any of the following behavior is considered undefined. +The compiler is allowed to treat undefined Sway code however it desires, +including removing it or replacing it with any other Sway code. + +This is not an exhaustive list, it may grow or shrink, there is no formal model +of Sway's semantics so there may be more behavior considered undefined. We +reserve the right to make some of the listed behavior defined in the future. + +* Invalid arithmetic operations (overflows, underflows, division by zero, etc) +* Misuse of compiler intrinsics +* Incorrect use of inline assembly +* Reading and writing `raw_ptr` and `raw_slice` +* Slicing and indexing out of bounds by directly using compiler intrinsics.