@concurrent: как выйти с актора вызывающего 🚨
🧵 @concurrent помечает async-функцию как выполняющуюся на глобальном executor'е — независимо от того, кто её вызвал. Правила короткие. Применяется только к async-функциям: для синхронных это ошибка, и авторы честно называют ограничение искусственным. Уже подразумевает nonisolated — писать оба можно, но это шум. И не комбинируется с другой изоляцией: @MainActor @concurrent → ошибка «multiple actor-isolation attributes».
⚠️ Главное, чего не пишут в статьях: в стоковом Swift 6.2 @concurrent не меняет ровным счётом ничего в рантайме. Он и есть текущий дефолт для nonisolated async. Атрибут начинает работать, только когда включён NonisolatedNonsendingByDefault — до тех пор это чистое future-proofing.
✅ Когда осмысленно: функция чистая, состояние актора не трогает, всё нужное приходит параметрами.
⛔️ Когда нет: она читает или пишет изолированное состояние. Тогда вы просто выключили себе защиту компилятора.