# Which (breaking) changes would you be willing to accept in a major language release? \[+ Feature wishes\]

**URL:** <https://forums.swift.org/t/which-breaking-changes-would-you-be-willing-to-accept-in-a-major-language-release-feature-wishes/59429>\
**Category:** Discussion\
**Created:** [August 3, 2022, 8:39am UTC](https://forums.swift.org/t/which-breaking-changes-would-you-be-willing-to-accept-in-a-major-language-release-feature-wishes/59429 "2022-08-03T08:39:23Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![DevAndArtist](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/devandartist/32/287_2.png) [@DevAndArtist](https://forums.swift.org/u/DevAndArtist)\
**Post date:** [August 3, 2022, 8:39am UTC](https://forums.swift.org/t/which-breaking-changes-would-you-be-willing-to-accept-in-a-major-language-release-feature-wishes/59429/2 "2022-08-03T08:39:39Z")

</div>

So here are my personal parts of the language I'd happily accept breaking changes in:

- [`where` clauses (in extensions) in regards to type inference.](https://forums.swift.org/t/what-kind-of-magic-behavior-is-this/22014) There are type inference rules in the language which makes the `where` clause partly unintuitive to use as it yields somewhat unexpected results.

- [The release / removal of of the `.Type` and `.Protocol`.](https://forums.swift.org/t/improving-the-ui-of-generics/22814/92) A nested `Kind` type does not always fit. A general rebranding of metatypes (possibly with a `meta` keyword, like `any` and `some`) would be very welcome.

- [Label rules alignment](https://forums.swift.org/t/pitch-align-label-behavior-for-subscripts/4061) across the entire language including subscripts and operator functions.

- [A shift from `public protocol` to `open protocol`](https://forums.swift.org/t/pitch-consistent-public-access-modifiers/5129), where `open protocol` would mean that the user of a framework can conform their types to that protocol, while he/she can only use or view a `public protocol`, but not conform any types to it. This is also known as "closed protocol".

- [A rebrand of `private` into `private(file)` and `fileprivate` into `internal(file)` where `(file)` would be a limiter just like `(set)`, while introducing the new `private` which would be type-private by default.](https://forums.swift.org/t/introduce-type-private-access-level/58438/55)

- (possibly) A breaking [change to key-paths](https://forums.swift.org/t/throwable-accessors/20509/49) where the types would also be able to store data for effects such as error types or possibly even the async-ness (if that's even a term).

---

_[View the full topic](https://forums.swift.org/t/which-breaking-changes-would-you-be-willing-to-accept-in-a-major-language-release-feature-wishes/59429)._
