Lenguaje Dart 2.14 y marco Flutter 2.5 disponibles

Google ha publicado el lanzamiento del lenguaje de programación Dart 2.14, que continúa el desarrollo de una rama radicalmente rediseñada de Dart 2, que se diferencia de la versión original del lenguaje Dart por el uso de escritura estática fuerte (los tipos se pueden inferir automáticamente, por lo que No es necesario especificar tipos, pero ya no se utiliza la tipificación dinámica y, inicialmente, el tipo calculado se asigna a la variable y posteriormente se aplica una verificación estricta de tipos).

Características del lenguaje Dart:

  • Sintaxis familiar y fácil de aprender, natural para programadores de JavaScript, C y Java.
  • Garantizar un inicio rápido y un alto rendimiento para todos los navegadores web modernos y varios tipos de entornos, desde dispositivos portátiles hasta servidores potentes.
  • La capacidad de definir clases e interfaces que permitan la encapsulación y reutilización de métodos y datos existentes.
  • La especificación de tipos facilita la depuración e identificación de errores, hace que el código sea más claro y legible y simplifica su modificación y análisis por parte de desarrolladores externos.
  • Los tipos admitidos incluyen: varios tipos de hashes, matrices y listas, colas, tipos numéricos y de cadenas, tipos para determinar la fecha y la hora, expresiones regulares (RegExp). Es posible crear tus propios tipos.
  • Para organizar la ejecución paralela, se propone utilizar clases con el atributo de aislamiento, cuyo código se ejecuta íntegramente en un espacio aislado en un área de memoria separada, interactuando con el proceso principal mediante el envío de mensajes.
  • Soporte para el uso de bibliotecas que simplifican el soporte y la depuración de grandes proyectos web. Las implementaciones de funciones de terceros se pueden incluir en forma de bibliotecas compartidas. Las aplicaciones se pueden dividir en partes y confiar el desarrollo de cada parte a un equipo independiente de programadores.
  • Un conjunto de herramientas listas para usar para respaldar el desarrollo en el lenguaje Dart, incluida la implementación de herramientas dinámicas de desarrollo y depuración con corrección de código sobre la marcha (“editar y continuar”).
  • Para simplificar el desarrollo en el lenguaje Dart, viene con un SDK, un administrador de paquetes, un analizador de código estático dart_analyzer, un conjunto de bibliotecas, un entorno de desarrollo integrado DartPad y complementos habilitados para Dart para IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 y Vim.
  • Los paquetes adicionales con bibliotecas y utilidades se distribuyen a través del repositorio pub, que cuenta con más de 20 mil paquetes.

Cambios importantes en la versión Dart 2.14:

  • Se agregó un nuevo operador de cambio triple (>>>) que, a diferencia del operador “>>”, no realiza un cambio aritmético, sino un cambio lógico que funciona sin tener en cuenta el bit de signo (el cambio se realiza sin dividir en números positivos y negativos).
  • Se eliminó la restricción en los argumentos de tipo que impedía que los tipos de funciones genéricas se usaran como argumentos de tipo. Por ejemplo, ahora puede especificar: Lista tardía (T)>funciones de identificación; devolución de llamada var = [ (valor T) => valor]; tarde S Función (T)>(S) f;
  • Permitir especificar argumentos con tipos en anotaciones como @Deprecated. Por ejemplo, ahora puede especificar: @TypeHelper (42, "El significado")
  • Los métodos estáticos hash, hashAll y hashAllUnordered se han agregado a la biblioteca estándar (núcleo) en la clase Object. La clase DateTime ha mejorado el manejo de la hora local al convertir relojes entre horario de verano e invierno que no son divisibles por una hora (por ejemplo, en Australia se utiliza un desplazamiento de 30 minutos). El paquete ffi ha agregado soporte para el mecanismo de asignación de memoria arena, que libera recursos automáticamente. El paquete ffigen ha agregado la capacidad de generar definiciones typedef de tipos Dart desde el lenguaje C.
  • Los 250 paquetes más populares del repositorio pub.dev y el 94% de los 1000 principales se han cambiado al modo de "seguridad nula", que evitará fallas causadas por intentos de usar variables cuyo valor no está definido y se establece en "Nulo". " " El modo implica que las variables no pueden tener valores nulos a menos que se les asigne explícitamente el valor nulo. El modo respeta estrictamente los tipos de variables, lo que permite al compilador aplicar optimizaciones adicionales. El cumplimiento del tipo se verifica en el momento de la compilación; por ejemplo, si intenta asignar el valor "Nulo" a una variable con un tipo que no implica un estado indefinido, como "int", se mostrará un error.
  • Se proponen conjuntos unificados de reglas para el analizador de código (linter), que brindan soporte simultáneo para verificar el cumplimiento de las pautas de estilo de código para Dart y el marco Flutter. Por razones históricas, las reglas de codificación para Flutter y Dart eran diferentes; además, para Dart se utilizaban dos conjuntos de reglas: las pedantes de Google y las reglas de la comunidad de desarrolladores de Dart. Dart 2.14 introduce un nuevo conjunto común de reglas para linter, que se decidió utilizar de forma predeterminada en nuevos proyectos de Dart y en el SDK de Flutter. El conjunto incluye reglas básicas (paquete lints/core.yaml), reglas adicionales recomendadas (lints/recommended.yaml) y recomendaciones específicas de Flutter (flutter_lints/flutter.yaml). Se recomienda a los usuarios de reglas pedantes que cambien y utilicen un nuevo estilo de codificación basado en las recomendaciones de la documentación de Dart.
  • En el formateador, se han realizado optimizaciones en el formato de bloques de código en cascada, lo que puede mejorar significativamente el rendimiento del formateo y evitar interpretaciones ambiguas de la propiedad de los elementos de expresión. Por ejemplo, llamar a "..doIt" en la expresión "var resultado = errorState? foo : bad..doIt()” no concierne a la parte condicional del bloque “malo”, sino a la expresión completa, por lo que al formatearla ahora se separa: var result = errorState ? foo: malo ..hazlo();
  • Se ha agregado compatibilidad con los procesadores Apple M1 (Silicon) al SDK, lo que implica tanto la capacidad de ejecutar Dart VM, utilidades y componentes SDK en sistemas con un procesador Apple Silicon como compatibilidad para compilar archivos ejecutables para estos chips.
  • El comando "dart pub" agregó soporte para un nuevo archivo de servicio ".pubignore", que le permite definir una lista de archivos que se omitirán al publicar un paquete en el repositorio pub.dev. Estas configuraciones no interfieren con la lista de ignorados “.gitignore” (en algunas situaciones, pub.dev puede querer evitar la transferencia de archivos necesarios en Git, por ejemplo, scripts internos utilizados durante el desarrollo).
  • Se ha trabajado para mejorar el rendimiento del comando "dart test", que ahora no requiere volver a compilar las pruebas después de cambiar pubspec si el número de versión no ha cambiado.
  • Se ha suspendido la compatibilidad con la compilación en el modo de compatibilidad ECMAScript 5 (el cambio resultará en la pérdida de compatibilidad con el navegador IE11).
  • Las utilidades individuales stagehand, dartfmt y dart2native han sido declaradas obsoletas y reemplazadas por comandos integrados llamados a través de la utilidad dart.
  • El mecanismo de extensiones nativas de VM ha quedado obsoleto. Para llamar al código nativo desde el código Dart, se recomienda utilizar la nueva Dart FFI (Foreign Function Interface).

