- Amplía el lenguaje, la biblioteca estándar, el sistema de compilación y el soporte de plataformas en general, y mejora la experiencia de desarrollo
- Los cambios principales son el fortalecimiento de la interoperabilidad con C, la incorporación del SDK oficial para Android, las mejoras para entornos embebidos y la expansión de la herramienta de documentación DocC
- Swift Package Manager mejora la consistencia de compilación multiplataforma mediante un motor de compilación unificado y soporte para Swift Syntax precompilado
- Swift Testing agrega nuevas funciones, como registro de incidencias de nivel advertencia, cancelación de pruebas y adjuntos de imágenes, para reforzar la flexibilidad de testing
- Con el lanzamiento oficial del SDK para Android, se amplía el alcance del desarrollo multiplataforma de Swift y se habilita la integración con apps Kotlin/Java
Actualizaciones principales de Swift 6.3
- Swift 6.3 ofrece funciones ampliadas en el lenguaje, la biblioteca estándar, el sistema de compilación y el soporte de plataformas
- Los cambios clave son el fortalecimiento de la interoperabilidad con C, la incorporación del SDK oficial para Android, las mejoras para entornos embebidos y la expansión de la herramienta de documentación DocC
- El objetivo es mejorar la experiencia de desarrollo y la integración del desarrollo multiplataforma
Lenguaje y biblioteca estándar
-
Interoperabilidad con C
- El nuevo atributo
@c permite exponer funciones o enums de Swift al código C
- Se puede especificar un nombre de declaración C personalizado con la forma
@c(MyLibrary_callFromC)
- Si se usan juntos
@c y @implementation, es posible implementar en Swift funciones declaradas en encabezados C
- En esa combinación, Swift valida si coincide con la declaración C existente
-
Selectores de nombre de módulo (Module Name Selectors)
- Al importar APIs con el mismo nombre desde varios módulos, se puede hacer una llamada indicando el módulo explícitamente con la forma
ModuleA::getValue()
- La sintaxis
Swift::Task permite acceder a APIs de concurrencia y procesamiento de cadenas
-
Control de rendimiento para APIs de biblioteca
- @specialize: ofrece una implementación especializada previa para tipos específicos de una API genérica
- @inline(always): fuerza el inlining para expandir el cuerpo de la función en el punto de llamada
- @export(implementation): expone la implementación de una función en bibliotecas con ABI estable para permitir optimizaciones adicionales
- Las propuestas relacionadas pueden consultarse en el panel de Swift Evolution
Mejoras en paquetes y compilación
- Swift Package Manager incluye una vista previa de integración de Swift Build, que ofrece una experiencia de compilación consistente en todas las plataformas
- Refuerza la consistencia del desarrollo multiplataforma mediante un motor de compilación unificado
- Los usuarios pueden probarlo directamente en paquetes y reportar problemas
- Principales mejoras de SwiftPM 6.3
- Soporte para Prebuilt Swift Syntax: las bibliotecas solo para macros pueden usar binarios precompilados de
swift-syntax
- Control flexible de herencia de documentación: los plugins imperativos que generan grafos de símbolos pueden controlar si se incluye la documentación heredada
- Función de exploración de traits del paquete: con el comando
swift package show-traits se pueden verificar los traits compatibles del paquete
- Más detalles están incluidos en las notas de lanzamiento de SwiftPM 6.3
Actualizaciones de bibliotecas principales
-
Swift Testing
- Registro de incidencias de nivel advertencia: con
Issue.record(..., severity: .warning) se muestran advertencias sin marcar la prueba como fallida
- Función de cancelación de pruebas: con
try Test.cancel() se puede detener una prueba en ejecución y sus subtareas
- Soporte para adjuntar imágenes: se pueden adjuntar imágenes durante las pruebas en plataformas Apple y Windows
- Propuestas relacionadas: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
-
DocC
- Soporte de salida en Markdown: genera documentación Markdown con la opción
--enable-experimental-markdown-output
- Contenido HTML estático por página: insertar HTML de resumen dentro de `` mejora motores de búsqueda y accesibilidad
- Expansión de anotaciones en bloques de código: se agregan nuevas opciones de formato como
nocopy, highlight, showLineNumbers, wrap
- Puede activarse con la opción
--enable-experimental-code-block-annotations
Plataformas y entornos
-
Embedded Swift
- Incluye múltiples mejoras, como mayor interoperabilidad con C, mejoras de depuración y avance hacia la finalización del modelo de linkage
- Los detalles pueden consultarse en el blog “Embedded Swift Improvements coming in Swift 6.3”
-
Android
- Primer lanzamiento del SDK oficial de Swift para Android
- Hace posible el desarrollo de apps nativas de Android con Swift y el soporte de compilación de paquetes Swift en Android
- Permite integración con apps Kotlin/Java mediante Swift Java y Swift Java JNI Core
- Se considera un hito importante para la expansión multiplataforma de Swift
- La guía de inicio está disponible en el documento “Getting Started with the Swift SDK for Android”
Siguientes pasos
- El toolchain de Swift 6.3 puede instalarse desde la página Install Swift
- Los desarrolladores pueden empezar a probar de inmediato las nuevas funciones y enviar feedback
1 comentarios
Opiniones en Hacker News
Da gusto ver un lanzamiento tan bueno de Swift
No lo he usado desde más o menos la v3, pero por allá de 2015~17 Swift pudo haber reemplazado a Python
porque era simple, rápido y encajaba bien con el ecosistema de C/C++. En la época en que IBM impulsaba la parte de servidor, de verdad parecía posible
Pero Apple no logró atraer lo suficiente a la comunidad y, al final, Swift se quedó como un lenguaje exclusivo de Apple. Ahora además su complejidad ya subió al nivel de C++
Me gusta Swift, pero fuera del ecosistema de Apple todavía siento que no ha pasado la masa crítica. Al final el año pasado me cambié a Typescript
Sobre todo, creo que casi nadie quiere meter voluntariamente a Apple como guardián de acceso dentro de su stack
Proyecto TensorFlow Swift
CircuitPython también fue útil para prototipado embebido. Swift no logró apropiarse bien de esas áreas
Además, Swift llegó a Linux en 2016, a Windows en 2020 y recién a FreeBSD en 2025
A mediados de los 2010 salieron muchos lenguajes nuevos como Go, Julia, Rust, TypeScript y Solidity, así que la mayoría apenas tenía tiempo para aprender uno o dos
Esperaba que Swift se volviera un lenguaje para toda la pila, pero la realidad no fue esa
Se siente como si Apple hubiera desperdiciado la oportunidad
Por ejemplo, ClearSurgery está escrito completamente en Swift, incluso sus componentes en tiempo real sobre Linux
La semana pasada porté el sistema operativo xv6-riscv a Zig, Nim, LISP y Swift
Gracias al avance de Swift embebido, me pareció un lenguaje de alta productividad. Las abstracciones que envuelven el acceso a memoria también se veían limpias
Pero la velocidad de compilación era tan lenta que al final me enfoqué en Nim
Da pena que no se mencione la mejora en la velocidad de compilación de Swift
Compilar más lento que Rust perjudica bastante la experiencia de desarrollo
Si ya estás acostumbrado a los builds rápidos de Go, Swift de verdad vuelve doloroso el desarrollo iterativo. El lenguaje en sí es excelente, pero el ciclo de retroalimentación es demasiado lento
Swift 6.3 incluyó por primera vez un SDK oficial para Android
Para Windows está este post del blog de hace 5 años,
y para Linux esta guía para GNOME
Estaría bien poder desarrollar una vez y desplegar en varias plataformas, como en los tiempos de OpenSTEP
La mejora de los tipos noncopyable es la parte más subestimada de este lanzamiento
Ahora modelar propiedad única en Swift es mucho más realista
Con el atributo
@cde Swift 6.3 ahora se pueden exponer funciones de Swift a código CPero me pregunto por qué lo agregaron tan tarde. Haber metido primero la interoperabilidad con C++ parece una prioridad extraña
En cambio, exportar Swift a C tiende a crear espagueti de FFI y facilita bugs de ABI en cosas como enums, propiedad y manejo de null
Sobre todo si se mezclan closures, las convenciones de llamada se desalinean y puedes perder un día entero depurando
Antes, cuando hacía un dylib en Swift para programas en C, tenía que usar
@cdecl, así que da gusto ver que ahora tenga soporte oficialLos cambios reales más allá del marketing se pueden ver en el CHANGELOG y en
la lista de propuestas de Swift Evolution
La 6.3 fue sobre todo una versión centrada en trabajo de integración: stdlib, interoperabilidad con C/C++, swift-java, sistema de compilación, etc.
SPM está absorbiendo cada vez más funciones de Xcode, y también se están probando el nuevo motor
swift-buildy los módulos precompiladosPero la interacción entre SPM y Xcode sigue siendo inestable, y la complejidad interna está creciendo
El avance del lenguaje en sí es más silencioso, pero siguen en marcha trabajos estructurales profundos como el control de vida útil y el coloreado de concurrencia
Como hay muchos OS, dispositivos y entornos de CI entrelazados, los desarrolladores de Swift siempre están en una situación de tener que mantener el equilibrio en medio del cambio
swift-buildserá el predeterminadoSegún este post oficial del foro,
Xcode ya lo usa internamente, pero los problemas de rendimiento son serios
También está esta discusión relacionada.
Si SPM y Xcode usan el mismo motor, tal vez mejore, pero no tengo grandes expectativas
Me da curiosidad cómo está el toolchain en las versiones recientes de Swift. Quisiera saber si Swift Lint y Swift Format están soportados
Un lenguaje moderno debería tener un formateador integrado y reglas de lint recomendadas. No importa solo el lenguaje, sino todo el ecosistema
swift formatyswift format lintsin dependencias externas