[swift-evolution] Bridging the gap between protocols and protocol extensions

Brent Royal-Gordon brent at architechies.com
Sat Jan 9 16:05:38 CST 2016

From my previous thread, "[Draft Proposal] Require `final` on protocol extension members", I'm getting the sense that many people want straight-up dynamic dispatch from protocol extension methods. That is, protocol extension methods should be treated as if they were included as requirements of the protocol; the implementations provided should be treated as overridable defaults.

A few questions about that:

1. Do people really want this?

2. People familiar with the implementation of protocol witnesses: is this feasible?

3. Do people want the current non-overridable, statically-dispatched protocol extension members available as an option?

4. Should this be proposed alongside other changes that would reduce the difference between a protocol and a protocol extension, like allowing default implementations in the protocol declaration?

5. Especially with #3 or #4, this sounds like a very large change which could be broken up into several smaller ones. Core team members: what is the best way to propose this? One big proposal with all the details, several small proposals, or a big vague proposal for the overall direction, followed by several smaller proposals with a detailed design for each part?

Brent Royal-Gordon

More information about the swift-evolution mailing list