Not really, but why can’t that be done with a custom derive? If it can, then it can just be done on a crate, without having to write any kind of RFC for it. The proposal ensures transitivity, so this derive doesn’t really need any kind of compiler support, it is purely syntactic.
Also, it looks like there hasn’t been any discussion about converting references.
One might be able to solve this with some blanket impls for references and raw pointers:
impl<T, U> Compatible<&T> for &U where U: Compatible<T> {}
impl<T, U> Compatible<&T> for &mut U where U: Compatible<T> {}
impl<T, U> Compatible<&mut T> for &mut U where U: Compatible<T> {}
// ... and for *T ...
there are still issues with verifying alignment
Which issues? For practical purposes transmute is just a memcpy, so if the source type is properly aligned and the destination type is properly aligned, which they must be, then there aren’t any alignment issues AFAICT. The same applies to “endianness”: since transmute is just a memcpy, the bytes will just be copied from the source to the destination. If you don’t take endianness into account when reinterpreting the bytes on the destination, you will get different results on big endian and little endian systems, but that is just how memcpy works, so that’s “working as intended”.