Swift 6.4 agrupa mejoras del lenguaje, del rendimiento y de las herramientas de desarrollo. En código concurrente, defer puede esperar directamente una operación asíncrona, mientras que withTaskCancellationShield permite terminar tareas críticas de limpieza aunque se haya cancelado la tarea que las ejecuta. Estos cambios reducen soluciones auxiliares al adoptar las reglas estrictas de concurrencia de Swift.
La versión amplía el trabajo con valores que no se copian. Tipos como UniqueArray y UniqueBox, junto con nuevas formas de préstamo de referencias, buscan evitar asignaciones y copias innecesarias. También se incorporan ajustes de sintaxis y diagnóstico, entre ellos una forma de diferenciar símbolos con el mismo nombre procedentes de módulos distintos. Para los equipos, el beneficio potencial está en expresar con más precisión la propiedad de los datos y controlar el coste de operaciones frecuentes.
En herramientas, Swift Build pasa a ser la base común de compilación en las plataformas compatibles y se refuerza la depuración de módulos. El paquete Subprocess ya es estable y ofrece una API multiplataforma para lanzar procesos y comunicarse con ellos. Swift 6.4 amplía asimismo la interoperabilidad con C, C++20 y Java. En WebAssembly, la comunicación con JavaScript mediante JavaScriptKit puede ser hasta 40 veces más rápida que el mecanismo dinámico anterior, según los resultados citados en el anuncio. Son cambios diversos: cada proyecto deberá valorar cuáles afectan a su código y medir las mejoras de rendimiento en sus propias cargas.
Glosario
- defer
- Construcción de Swift que programa código de limpieza para cuando se abandona el ámbito actual.
- withTaskCancellationShield
- Función que protege temporalmente una operación crítica frente a la cancelación de su tarea.
- UniqueArray
- Tipo de colección con propiedad exclusiva de sus datos que busca evitar copias y asignaciones innecesarias.
- WebAssembly
- Formato de instrucciones portable que permite ejecutar código compilado en navegadores y otros entornos compatibles.