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):
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.
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.