Las novedades en Swift 5.3 (cuyo proceso de publicación fue anunciado por Apple el 25/3 se pueden encontrar tanto a nivel de código (multi-pattern catch, multiple trailing closure…) como en el uso de Swift Package Manager (adición de dependencias binarias o recursos). A continuación detallo algunas de las novedades en Swift 5.3 (hay que tener en cuenta que se espera ver la nueva beta de Swift 5.3 en la WWDC20, aunque para ir probando se puede descargarla en Swift.org).

Conformidad Comparable sintetizada para enums (SE-0266)

Gracias a esta nueva adición, podemos adoptar el protocolo Comparable en los enums que no tienen valores asociados, o que si los tienen y estos adoptan el protocolo Comparable. Con esto lo que que se consigue es poder comparar dos casos del mismo enum usando, por ejemplo, > o <.

Uso the where en declaraciones contextualmente genéricas (SE-0267)

Lo que se busca con esta modificación es eliminar la restricción de adjuntar cláusulas where a las declaraciones de miembros que solo pueden hacer referencia a parámetros genéricos externos. Por ejemplo:

Con Swift 5.3 puede expresarse como:

Redefinición de la semántica de didSet (SE-0268)

Con anterioridad a Swift 5.3, al usar didSet en una propiedad, siempre se llamaba al getter para obtener el oldValue de dicha propiedad (aunque no se hiciera referencia a este valor), con el la consiguiente afectación al rendimiento. En swift 5.3 se ha aumentado la eficiencia del proceso, ya que ahora no se accede al oldValue si no lo estamos llamando dentro de didSet.

Se elimina el uso self en clausuras (closures) si no se dan ciclos de referencia (SE-0269)

Hasta el momento, en el interior de las clausuras (closures) era necesario usar self de forma explicita, aunque no se fuera a producir ciclos de referencia. Por ejemplo:

Con Swift 5.3 se puede eliminar el self:

Multi-Pattern Catch Clauses (SE-0276)

Hasta ahora, Swift solo permitía el uso de un tipo de error por bloque catch, lo que nos permite reducir código duplicado en el manejo de errores. Es decir:

Ahora, con Swift 5.3 podemos unir ambos errores en un único bloque catch:

Un tipo Float16 nuevo (SE-0277)

En Swift 5.3 se añade este nuevo tipo debido a su uso extendido en gráficos para móviles, en imágenes HDR y en Machine Learning.

Multiple-trailing closures (SE-0279)

Una clausura final (trailing closure) se refiere a que el último parámetro de una función en Swift es una clausura (closure). En este caso, Swift permite pasar esta clausura directamente dentro de los corchetes en vez de como parámetro:

Con Swift 5.3 esta opción no está limitada al últmo parámetro de la función, por lo que ahora se mueden añadir múltiples clausuras a nuestras funciones (simplemente añadiendo nuevas etiquetas):

Mejoras en Swift Package Manager

Para quienes utilizamos Swift Package Manager tanto para crear como para importar paquetes Swift, Swift 5.3 presenta ciertas mejoras muy interesantes:

  • Recursos del administrador de paquetes (SE-0271). Ahora los paquetes Swift podrán incorporar recursos (imágenes, audio…). Pero no solo eso, si no que se podrán aplicar ciertas reglas para procesar estos recursos.
  • Dependencias binarias del administrador de paquetes (SE-0272). Se podrán utilizar dependencias en fomrato binario, como Firebase o GoogleAnalytics.
  • Dependencias condicionadas (SE-0273). Esta opción peermitirá especificar que dependencias se añaden en función de la plataforma.
  • Recursos idiomatizados (SE-0278). Junto con la posibilidad de añadir recursos en los paquetes Swift, estos podrán ser idiomatizados.

Conclusiones

Swift 5.3 incluye interesantes mejoras a nivel de código o de gestión de paquetes Swift. Pero también hay que fijarse en otras mejoras, como el hecho de que Swift 5.3 soportará plataformas como Windows y nuevas distribuciones de Linux.


0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme en Feedly
shares