That would be running in Swift 5 mode. The whole point of Swift 6 mode is that concurrency checking is fully enabled.
There's no hack needed. This is completely under your control. You can pick and choose which features are enabled. Swift 6 mode is (almost) what you get when you turn them all on.
Edit: 6 mode does turn the concurrency warnings into errors, though, so that's a meaningful difference between just flipping on all the flags.
Damn... I wonder what happens when more radical changes will be made? At some point we will all be forced to upgrade to Swift 6, right? Or not use any of the new features otherwise
The goal of the language mode setup has always been that additive changes are not gated behind a language mode, only the source breaking-aspects of a new feature. Occasionally this means that useful aspects of a new feature are unavailable in the prior language mode, but with the upcoming feature flag system it should be possible to selectively enable individual source breaking changes if the impact is acceptable or the feature sufficiently compelling for your use case.
It has also always been a stated goal to avoid language dialects. How can individual feature toggles not directly lead to dialects forming?
Upcoming features are not broadly meant to be enabled/disabled on a piecemeal basis indefinitely: they are carved out as separate flags to enable incremental adoption of the features in the next language mode, but the 'march of progress' is for all the upcoming feature flags associated with a given mode to be enabled in that mode (and not then selectively disabled).
So, to be clear, will it eventually be the case that the Swift compiler will drop the Swift 5.9 language mode, and therefore only accept code that completely passes strict concurrency checks?
That's not what I was trying to get at: the point I was making is that once a given language mode is adopted, upcoming feature flags do not provide a mechanism to then disable the feature in question (which is why they're 'upcoming' feature flags rather than just feature flags).
Ok, but my question still stands. If people don’t expect that strict concurrency checking will eventually be mandatory, they might unnecessarily continue to accumulate technical debt that will just be harder to pay off.
For me, diving in too early and without enough understanding resulted in a lot of tech debt. And I'm seeing the same pattern repeat across many code bases.
The last thing you want to do is rush and build the wrong system! I did that and it was painful.
So... this means that migrating to Swift 6 language mode will be mandatory at some point...