~Sendable: сказать «не Sendable» осознанно 👾
🔥 SE-0518 (Swift 6.4) добавляет ~Sendable: подавляет выведенный Sendable и помечает тип как намеренно не отправляемый. Не «так вышло», а решение, зафиксированное в коде.
⚠️ Писать можно только на объявлении. extension Test: ~Sendable {} — ошибка. На протоколах (protocol P: ~Sendable) и на параметрах дженериков (<T: ~Sendable>) тоже нельзя.
💡 А вот чем это реально лучше старого трюка с @available(*, unavailable) extension T: Sendable: ~Sendable не наследуется подклассами. То есть sendable-подкласс не-sendable базового класса остаётся выразимым, чего трюк с недоступным конформансом не позволял.