Retroactive Conformances vs. Swift-in-the-OS

For the module vs. module conflicts, in no particular order or real consideration:

  • Allow internal-only retro conformances, so frameworks don't have to publish every one they make.
  • Allow consumers to disambiguate all types of symbols. e.g. (SomeStruct.A.description, SomeStruct.B.description, A.someFunc(), B.someFunc())
  • Allow consumers to provide their own conformance for conflicted retros. This could merely be choosing a winner or the ability to provide their own implementation. Perhaps conflicts would be considered non-conforming?

For the system, the resiliency rule may be fine.

(As an aside, I've never understood why Apple doesn't take advantage of the ability to ship multiple versions of a framework in a single bundle, instead of the hacks that are implemented to let one executable try to dynamically match behavior across all versions.)