Dart 2.15 llega con grupos aislados, mejoras en el runtime y mas

Google dio a conocer recientemente el lanzamiento de la nueva versión del lenguaje de programación Dart 2.15, que continúa con el desarrollo de una rama radicalmente rediseñada de Dart 2 y que se diferencia de la versión original del lenguaje Dart por el uso de tipado estático fuerte (los tipos se pueden inferir automáticamente, por lo que no se requiere especificar tipos, pero la tipificación dinámica ya no se usa y se calcula inicialmente, el tipo se asigna a la variable y luego se aplica una verificación de tipo estricta).

En esta nueva versión se han implementado diversas mejoras y sobre todo la introducción de algunas características nuevas como lo son los grupos aislados y tambien las soluciones a algunas vulnerabilidades detectadas.

Principales novedades de Dart 2.15

En esta nueva versión de Dart 2.15 se proporcionan herramientas para la ejecución rápida en paralelo de tareas con aislamiento de controlador.

Ademas de que en sistemas de múltiples núcleos, el runtime de Dart, de forma predeterminada, ejecuta el código de la aplicación en un núcleo de la CPU y usa otros núcleos para realizar tareas del sistema como E/S asíncronas, escribir en archivos o realizar llamadas de red.

Otra de las novedades que Dart 2.15 introduce, es un nuevo concepto, grupos aislados, (isolate groups) que permite el acceso compartido a diferentes estructuras de datos internos en aislados pertenecientes al mismo grupo, lo que puede reducir significativamente la sobrecarga al comunicarse con agentes en un grupo. Por ejemplo, iniciar un aislamiento adicional en un grupo existente es 100 veces más rápido y requiere de 10 a 100 veces menos memoria que iniciar un aislamiento independiente, al eliminar la necesidad de inicializar las estructuras de datos del programa.

A pesar del hecho de que en bloques aislados en un grupo, el acceso compartido a objetos mutables todavía está prohibido, los grupos usan una memoria dinámica compartida, lo que acelera significativamente la transferencia de objetos de un bloque a otro sin la necesidad de realizar operaciones de copia que consumen muchos recursos.

En la nueva versión, también se permite pasar el resultado del trabajo del controlador cuando se llama a Isolate.exit() para pasar datos al bloque de aislamiento principal sin realizar operaciones de copia. Además, se ha llevado a cabo la optimización del mecanismo de transmisión de mensajes: los mensajes pequeños y medianos ahora se procesan aproximadamente 8 veces más rápido. Los objetos que se pueden pasar entre aislamientos mediante la llamada SendPort.send () incluyen varios tipos de funciones, cierres y seguimientos de pila.

En las herramientas para crear punteros a funciones individuales en otros objetos, se han eliminado las restricciones para crear dichos punteros en el código del constructor, lo que puede ser útil al crear interfaces basadas en la biblioteca Flutter.

La biblioteca dart:core ha mejorado el soporte de enumeración, por ejemplo, ahora puede generar un valor de cadena de cada valor de enumeración utilizando el método «.name», obtener valores por nombre o realizar una coincidencia de pares de valores.

Tambien se destaca que se ha implementado una técnica de compresión de punteros, que permite utilizar una representación más compacta de punteros en entornos de 64 bits si el espacio de direcciones de 32 bits es suficiente para el direccionamiento (no se utilizan más de 4 GB de memoria). Las pruebas han demostrado que dicha optimización permite reducir el tamaño del montón en aproximadamente un 10%. En el SDK de Flutter, el nuevo modo ya está activado para Android de forma predeterminada y se planea habilitarlo para iOS en una versión futura.

Ademas se destaca que el repositorio pub.dev ahora tiene la capacidad de revocar una versión ya publicada de un paquete, por ejemplo, en caso de errores peligrosos o vulnerabilidades.

De los demás cambios que se destacan:

  • Protección adicional contra la vulnerabilidad (CVE-2021-22567) causada por el uso de caracteres Unicode que cambian el orden de visualización en el código.
  • Se corrigió una vulnerabilidad (CVE-2021-22568) que podía hacerse pasar por otro usuario de pub.dev al publicar paquetes en un servidor de terceros que acepta tokens de acceso oauth2 de pub.dev.
  • El SDK de Dart incluye herramientas para la depuración y el análisis de rendimiento (DevTools), que anteriormente se entregaban en un paquete separado.
  • Se agregaron herramientas al comando «dart pub» y los repositorios de paquetes pub.dev para rastrear la publicación accidental de información confidencial, por ejemplo, dejando credenciales para sistemas de integración continua y entornos en la nube dentro del paquete.
  • Si se encuentran tales fugas, el comando «dart pub publish» se interrumpirá con un mensaje de error. En caso de que haya una falsa alarma, es posible omitir el cheque a través de la lista blanca.

Fuente: https://medium.com/


Deja tu comentario

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

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.