While we have to keep the ExpressibleBy*
protocols for source and ABI stability, it might be worth considering augmenting them with attribute-driven forms too. We could also introduce attributes to allow initializers to be used with the existing literal forms, which would mean we could make Int8 unicode-scalar-expressible without ABI impact:
extension Int8 {
@unicodeScalarLiteral // instead of : ExpressibleBy...
init(unicodeScalarLiteral: Int8) {...}
}