aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMelody Horn <melody@boringcactus.com>2020-10-24 22:28:29 -0600
committerMelody Horn <melody@boringcactus.com>2020-10-24 22:28:29 -0600
commit422505a061f8ec09bf041073c34efe37ba7fe4bb (patch)
tree6e4a09b94fe9d122c28ecd6d7986585135d29a32
parentccfea3af030160a547988736174ca109e4bd7c07 (diff)
downloadspec-422505a061f8ec09bf041073c34efe37ba7fe4bb.tar.gz
spec-422505a061f8ec09bf041073c34efe37ba7fe4bb.zip
simplify C comparison structure
-rw-r--r--errors.md1
-rw-r--r--vs-c.md12
2 files changed, 8 insertions, 5 deletions
diff --git a/errors.md b/errors.md
new file mode 100644
index 0000000..1ea1912
--- /dev/null
+++ b/errors.md
@@ -0,0 +1 @@
+TODO
diff --git a/vs-c.md b/vs-c.md
index 60d7905..bceaab1 100644
--- a/vs-c.md
+++ b/vs-c.md
@@ -6,7 +6,7 @@ Some of the footguns and complexity in C come from misfeatures that can simply n
## Footguns
-### Almost Always The Wrong Thing
+Some constructs in C are almost always the wrong thing.
- `goto`
- Octal literals
@@ -19,7 +19,7 @@ Some of the footguns and complexity in C come from misfeatures that can simply n
- Mixed chains of bitwise or logical operators (e.g. `2 & x && 4 ^ y`)
- The comma operator `,`
-### Explicit Beats Implicit
+Some constructs in C exhibit implicit behavior that should instead be made explicit.
- `typedef`
- Octal escape sequences
@@ -29,12 +29,12 @@ Some of the footguns and complexity in C come from misfeatures that can simply n
## Needless Complexity
-### Let The Compiler Decide
+Some type modifiers in C exist solely for the purpose of enabling optimizations which most compilers can do already.
- `inline`
- `register`
-### Who Even Cares
+Some type modifiers in C only apply in very specific circumstances and so aren't important.
- `restrict`
- `volatile`
@@ -61,7 +61,9 @@ However, sometimes it just sucks, and in those cases Crowbar makes changes.
## Anti-Footguns
- C is generous with memory in ways that are unreliable by default.
- Crowbar adds [memory safety guarantees](safety.md) to make correctness the default behavior.
+ Crowbar adds [memory safety conventions](safety.md) to make correctness the default behavior.
+- C's conventions for error handling are unreliable by default.
+ Crowbar adds [error propagation](errors.md) to make correctness the default behavior.
## Trivial Room For Improvement