Al mismo tiempo, se presentó un importante lanzamiento del framework de interfaz de usuario Flutter 2.5, que se considera una alternativa a React Native y permite, a partir de una única base de código, lanzar aplicaciones para iOS, Android, Windows, macOS y Plataformas Linux, así como crear aplicaciones para ejecutar en navegadores. Sobre la base de Flutter se construye un shell personalizado para el sistema operativo microkernel Fuchsia desarrollado por Google.

La parte principal del código Flutter está implementada en el lenguaje Dart y el motor de ejecución para ejecutar aplicaciones está escrito en C++. Al desarrollar aplicaciones, además del lenguaje Dart nativo de Flutter, puede usar la interfaz de función externa de Dart para llamar al código C/C++. Se logra un alto rendimiento de ejecución compilando aplicaciones en código nativo para las plataformas de destino. En este caso, no es necesario volver a compilar el programa después de cada cambio: Dart proporciona un modo de recarga en caliente que le permite realizar cambios en una aplicación en ejecución y evaluar inmediatamente el resultado.

Cambios importantes en Flutter 2.5:

  • Realicé importantes optimizaciones de rendimiento. En las plataformas iOS y macOS, se implementó la precompilación de sombreadores para la API de gráficos Metal. Eficiencia mejorada en el procesamiento de eventos asincrónicos. Se resolvió un problema con retrasos cuando el recolector de basura recupera memoria de imágenes no utilizadas (por ejemplo, durante la reproducción de un GIF animado de 20 segundos, la cantidad de operaciones de recolección de basura se redujo de 400 a 4. Retrasos al pasar mensajes entre Dart y Objective- C/Swift se redujo al 50% (iOS) o Java/Kotlin (Android). Se agregó soporte de compilación nativa para sistemas basados ​​en el chip Apple Silicon.
    Lenguaje Dart 2.14 y marco Flutter 2.5 disponibles
  • Para la plataforma Android, se ha establecido soporte para ejecutar aplicaciones en modo de pantalla completa. Continuó la implementación del concepto de diseño “Material You”, presentado como una opción de Material Design de próxima generación. Se agregó un nuevo estado MaterialState.scrolledUnder, se implementó la visualización dinámica de las barras de desplazamiento al cambiar el tamaño y se propuso una nueva interfaz para mostrar carteles de notificación.
  • Las capacidades del complemento de la cámara se han ampliado significativamente al agregar herramientas para controlar el enfoque automático, la exposición, el flash, el zoom, la reducción de ruido y la resolución.
  • Las herramientas de desarrollo (DevTools) se han mejorado para incluir un modo de inspección de widgets actualizado, así como herramientas para identificar retrasos en el procesamiento y realizar un seguimiento de la compilación de sombreadores.
    Lenguaje Dart 2.14 y marco Flutter 2.5 disponibles
  • Complementos mejorados para Visual Studio Code e IntelliJ/Android Studio.

Fuente: opennet.ru

Añadir un comentario