And Python is notorious for storing everything as a type/pointer pair internally (which can be quite of an issue for cache usage). Well, from what I've read at least. I have absolutely no idea how other languages handle this (but I imagine other duck typed languages don't have it much better either).
About the bitfields: it just can't work with the language semantics defined in C as it would violate either that the array elements are contiguous or that they have individual adresses.
The thing is that it would be nice if there was a way to do both simultaneously =O) (even if that means that internally they're completely different, or even to the point different symbols are needed to make the difference clear)
Then again it's probably just me being mean, unless you have many thousands (if not millions) of variables you probably don't miss much on using bytes instead of bits, and if you are in such a case, it's probably something high performance enough (speed- and/or memory-wise) to warrant the sightly uglier code.
EDIT: oh, also found this gem in my code
// Set position of candidate list if needed
// Inside its own scope to limit the existence of temporary variables
{
}
Pretty sure I've already done this... but the code ended up elsewhere. Whoops. (that code I quoted was a placeholder so I could get an idea later of where it was supposed to go once I figured out how to use the API function, and I completely forgot about it I guess - oh, as a bonus, it turned out that function was buggy and I had to report it and wait for an update before being able to use it anyway =P)
EDIT 2: found where I ended up doing it, immediately above that /o\ (so yes, literally at the same point in the program) Now I feel even more stupid.