Conversation

Automatic initialization with a pattern is not necessarily enough. An assignment like `struct foo bar = baz` will not necessarily fully initialize `bar` and may leave padding bytes. Later on, copying the struct across a trust boundary will likely copy padding bytes, leaking data.
1
3
And sure, in theory, every copy of a struct across trust boundaries could do explicit serialization. It seriously increases the code complexity since it can't be automated away in C, leading to more flaws. It also likely hurts performance and it's simply not practical/realistic.