Se anuncia el lanzamiento de Dart 2.8

Dart, uno de los lenguajes de programación de Google y que últimamente está alcanzando cotas de uso que no veía desde sus inicios, ha alcanzado la versión estable 2.8. El equipo de desarrollo de Dart anunció hace solo unos pocos día la disponibilidad de la nueva versión que incluye, como no, mejoras de funcionalidad y de optimización.

Dart ha alcanzado en los últimos meses una gran popularidad debido sobre todo todo a Flutter, la plataforma/framework, o como lo queréis llamar, de Google que permite mediante el mismo código base compilar ejecutables para Android, IOS, Mac, Windows y web. Si bien, no todos estos canales están a día de hoy al mismo nivel de optimización y posibilidad de uso.

Entre las novedades más importantes de esta nueva release, está la incorporación de un soporte mejorado para la gestión de dependencias con el cliente pub y desde el repositorio de paquetes pub.dev. Este repositorio, para quien no lo conozca, es el sitio donde suelen estar las librerías de terceros para poder ser integradas en los desarrollos que utilicen Dart/Flutter. En los últimos meses pub.dev a pasado a tener más de 10.000 paquetes de librerías a disposición de todo aquel que las necesite.

Con Dart 2.8 se mejoran dos aspectos de la herramienta de gestión de paquetes: mejor eficiencia a la hora de hacer una descarga de las librerías utilizando la orden pub get y una nueva característica que nos informa acerca de actualizaciones disponibles de algunas de las librerías que tengamos como dependencia.

También llegan algunos cambios importantes dentro del propio core del lenguaje que son la base para la gran y esperada mejora que llegará pronto, y que no es otra cosa, mas que la incorporación de los tipos nulos y el mejor tratamiento de estos datos nulos por el lenguaje. 

Tratamiento de los tipos nulos en Dart 2.8

El equipo de desarrollo de Dart lleva ya tiempo trabajando para incorporar al lenguaje una nueva forma más segura de lidiar con los nulos. Sabemos de sobra que los nulos son un verdadero quebradero de cabeza para todo programador y su gestión a día de hoy en muchos lenguajes lleva bastante tiempo del desarrollo de un producto. 

Lenguajes modernos como Swift y Kotlin por ejemplo, o Scala , poseen un tipo propio en el lenguaje para dotar a una variable de la posibilidad de ser nula. Es un tipo en si mismo y mediante este tipo nullable se hace mucho más sencillo y sobre todo más seguro el lidiar con este problema en el día a día. Dart quiere disponer de esta misma, o parecida, funcionalidad y se supone que no tardará mucho en estar presente en el lenguaje. 

Con el lanzamiento de la versión de Dart 2.8 los trabajos para llegar a esta funcionalidad están cada vez más cerca e internamente ya incluyen algunos cambios en preparación de la llegada de esta funcionalidad. 

Estos cambios en el core de Dart puede que afecten a ciertos tipos actuales y la forma de utilizarlos a día de hoy, si bien el propio equipo de Dart cree que será mínima esta afectación. Aquí están detallados uno a uno los cambios que se han realizado y cómo podría afectar en el desarrollo actual.

Mejoras en la gestión de dependencias y paquetes

Como comentábamos antes, con Dart 2.8 llegan mejoras para la gestión de dependencias de paquetes y la mejor gestión de sus actualizaciones. Esto último se realiza mediante una nueva función en el gestor pub: pub outdated. Mediante este comando, el gestor de paquetes buscará las librerías que tengamos como dependencias en nuestro proyecto y buscará en el directorio pub.dev si alguna necesita ser actualizada y nos mostrará un informe de lo que encuentre.

En cuanto a las mejoras de rendimiento, se nos dice que se ha mejorado la descarga de paquetes añadiendo soporte para descargas en paralelo. Los tiempos de compilación también han mejorado y según el equipo de desarrollo de Dart, esta mejora puede llegar incluso en 12 segundos menos a la hora de compilar una aplicación de tamaño medio-grande.

Funcionamiento de pub outdated

Vamos a ver con un ejemplo como funciona esta nueva funcionalidad del gestor de paquetes de Dart. Hasta ahora cuando realizamos un pub upgrade, el sistema busca en el repositorio de paquetes y si encuentra una actualización menor esta se realiza sin tener nosotros que modificar el archivo de dependencias de nuestro proyecto. Pero si la actualización del paquete que se encuentra en el repo corresponde a una actualización mayor de la librería, esta no se realiza y depende de que nosotros modifiquemos el archivo pubspec.yaml con la nueva versión que deseamos descargar. Pero en ningún caso si la actualización es mayor nos enteramos de que esa actualización existe.

Imaginemos que poseemos una archivo pubspec.yaml con las siguientes dependencias:

dependencies:
  foo: ^1.3.0
  bar: ^2.0.0

E imaginemos que en el repositorio pub.dev existen las siguientes versiones de estas librerías:

foo: 1.3.1

bar: 3.0.3

Si realizamos un pub upgrade en la consola o mediante la opción del IDE que utilicemos, el gestor de dependencias actualizará nuestro fichero a:

dependencies:
  foo: ^1.3.1
  bar: ^2.0.0

Y realizará la actualización de las dependencias, pero no sabremos que existe una nueva versión 3.0.3 de la librería bar y tampoco se nos actualizará.

Aquí entra en acción la nueva función pub outdated. Si ejecutamos esta orden en el terminal se nos mostrará la siguiente información:

$ pub outdated
Dependencies            Current  Upgradable  Resolvable  Latest
foo                     1.3.0    1.3.1       1.3.1       1.3.1
bar                     2.0.1    2.1.0       3.0.3       3.0.3
1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `pub upgrade`.
1 dependency is constrained to a version that is older than a resolvable version.

Como vemos se nos informa que el sistema ha detectado que existe una actualización menor y que es posible realizarla sin hacer nosotros ningún cambio en ningún archivo, pero también nos informa que existe una actualización mayor de la otra dependencia y que sí que es necesario modificar el archivo pubspecs.yaml reflejando esta nueva versión para que el sistema al realizar el pub upgrade descargue y ponga al día todas las librerías.

Al modificar el archivo pubspecs.yaml de estar forma:

dependencies:
  foo: ^1.3.0
  bar: ^3.0.3

El sistema de gestión de dependencias de Dart actualizará todas nuestras librerías. 

Interesante sin duda esta nueva función.

Comparte si lo consideras interesante
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.