Equality of functions

I'm considering this pretty seriously and aiming at making an evolution proposal.

But to truly solve my use case, I need all of these:

  • Allow PATs as existential types - Lifting the "Self or associated type" constraint on existentials - #84 by dabrahams
  • [Nice to have] Provide syntax for opening existential types - you can already use Self in protocol extensions, which can be used to implement opening.
  • Provide syntax for disambiguating protocols as constraints vs protocols as existential types in extensions, to be able to conform any Hashable: Hashable
  • [?] Does that conformance above imply any (Hashable & Foo): Hashable or extra work needs to be done?
  • Clarifying existential types to be able to use PATs as generic protocols.
  • Enable local structs declared inside generic functions - Could some types be allowed to be nested in generic functions?
  • Allow block syntax as a syntax sugar for anonymous structs.

First five are already part of roadmap sketched in Improving the UI of generics. Any advices on how can I contribute to that?

For the last two I'm gonna make evolution proposals. Assuming they are approved, is it expected from the author of the evolution proposal to implement it as well, or implementation is handled by the Core team?

Any rough estimate on how much would it take to implement all this up to releasing as part of stable Xcode release?