Guía completa de Swift 6.2: Approachable Concurrency explicado
Guía interactiva con las 5 feature flags de Approachable Concurrency en Xcode 26, configuración recomendada, y guía de migración paso a paso.
Approachable Concurrency es un build setting real en Xcode 26 que activa un conjunto de compiler flags para hacer la concurrencia más accesible. Nace del vision document del Swift team publicado en febrero 2025.
Las 5 feature flags
Lo que se activa al poner Approachable Concurrency = Yes
InferIsolatedConformances y NonisolatedNonsendingByDefault. Las otras 3 ya están habilitadas por defecto.Cómo activarlo en un Swift Package
.enableUpcomingFeature("ApproachableConcurrency") no existe como feature flag del compilador. SWIFT_APPROACHABLE_CONCURRENCY es un build setting exclusivo de Xcode que activa internamente los flags individuales. En SPM, .enableUpcomingFeature() recibe un String y no valida si el flag existe — lo ignora silenciosamente sin error de compilación. Debes activar los flags individuales.Con swiftLanguageModes: [.v6]
Si tu Package ya usa Swift 6 language mode
En Swift 6 language mode, 3 de los 5 flags ya están activos por defecto (DisableOutwardActorInference, GlobalActorIsolatedTypesUsability, InferSendableFromCaptures). Solo necesitas agregar los 2 nuevos de Swift 6.2:
Sin swiftLanguageModes: [.v6] (todos los flags)
Si tu Package aún usa Swift 5 language mode
Si aún no has migrado a Swift 6 language mode, necesitas los 5 flags explícitamente:
Xcode vs SPM: la diferencia
Cómo Xcode resuelve estos valores internamente
| Macro de Xcode | Significado |
|---|---|
$(SWIFT_UPCOMING_FEATURE_6_0) | Se activa con Swift 6 language mode |
$(SWIFT_APPROACHABLE_CONCURRENCY) | Se activa con el toggle Approachable Concurrency = Yes |
$(SETTING_DefaultValue_...) | Se activa si cualquiera de los dos está activo (OR lógico) |
.enableUpcomingFeature(). Si ya usas swiftLanguageModes: [.v6], solo necesitas los 2 nuevos.Relacionados
-
- swift
- swift-cero-experto
- swift-fundamentals
Swift de Cero a Experto #15: Tipos opacos y tipos de protocolo encajonados
La tercera puerta para salir de 'no quiero nombrar el tipo concreto'. some oculta un tipo concreto conservando su identidad — sin caja, en tiempo de compilación. any borra el tipo en una caja de runtime. Así devuelves por fin un protocolo que tiene un associatedtype.
-
- swift
- swift-cero-experto
- swift-fundamentals
Swift de Cero a Experto #14: Genéricos
Un solo swapTwoValues, un solo Stack<Element>, un solo findIndex — escritos una vez, funcionando para todo tipo. Los genéricos dejan que el llamador elija el tipo concreto, que el compilador especialice el código, y que la caja del #13 desaparezca. Array, Dictionary, Optional y Result fueron genéricos todo el tiempo.
-
- swift
- swift-cero-experto
- swift-fundamentals
Swift de Cero a Experto #13: Protocolos
Un protocolo es un contrato, no una clase. Dice qué debe hacer un tipo sin decir qué es — y esa sola idea impulsa la delegación, el Equatable sintetizado, los existenciales y las extensiones de protocolo que hacen idiomático a Swift.