diff options
-rw-r--r-- | safety.md | 4 | ||||
-rw-r--r-- | syntax.md | 1 | ||||
-rw-r--r-- | vs-c.md | 2 |
3 files changed, 6 insertions, 1 deletions
@@ -1,5 +1,9 @@ Each item in Wikipedia's [list of types of memory errors](https://en.wikipedia.org/wiki/Memory_safety#Types_of_memory_errors) and what Crowbar does to prevent them.
+In general, Crowbar does its best to ensure that code will not exhibit any of the following memory errors.
+However, sometimes the compiler knows less than the programmer, and so code that looks dangerous is actually fine.
+Crowbar allows programmers to suspend the memory safety checks with the `fragile` keyword.
+
# Access errors
## Buffer overflow
@@ -36,6 +36,7 @@ A *keyword* is one of the following literal words: - `extern`
- `float`
- `for`
+- `fragile`
- `function`
- `if`
- `include`
@@ -45,7 +45,7 @@ Some type modifiers in C only apply in very specific circumstances and so aren't Some C features are footguns by default, so Crowbar ensures that they are only used correctly.
- Unions are not robust by default.
- Crowbar only supports unions when they are [tagged unions](tagged-unions.md).
+ Crowbar only supports unions when they are [tagged unions](tagged-unions.md) (or declared and used with the `fragile` keyword).
C's syntax isn't perfect, but it's usually pretty good.
However, sometimes it just sucks, and in those cases Crowbar makes changes.
|