Qué esperar de Swift 3

Probablemente sepa que Swift 3 llegará más adelante este año. Es el primer lanzamiento que incorpora el trabajo duro de una comunidad fantástica. Se presentaron docenas de propuestas desde que Apple abrió Swift en 2015 y se aceptaron docenas después de que el equipo central las examinó detenidamente. En este artículo, echamos un vistazo a algunos de los cambios importantes en Swift 3.

¿Qué es Swift 3??

El equipo central tiene un objetivo muy claro en mente con el lanzamiento de Swift 3, creando una base sólida para el lenguaje de programación Swift. En WWDC 2016, Chris Lattner enfatizó que Swift 3 introduce una serie de cambios de última hora con la intención de obtener los fundamentos correctos. Ese es el tema común del próximo lanzamiento. Esto significa romper funciones existentes, eliminar algunas funciones y mejorar la base del lenguaje.

El proyecto Swift evolution ha sido una verdadera historia de éxito para todos los involucrados en la comunidad Swift. El compromiso ha sido tremendo y el resultado es Swift 3. Apple es transparente con respecto al proceso de lanzamiento y las instantáneas de Swift 3 están disponibles en el sitio web de Swift e incluidas en Xcode 8, que está en versión beta en el momento de escribir este artículo..

Más que veloz

La versión Swift 3 no solo se centra en el lenguaje de programación Swift, sino que también incluye cambios sustanciales en la cadena de herramientas, la biblioteca estándar y la interoperabilidad del lenguaje con Cocoa. Recuerda que Swift es más que un lenguaje. Cuando hablamos de Swift, generalmente solo pensamos en el idioma, pero también incluye la biblioteca estándar y el administrador de paquetes..

Compatibilidad de fuente

Si ha trabajado con Swift, entonces sabe que migrar una base de código de una versión a otra no es una tarea fácil. Desafortunadamente, la migración de un proyecto a Swift 3 no será diferente.

Dicho esto, el objetivo principal de Swift 3 es asegurar que la transición de Swift 3 a futuras versiones del lenguaje no sea así. La compatibilidad de fuente es un punto de enfoque clave de Swift 3.

Genialidad

Swift fue diseñado para ser un lenguaje de programación moderno, pero era igualmente importante crear un lenguaje que se viera bien y fuera ... bueno ... increíble. Con Swift 3, el equipo continúa "optimizando el lenguaje por genialidad" como lo expresa Chris Lattner.

Si bien hay muchos cambios importantes, el resultado neto es un lenguaje que se siente y se ve muy bien. Swift 3 es una alegría de usar. Los cambios a Core Graphics y Grand Central Dispatch, que discutimos en un momento, son buenos ejemplos..

Lo que esta cambiando?

Suficiente sobre qué tan impresionante es Swift y cuánto más increíble será Swift 3. En el resto de este artículo, me gustaría centrarme en algunos de los cambios clave introducidos en Swift 3. Tenga en cuenta que Swift 3 continúa evolucionando hasta el lanzamiento oficial a finales de este año..

API

Legibilidad

Se dedicó mucho tiempo y energía a mejorar la API del lenguaje Swift. Los cambios son significativos, no se puede negar eso. Pero el resultado es muy, muy bonito. Con Swift 3, el equipo central apunta a una API que se centre en la legibilidad y la accesibilidad.

Si bien muchos de nosotros nos hemos acostumbrado a la verbosidad de Objective-C, la nueva API Swift adopta un enfoque diferente al enfatizar y enfocar lo esencial. Eche un vistazo al siguiente ejemplo de Swift 2.2.1. Este ejemplo debería parecer familiar si ha pasado algún tiempo con Swift ... o Objective-C.

parentViewController.presentViewController (newViewController, animated: true, terminación: nil)

En Swift 3, este fragmento de código se ve ligeramente diferente como se puede ver a continuación.

parentViewController.present (newViewController, animated: true, complete: nil)

La comunidad Swift se dio cuenta de que no es necesario incluir una referencia a lo que se presentará, ya que esa información ya está incluida en el primer parámetro. Como resultado, el nombre del método se vuelve más legible y más conciso. Una mejora definitiva si me preguntas..

Este es un hilo común en Swift 3. Varias de las propuestas que fueron aceptadas e incluidas en Swift 3 se centran en la simplificación y la eliminación del lenguaje del lenguaje. La API de Swift estuvo inicialmente fuertemente influenciada por la naturaleza verbosa de Objective-C. La legibilidad es excelente, pero Swift 3 reduce la verbosidad sin comprometer la legibilidad.

