I don't want to sound impatient, but can the core team clarify if we can retrofit the revised implementation after this last review into the Swift 5 branch, or is it too much of a hassle?
I think there's a good shot that this will make Swift 5 if it's accepted, but I don't want to promise that.
Also since this proposal is coming hands in hands with the very first self-conforming protocol (
Error) can you please officially clarify the ultimate long term goal we want to reach here?!
It's not the first self-conforming protocol;
@objc protocols have long been able to self-conform. But yes, I think we'd like to eventually extend self-conformance in some way to a broader set of protocols, and similarly we'd like to allow protocol compositions to conform to their implied protocols. I'm not going to promise any particular timeline for adding that support, though.
Also, depending on the exact rules, self-conformance for arbitrary protocols may be evolution-limiting for that protocol: it would (probably?) become illegal to add requirements to a protocol that would prevent self-conformance (like an initializer, a static method, or a contravariant use of a
Self-dependent type) and thus invalidate extant uses of the self-conformance. That's a limitation which we're already accepting for
@objc protocols, but I don't know if we'd want to accept it by default for an arbitrary protocol, so self-conformance might require explicit opt-in.