Какие ключевые изменения ожидаются в Swift 6?

«Какие ключевые изменения ожидаются в Swift 6?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Swift 6 — это следующая мажорная версия, фокусирующаяся на безопасности данных в параллельном (concurrent) коде и завершении эволюции языка. Основные ожидаемые изменения:

  1. Строгая проверка параллелизма (Strict Concurrency Checking): Компилятор по умолчанию будет проверять код на соответствие модели изолированных акторов, выявляя потенциальные состояния гонки (data races). Это потребует явной аннотации кода с помощью Sendable, @MainActor и др.

  2. Стабилизация акторов (Actors): Доработка и оптимизация изолированных типов (actors) для безопасного разделения изменяемого состояния между потоками.

    // Актор защищает своё состояние от одновременного доступа
    actor Counter {
        private var value = 0
    
        func increment() {
            value += 1
        }
    
        func getValue() -> Int {
            return value
        }
    }
    // Использование требует await
    let counter = Counter()
    await counter.increment()
    let currentValue = await counter.getValue()
  3. Расширенные возможности макросов (Macros): Упрощение создания сложных макросов для генерации шаблонного кода (например, для JSON-парсинга).

  4. Новые фичи языка: Введение ключевого слова borrowing для немодифицирующего заимствования, улучшения для типов-перечислений (enum) и строк.

Практический совет: Уже сейчас можно включить строгую проверку параллелизма в настройках проекта (SWIFT_STRICT_CONCURRENCY = complete) для подготовки кода к миграции на Swift 6.