```
To that end add enum_uint8_decl and enum_uint8.
By default enums take 4 bytes, but vast majority of them have values
which would fit in a byte.
One can try to workaround the problem by using bitfields, like so:
enum some_small_enum:8 foo;:8;
but that's ugly and runs into trouble when using atomic_load (you can't
take an address of a bitfield, even if it is sized to a multiply of a
byte).
Turns out bBoth gcc 13 and clang support packed attribute to solve thespecifying the size, and for older
problem, so use itvariants one call fallback to the "packed" attribute.
```
Code suffering from the problem in vfs included as a demo, not part of the review.