Values with bit patterns that the compiler (and optimizer) can universally assume will never ever exist. For example, a non-optional RawPointer whose bit pattern is all zeroes, or a three-valued enum whose discriminator is equal to 4. These are values that the compiler assumes will never be stored in memory that is bound to a particular type. It doesn’t include values that the compiler is fine with but the standard library might assert on. (@_semantics blurs that line.)
It’s clear to me now that this pitch is working toward a larger concept of safety, but I did not understand that from the initial pitch or the naming choices. It sounds like FullyInhabited is trying to name the set of types which, for all possible bit patterns, cannot be combined with any non-@unsafe stdlib API to produce a memory safety issue. Assuming that’s accurate, it’s quite narrower than I believe most would understand it to mean.
Is it at all likely that a third party will ever be able to write a type that satisfies the definition of FullyInhabited being used in this pitch? Would that hint at FullyInhabited being the currency type of a larger ecosystem of “fully usable under strict memory safety” types? If so, should the name so readily lend itself to a sensible interpretation in a vacuum? And is a type as bedrock as Int really so universally “safe” as to be labeled as such by conformance to FullyInhabited?