Actors en Swift: Guía completa para concurrencia segura
1. ¿Qué son y por qué usarlos?
Los Actors son un concepto fundamental del lenguaje Swift, introducidos en Swift 5.5, que resuelven uno de los problemas más complejos de la programación: el trabajo seguro con estado mutable compartido en entornos multihilo. Antes de los Actors, los desarrolladores tenían que gestionar manualmente bloqueos, semáforos y colas de despacho (DispatchQueue), lo que provocaba errores difíciles de detectar, como condiciones de carrera (data races) y bloqueos mutuos (deadlocks). Los Actors proporcionan un mecanismo de aislamiento de estado integrado en el lenguaje, garantizando que el acceso a los datos dentro de un actor siempre ocurra de forma secuencial, incluso si se accede desde múltiples hilos simultáneamente.
La idea principal de los Actors es que cada actor protege su propio estado. El código externo no puede acceder directamente a las propiedades almacenadas del actor, solo a través de sus métodos. El compilador de Swift lo verifica estrictamente, mostrando un error si intentas leer o modificar una propiedad del actor desde fuera sin usar la palabra clave await. Esto convierte el modelo de Actors no solo en una biblioteca, sino en parte del sistema de tipos del lenguaje, lo que permite detectar posibles problemas de concurrencia en tiempo de compilación, no durante la ejecución.
¿Por qué es necesario? En el desarrollo moderno para iOS, macOS, watchOS y tvOS, prácticamente cualquier aplicación trabaja con redes, bases de datos o interfaces de usuario, lo que requiere operaciones asíncronas. Los Actors permiten escribir código concurrente que sea fácil de leer, mantener y depurar. Son especialmente útiles al trabajar con recursos compartidos como cachés, gestores de estado, pools de conexiones y cualquier otro objeto al que se pueda acceder simultáneamente desde diferentes partes de la aplicación. Los Actors no son solo "una herramienta más", sino un cambio fundamental en la forma en que los desarrolladores de Swift piensan sobre la concurrencia.
2. Instalación
Los Actors son una parte integrada del lenguaje Swift desde la versión 5.5. Para usarlos, no es necesario instalar bibliotecas externas ni paquetes a través de gestores de dependencias (CocoaPods, Swift Package Manager, Carthage). Todo lo que necesitas es un proyecto configurado para usar Swift 5.5 o superior.
Verificar la versión de Swift
Asegúrate de tener instalada una versión adecuada del compilador. Para ello, ejecuta en la terminal:
swift --version
Deberías ver una línea que contenga Swift version 5.5 o superior. Si la versión es inferior, actualiza Xcode (en macOS) o instala el kit de herramientas Swift más reciente desde el sitio oficial.
Configuración del proyecto
Si usas Xcode, asegúrate de que en la configuración del proyecto (Build Settings) el parámetro Swift Language Version esté establecido en Swift 5.5 o superior. Para proyectos con Swift Package Manager (SPM), la versión mínima de la plataforma debe ser .iOS(.v15), .macOS(.v12), .tvOS(.v15) o .watchOS(.v8) — a partir de estas versiones Apple comenzó a ofrecer soporte completo para Actors en sus frameworks.
Ejemplo de configuración de Package.swift:
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MyActorProject",
platforms: [
.iOS(.v15),
.macOS(.v12)
],
dependencies: [],
targets: [
.target(
name: "MyActorProject",
dependencies: []),
.testTarget(
name: "MyActorProjectTests",
dependencies: ["MyActorProject"])
]
)
Todo listo. No se necesitan comandos adicionales como pip i.
También en la biblioteca
Monitoreo de aplicaciones TypeScript con Appmetrics
Generación Swagger/OpenAPI para TypeScript: bibliotecas y herramientas
Cliente OAuth para PHP: integración con Google, GitHub y VK
Frameworks CLI para Go (Golang): revisión completa de herramientas para crear aplicaciones de consola
Exposed para Kotlin: guía completa con ejemplos