# \[Pitch #4\] Actors

**URL:** <https://forums.swift.org/t/pitch-4-actors/45215>\
**Category:** Pitches\
**Created:** [March 2, 2021, 7:55am UTC](https://forums.swift.org/t/pitch-4-actors/45215 "2021-03-02T07:55:32Z")\
**Posts on this page:** 1\
**Showing post:** 36

<div class="post-metadata">

**Author:** ![Douglas\_Gregor](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/douglas_gregor/32/1362_2.png) [@Douglas\_Gregor](https://forums.swift.org/u/Douglas_Gregor)\
**Post date:** [March 8, 2021, 7:23am UTC](https://forums.swift.org/t/pitch-4-actors/45215/36 "2021-03-08T07:23:19Z")

</div>

Hey all, I've made a bunch of changes on the road to a "pitch #5", based on feedback here. You can preview the changes at [https://github.com/DougGregor/swift-evolution/pull/62](https://github.com/DougGregor/swift-evolution/pull/62), and here's the summary:

- Changes in the fifth pitch:
  - Drop the prohibition on having multiple `isolated` parameters. We don't need to ban it.
  - Replace `Sendable` with `Sendable` to better track SE-0302.
  - Add the `Actor` protocol back, as an empty protocol whose details will be filled in with a subsequent proposal for [custom executors][customexecs].
  - Replace `ConcurrentValue` with `Sendable` and `@concurrent` with `@sendable` to track the evolution of [SE-0302][se302].
  - Clarify the presentation of actor isolation checking.
  - Add more examples for non-isolated declarations.
  - Added a section on isolated or "sync" actor types.

> [@Zhu\_Shengqi](#):
>
> > [@Douglas\_Gregor](#):
> >
> > So, I think we fundamentally disagree about what kinds of protocols are important for actors to conform to. For me, most interactions with actors are naturally asynchronous---they are coordinators and controllers and owners of data models that need to be consistent.
> 
> Can we make a simpler and more succinct proposal based on what has been commonly agreed on? This pitch is already in round 4, which may be an indicator that there is too much things to discuss and settle in a single proposal. By putting things that causing arguments and disagreement into a separate pitch we can discuss in a more clear and narrow scope.

From my perspective, the proposal is not complete without `nonisolated`, and my read of the situation is that there is [no actual disagreement about whether `nonisolated` is a good idea](https://forums.swift.org/t/pitch-4-actors/45215/24), or it's semantics, or even it's spelling (now). Yes, the proposal would be somewhat smaller without it, but at the cost of having yet another concurrency proposal that scatters the knowledge further. It fits well alongside `isolated` parameters to have the modifier that disables the implicit `isolated` on `self`. If we rewound the clock to the pre-Swift 1.0 days, could we imagine introducing `inout` without also introducing `mutating`?

Global actors was large, so we split it out of the actors proposal. `async let` was both controversial and confusing the discussion of structured concurrency, so we split it out of that proposal. Both were separable. For me, `nonisolated` doesn't meet that bar.

The actual disagreement, as I understand it, is whether another feature, called isolated conformances in the future directions of this proposal, is also a critical part of the model. We have neither a set of agreed-upon examples nor a complete design to evaluate that feature. My own experience is that I have not needed this feature. We should keep exploring it further, but we shouldn't hold up progress on actors themselves waiting for it.

Doug

---

_[View the full topic](https://forums.swift.org/t/pitch-4-actors/45215)._
