<div dir="ltr">I haven&#39;t yet prepared a formal proposal, but the idea should be understood by pretty much everyone. This topic has been discussed, but deferred to &quot;post-Swift3&quot;. I think the time for it has come.<div><br></div><div>Basically, the proposal is to make protocols non-types. To use protocol as an existential type, it must be wrapped in Any:</div><div><br></div><div>protocol ExampleProtocol {</div><div>    func foo() -&gt; Int</div><div>    func bar() -&gt; String</div><div>}</div><div><br></div><div>func f&lt;T: ExampleProtocol&gt;()    // OK</div><div><br></div><div>func f(x: ExampleProtocol)    // error: ExampleProtocol is not a type</div><div>func f(x: Any&lt;ExampleProtocol&gt;)    // OK</div><div><br></div><div>This will syntactically separate existential types from protocols themselves and generic constraints.</div><div>The proposal does not allow for much variativity, and it looks like the proposal can be easily created and submitted.</div></div>