Approachable concurrency

Hi,

In Xcode, when I create a new project and set Approachable Concurrency to Yes, I notice that the following are set to No (in spite of Approachable Concurrency set to Yes):

  • Isolated Globale variables
  • Region based isolation

Environment

Xcode: 26.5 (17F42)

Questions

  1. Is this behavior expected?
  2. Shouldn't all the upcoming features be set to Yes automatically when Approachable ConcurrencytoYes(Refer attached image, the highlighted features are set toNo`

Reason for asking:

  • I was under the impression Approachable Concurrency was a way to experiment for the newer / upcoming concurrency features.
  • So I thought it would enable all the features under Upcoming features.

My bad, setting Swift language version to Swift 6 set all of the upcoming features to Yes.

Rules should be rules. Rule modifiers (trying to make rules "approachable") just add confusion.

The relationship between compiler settings, modes, and these Xcode build settings is confusing. Xcode's build setting support for this stuff is getting better, but is imperfect. If you find this troubling, you can enable the settings manually in the Xcode UI.

Enabling complete checking when not in 6 mode implicitly also enables IsolatedDefaultValues, GlobalConcurrency, and RegionBasedIsolation. This is documented.

"Approachable Concurrency" is kind of a like a quasi-language mode. All it does is enable a group of settings as a convenience. Luckily, Xcode's system does reflect this correctly in my experience. In 6 mode, its sole function is to turn on NonisolatedNonsendingByDefault and InferIsolatedConformances. Both of these are regular upcoming features. This means that eventually there will be a new, formal language mode with these unconditionally enabled.

But I do want to be clear that NonisolatedNonsendingByDefault and InferIsolatedConformances are normal upcoming features and not special modifiers in any way. This is distinct, perhaps, from changing default isolation, which is a language dialect and I think is much more akin to a modifier. However, this is not something that the "Approachable Concurrency" setting affects.

2 Likes