Small note: please don't use the term "retroactive conformances" for "conformances added in a compatible ABI version". For better or worse, we're already using it for "conformances added in a separate module from either the type or the protocol", and the issues around the two are not the same. Maybe "version-dependent conformances" or "backwards-deployable conformances" (I'm not sure which meaning's being used here).
I am weakly in favor of the proposal except for the deprecation part, because I don't want to assume we'll have a -swift-version 5.1
. I also don't see why init(ascii:)
makes sense to deprecate, since it can be useful for run-time values too. Finally,
Some have proposed allowing integer array types to be expressible by multi-character ASCII strings such as
'abcd'
. We consider this to be out of scope of this proposal, as well as unsupported by precedent in C and related languages.
I agree that this is out of scope, but there is some precedent for it: multicharacter scalar literals as an implementation-defined part of C and C++. I've definitely had use for "sequence of bytes that have a nice ASCII representation" in parsing code and I'd support such an addition in the future.