В
Xcode 26 появился революционный подход к работе с многозадачностью:
Approachable Concurrency. Это не просто одно изменение, а целый набор фич, которые делают конкурентный код проще и предсказуемее.
Что входит в Approachable Concurrency:
- nonisolated(nonsending) By Default: неизолированные async-функции теперь выполняются на исполнителе вызывающего актора.
- Infer Sendable for Methods: автоматическое определение Sendable для методов и key-path.
- Infer Isolated Conformances: автоматическая изоляция протокольных конформянсов под актор типа.
- Глобальная изоляция типов: умное определение безопасного использования неизолированных свойств.
- Отключение неявной изоляции: больше не нужно бороться с неожиданной изоляцией через property wrappers.
Как включить:
В Xcode:
- Идем в Build Settings, затем ищем «Approachable Concurrency».
- Устанавливаем значение: Yes.
В
Swift Package:
// swift-tools-version: 6.2
.target(
name: "MyFeature",
swiftSettings: [
.defaultIsolation(MainActor.self),
.enableUpcomingFeature("NonisolatedNonsendingByDefault"),
.enableUpcomingFeature("InferIsolatedConformances")
]
)
Почему это важно:
- Меньше неожиданностей: компилятор стал умнее определять реальные data races.
- Более понятные ошибки: никаких загадочных сообщений о проблемах изоляции.
- Естественный прогресс: начинаете с main actor, переходите на фоновые потоки только когда нужно.
Особенности работы:
- В Swift 6 некоторые фичи включены по умолчанию.
- Для Swift 5 нужно явное включение через настройки.
- Пока есть некоторые баги (например, с CodingKey), но они исправляются.
Вывод:
Approachable Concurrency - это большой шаг к тому, чтобы многозадачность в
Swift стала более понятной и удобной для всех разработчиков.