One thought I've had about __slots__ would be it'd be nice to take a dictionary in the form of:
class C:
__slots__ = {'a': ???, 'b': ???}
You could actually provide this dictionary today, but the values would be ignored. The values could start to do interesting things. One flavor of that would be that they could indicate the underlying storage used for the slots (maybe with 'i' for int32, 'b' for byte, 'l' for long, or whatever color encoding sounds good). This is just mapping into the available storage types that are already available in structmember.c. That's just extending the existing use case of slots as being a more memory efficient storage representation, and might help people avoid dropping into Cython just to get compact instance members.