Home » Noticias » Swift sigue evolucionando: integración continúa y benchmark
Swift Logo

Swift sigue evolucionando: integración continúa y benchmark

El proyecto de Swift Open Source sigue adelante y con ello, la evolución del lenguaje en sí. Apple trabaja intensamente en este proyecto y lanza cada poco pequeñas herramientas o características que ayudan a que este sea mejor y más eficiente, ya no solo a nivel del desarrollo de las versiones del lenguaje si no que ayuden a desarrollar más eficientemente el mismo.

Dos de estas herramientas que ha lanzado hace poco son la implementación de continuous integration (integración continua) y una suite para benchmark de los programas que hagamos y medir la eficacia del código.

Continuous integration

Esta función, ya presente en Xcode desde hace tiempo (que requiere el uso de una máquina con OS X Server), ahora también se ha implementado en el propio desarrollo del lenguaje Swift. Su concepto es sencillo y se basa en la forma en que se trabaja con el software.

Lo normal en los desarrollos es que se hagan cambios en varios ficheros, módulos o partes y luego se busque un momento para “generar una versión” de forma que se conjugan y atan todos los cabos para generar esta y verificar que nuestro desarrollo sea estable y con ello comenzar a validar su estabilidad, integridad y funcionalidad.

Pero la integración continua hace todo lo contrario: cada cierto tiempo, que normalmente suelen ser horas, se genera y compila una nueva versión automáticamente y (en caso que se compile correctamente) se lanzan sobre ella una serie de pruebas automáticas que validan los aspectos más generales de integridad y estabilidad de esta.

Unido a un flujo continuo en el que cada cambio aprobado se despliega contra el servidor de control de código (como Git, Subversion, CVS o Mercurial, entre otros) esto permite que siempre haya una versión actualizada y compilada disponible para pruebas automáticas e incluso unitarias. Si tenemos, por ejemplo, un equipo de pruebas, estos sabrán que la versión que prueban siempre estará al día de los últimos cambios con horas de sincronización.

Este proceso agiliza bastante las pruebas y permite de una manera más cómoda y efectiva aprobar versiones finales, dando mayor rendimiento al trabajo en equipo y automatizando parte del flujo de trabajo.

Continuous Integration

En el caso de Swift, Apple ha usado el software de integración continua Jenkins (de código abierto y escrito en Java), que se encarga de generar las versiones. Tiene cuatro hilos: Development (para el master branch), swift-2.2-branch (para el branch propio de Swift 2.2), Packages (que crea toolchains para ambos branches, master o de Swift 2.2) y el último para los Pull Request que realicen los desarrollos que implementen cambios en el código.

Existen hilos para las versiones Linux de Ubuntu 14.04 y 15.04, así como para OS X, de forma que al desplegar un cambio se realiza una compilación, se prueba y si el módulo o cambio que hemos incorporado impide la compilación se avisa a su autor por email del problema.

El CI de Swift se encuentra disponible en ci.swift.org y allí podemos ver cuánto hace que se generó una nueva versión con éxito, la última vez que hubo un fallo (y qué Build provocó cada estado) y más información.

Swift CI

Swift Benchmark Suite

La otra novedad es la suite de benchmark de Swift que ha pasado a ser open source como el resto del proyecto del lenguaje. Esta suite es un conjunto de herramientas que nos permiten probar nuestro código y su eficiencia, para medir lo óptimo o no que es a la hora de resolver problemas en cuanto a tiempo y carga del sistema (entre otras posibles métricas).

Se divide en varios bloques:

  • 75 benchmarks que cubren un número importante de cargas de trabajo para Swift.
  • Librerías que proporcionan las funciones de benchmark más comunes (velocidad, carga de CPU, leaks, etc).
  • Un driver para ejecutar benchmarks y mostrar las métricas de rendimiento.
  • Una utilidad para comprobar las métricas a través de las diferentes versiones de Swift.

Obviamente, Apple insta a los desarrolladores a aportar a este proyecto y ampliarlo, además que tienen planificado en breve integrar esta suite dentro de la integración continua de la que hemos hablando, con el fin que los bots que realicen las compilaciones en cada nueva solicitud de incorporación de código al proyecto (pull request) tenga también la posibilidad de usar un benchmark que mida la mejor eficacia o no de las soluciones e incluso comprobar qué solución de varias propuestas es más eficiente.

En el raíz del proyecto de benchmark en GitHub tenéis toda la información de cómo usar estas librerías.

Estamos en un momento muy interesante donde ahora, por primera vez, podemos ser testigos de primer orden de la evolución que está dando Apple a sus desarrollos. Y eso es solo una pequeña parte, porque hay mucho por ver como comentamos hace poco en nuestro análisis sobre la calidad de las apps de Apple. Así que os invitamos a probar o conocer más sobre estas herramientas y Good Apple Coding.

Proyecto de integración continua de Swift | Enlace
Repositorio de la suite de benchmark de Swift | Enlace

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

App Store Review Guidelines iOS 11

Cambios en las normas del App Store en iOS 11

Todos sabemos cómo son las normas del App Store (o deberíamos saberlas) y la importancia …