La comunidad Swift es de la opinión de que el diseño de una API siempre debe tener en cuenta el uso de la API y eso es claramente visible en los cambios que se introducen en Swift 3. Estoy seguro de que está de acuerdo en que la API renovada se ve y grandes lecturas.

Parámetros de etiquetado

Otro cambio importante que muchos desarrolladores aceptan es la firma consistente de la función y los métodos al incluir la primera etiqueta de parámetro de forma predeterminada. Así es como se ve una función típica en Swift 2.2.1. De forma predeterminada, la primera etiqueta de parámetro se omite cuando se invoca la función.

func setupView (vista: UIView, con configuración de configuración: configuración) //… setupView (vista, con configuración: configuración)

Eso ya no es cierto en Swift 3. El primer parámetro ya no recibe un tratamiento especial, lo cual es un cambio muy bienvenido.

func setupView (vista: UIView, con configuración de configuración: configuración) //… setupView (vista: vista, con configuración de: configuración)

Debido a este cambio, podría mejorar aún más el ejemplo anterior omitiendo la referencia a la vista en el nombre de la función.

configuración de la función (ver: UIView, con configuración de Configuración: Configuración) //… configuración (ver: ver, con Configuración de: configuración)

Importar como miembro

Trabajar con C API en Swift siempre se ha visto y se ha sentido torpe. Las funciones de Core Graphics, por ejemplo, se importan como funciones globales, lo que no es una gran solución y, como resultado, el uso de Core Graphics en Swift no se siente bien.

Lo mismo se aplica a Grand Central Dispatch. En el siguiente ejemplo, usamos Grand Central Dispatch para enviar de forma asíncrona una tarea a una cola en segundo plano.

dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) //…

En Swift 3, la API se siente mucho más como una API Swift nativa. Las funciones se importan como métodos, lo que da como resultado la siguiente sintaxis en Swift 3.

DispatchQueue.global (atributos: .qosBackground) .async //…

Eliminando Características

La comunidad Swift también acordó la eliminación de una serie de características, algunas de las cuales han provocado algunas discusiones acaloradas. Me gustaría señalar cuatro de ellos..

Estilo C para Bucles

¿Esto te parece familiar??

para (var i = 0; i < 5; i++)  print(i) 

Estilo C para Los bucles ya no están disponibles en Swift 3. Espera. ¿Qué? ¿Por qué? Esa es una muy buena pregunta. Puedes leer la propuesta, presentada por Erica Sadun, en GitHub. Esto nos lleva al próximo cambio polémico..

Decir adiós a ++ y --

Poco después de la contratación abierta Swift, Chris Lattner, el creador de Swift, presentó una propuesta para eliminar el incremento y la disminución de operadores del idioma. En su propuesta, menciona que estos operadores se agregaron, "sin mucha consideración", al principio del desarrollo de Swift. Para limpiar la API de Swift y evitar cualquier confusión., ++ y -- Ya no están disponibles en Swift..

var a = 0 a++

Sin embargo, no se asuste. La solución es simple. No hay necesidad de preocuparse.

var a = 0 a + = 1

No más var Parámetros

Si está familiarizado con las funciones en Swift, entonces sabe que los parámetros de una función son constantes por defecto. Puede cambiar este comportamiento anteponiendo un nombre de parámetro con la var palabra clave. Para los parámetros variables, se pasa una copia variable del parámetro a la función.

Pero, ¿cómo difiere esto de los parámetros marcados como En fuera? Derecha. Eso es exactamente lo que muchos de nosotros nos hemos estado preguntando y es la motivación para eliminar parámetros variables del lenguaje..

Desde la perspectiva de la función, no hay diferencia, es decir, la función recibe una copia local mutable del valor del parámetro. Como su nombre lo indica, sin embargo, un parámetro marcado como En fuera escribe su valor de nuevo a la variable original.

Para evitar cualquier confusión., var los parámetros ya no están disponibles en Swift 3. Afortunadamente, En fuera Los parámetros están aquí para quedarse..

Hablando de En fuera parámetros, en Swift 3, el En fuera palabra clave se integra en la sintaxis de tipo de parámetros de función. Eche un vistazo a los siguientes ejemplos para comprender mejor este cambio..

// Swift 2 func combineStrings (inout first: String, segundo: String) // ... // Swift 3 func combineStrings (first: inout String, second: String) //…

Comportamiento implícito de Tuple Splat

Aunque Swift aún es muy joven, hay muchas características que están bastante avanzadas. ¿Sabía que puede pasar una tupla a una función en lugar de una lista de parámetros? Sin embargo, no hay necesidad de animar. Esta característica será eliminada en Swift 3.

