Swift Subprocess: ¿el futuro del scripting en Swift o solo una ilusión?
Arturo Rivas Arias
🚀 Swift ha luchado durante años por escapar del nicho móvil y expandirse a otros casos de uso como scripting, automatización y herramientas CLI. El problema histórico ha sido Process (antes NSTask), una API heredada de Objective-C que no soporta async/await, depende de closures y usa excepciones para indicar errores.
📦 En septiembre de 2024 llegó swift-subprocess, un paquete oficial del proyecto swift-foundation diseñado para revolucionar la creación de procesos en Swift. Promete ergonomía moderna, compatibilidad multiplataforma y soporte nativo para concurrencia con async/await.
⚡️ La API principal es la función run() que permite ejecutar comandos de forma asíncrona y obtener su salida. Puedes referenciar ejecutables por nombre (.name(“ls”)) o por ruta completa. El paquete llama a APIs de bajo nivel como posix_spawn en sistemas UNIX para garantizar portabilidad sin comprometer rendimiento.
🎭 Sin embargo, aquí viene la realidad incómoda: no estamos escribiendo scripts reales. Necesitas un proyecto SPM completo con targets ejecutables, Package.swift y toda la ceremonia. La primera ejecución implica compilación y resolución de dependencias. Eso convierte un script rápido en algo mucho más pesado de lo esperado.
✅ Donde swift-subprocess brilla es en flujos de trabajo complejos: pipelines CI/CD, automatización que combina múltiples herramientas (curl, ffmpeg, git), o herramientas CLI mantenibles. La seguridad de tipos, composición de funciones y reutilización de código Swift superan con creces a Bash cuando la complejidad crece.
🤔 Para tareas triviales, un script Bash sigue siendo más rápido y simple. Pero si tu equipo ya domina Swift y necesita automatización robusta que evolucione, swift-subprocess reduce el dolor de mantenimiento. Pero ojo, requiere Swift 6.1 como mínimo.
🎯 En lugar de forzar a Swift a ser algo que no es (un lenguaje de scripting puro), swift-subprocess lo posiciona como herramienta ideal para CLI tools y automatización de infraestructura.
👨💻 ¿Vale la pena migrar tu tooling interno a Swift? Depende. Si ya tienes infraestructura Swift y necesitas mantenibilidad a largo plazo, sí. Si solo necesitas scripts ocasionales, Bash seguirá siendo tu mejor amigo.¿Qué opinas? ¿Usarías Swift para automatización o prefieres herramientas tradicionales?