PSA: you can typically declare different types of string so that your type system objects to mixing data of different types even though deep down we know they're both strings.
So yeah, I guess it either needs to happen at runtime, or we just do signaling and user data on separate file descriptors.