// Pasar argumentos como argumentos separados dejar ver = UIView () dejar configuración = Configuración () setupView (ver, con Configuración: configuración) // Pasar argumentos como parte de tuple dejar tuple = (ver, con Configuración: configuración) setupView (tupla)

Chris Lattner se refiere a este comportamiento como "lindo" en su propuesta para eliminar la función. Si bien este comportamiento puede ser útil de vez en cuando, parece tener bastantes consecuencias. La razón para plantear esta propuesta es resaltar el objetivo principal del equipo central, simplificando la sintaxis y la API del lenguaje..

Puedo ver cómo esta característica se veía limpia al principio, pero a medida que el lenguaje creció, ganó en complejidad y más personas comenzaron a usarla, características como esta están agregando un valor limitado al idioma a cambio de lo que parece ser una lista de complicaciones. , incluidos los problemas de rendimiento durante la compilación y la complejidad del comprobador de tipos que podría evitarse omitiendo la función.

¿Cuál es el trato con Swift 2.3?

La semana pasada, escribí sobre Xcode 8. En ese artículo, mencioné que Xcode 8 es compatible con Swift 2.3 y Swift 3. Pero, ¿qué es Swift 2.3 y cómo se compara con Swift 2.2??

Swift 2.3 es una actualización menor pero importante para Swift. La principal diferencia con Swift 2.2.1, la versión incluida en Xcode 7.3.1, es la compatibilidad con los SDK para los nuevos sistemas operativos de Apple, iOS 10, tvOS 10, watchOS 3 y macOS Sierra (10.12).

Esto significa que puede usar y compilar contra los nuevos SDK sin tener que saltar a Swift 3. Con Xcode 8, puede enviar solicitudes a App Store utilizando Swift 2.3 o Swift 3. El equipo de Swift sabe y entiende que la migración a Swift 3 tiene un impacto significativo en proyectos existentes que incluyen Swift. Swift 2.3 se asegura de que pueda migrar sus proyectos cuando lo considere oportuno.

Herramientas

Lo que también me gusta del proyecto Swift es que las herramientas se desarrollan junto con el lenguaje. Esto significa que las herramientas también reciben una actualización sustancial cuando Swift 3 se lance a finales de este año.

Documentación

Durante WWDC, ya vimos un vistazo a los cambios realizados en la documentación. Si bien esto puede parecer trivial, ¿alguna vez has considerado cuánto tiempo pasas navegando por la documentación? Tengo una debilidad por los detalles como este y aprecio el esfuerzo que el equipo ha puesto para hacer que la documentación sea más accesible. Los cambios son aún más dramáticos en Xcode 8, como escribí la semana pasada..

Xcode

Por ahora, la gran mayoría de los desarrolladores de Swift usan Xcode como su caballo de batalla. Esto puede cambiar en el futuro a medida que el lenguaje gane tracción en otras plataformas. ¿No tenía Google planes para usar Swift en Android??

En Xcode 8, la integración de Swift ha mejorado mucho. Navegar por la biblioteca estándar, por ejemplo, es más intuitivo. En una de las sesiones de WWDC 2016, Ewa Matejska ilustra cómo las interfaces sintetizadas son ahora más intuitivas y fáciles de entender. Esto hace que navegar por la biblioteca estándar sea menos desalentador.

Esto nos lleva a la compilación y optimización. Es posible que hayas oído hablar de la optimización del módulo completo. Esta característica ahora está habilitada por defecto en Xcode. Afecta el rendimiento de la aplicación y Apple recomienda tener esta función habilitada en producción. Si desea obtener más información sobre la optimización de todo el módulo, le recomiendo que lea este artículo de Keith Harrison..

Si bien la optimización de todo el módulo aumenta el tiempo de compilación cuando crea un proyecto por primera vez, los resultados valen la pena. Las compilaciones posteriores se ven menos afectadas gracias a la compilación incremental.

Conclusión

Swift 3 es un hito importante para todos los involucrados en la comunidad Swift. Aunque a nadie le gusta romper cambios, la dirección que está tomando el lenguaje es cada vez más clara, lo que hace que la plataforma sea más robusta y esté lista para futuros cambios sin comprometer la compatibilidad de la fuente..

En este artículo, destacé algunos de los cambios más importantes que puede esperar en Swift 3. Para obtener una lista completa de los cambios, lo invito a visitar la guía de migración en el sitio web de Swift..

También puede visitar el proyecto Swift evolution en GitHub para leer más sobre las propuestas que se han aceptado y sobre las que aún se está trabajando. No tengas miedo Las propuestas son a menudo fáciles de entender. De hecho, el objetivo del proyecto Swift evolution es que todos puedan participar en la discusión. Que te esta deteniendo?