Hello Swift Community,
The review of SE-0335: Introduce existential
any has completed. We had great discussions throughout the pitch and review phases of this proposal. The Core Team has accepted this proposal with small modifications. Several issues came up during the discussion that the Core Team would like to comment on:
- The proposal introduces the
any Psyntax in Swift 5.x and requires it in Swift 6, but does not provide a specific transition path for existing Swift 5.x code. The Core Team feels that this (and other) proposals that deprecate or remove existing syntax in favor of a new syntax need to stage such changes over several major releases (e.g., 5.5, 5.6, not counting point releases like 5.5.1). Specific timelines will be discussed in a separate forum thread, but the goal is that that one can write code that compiles without warnings for the current Swift release and at least one major release prior (possibly more, pending the above discussion), after which warnings can be introduced to guide users to the new syntax in existing language modes. Finally, the old syntax can be removed or repurposed only in a new major language version. The proposal will be amended to capture this transition plan.
- The Core Team feels that the
any Psyntax better fits the direction of the language than alternative proposed syntaxes (e.g.,
Any<P>), particularly due to its dual nature and expected co-evolution with the opaque type syntax
- The Core Team feels that the proposal strikes the right balance by allowing
AnyObjectto be interpreted as existential and also to be used as a generic construct, which provides greater source compatibility than the alternatives discussed (e.g.,
Anybecoming a typealias for
AnyObjectbecoming a typealias for
any Object). However, the proposal will be amended to remove the warning about
Thank you to everyone who participated in the review and pitches!