Добавить объявление

Approachable Concurrency в Swift: новая эра многозадачности

В 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 стала более понятной и удобной для всех разработчиков.
08.09.2025 13 442