Idioma Dart 2.14 e marco Flutter 2.5 dispoñibles

Google publicou o lanzamento da linguaxe de programación Dart 2.14, que continúa o desenvolvemento dunha rama radicalmente redeseñada de Dart 2, que se diferencia da versión orixinal da linguaxe Dart polo uso dunha forte dixitación estática (os tipos pódense inferir automaticamente, polo que non é necesario especificar tipos, pero xa non se utiliza a dixitación dinámica e inicialmente calcúlase o tipo asígnase á variable e aplícase posteriormente unha estrita comprobación de tipos).

Características da linguaxe Dart:

  • Sintaxe familiar e fácil de aprender, natural para programadores de JavaScript, C e Java.
  • Asegurando un lanzamento rápido e un alto rendemento para todos os navegadores web modernos e varios tipos de ambientes, desde dispositivos portátiles ata servidores potentes.
  • A capacidade de definir clases e interfaces que permitan encapsular e reutilizar métodos e datos existentes.
  • Especificar tipos facilita a depuración e identificación de erros, fai que o código sexa máis claro e lexible e simplifica a súa modificación e análise por parte de desenvolvedores terceiros.
  • Os tipos admitidos inclúen: varios tipos de hash, matrices e listas, colas, tipos numéricos e de cadea, tipos para determinar a data e a hora, expresións regulares (RegExp). É posible crear os seus propios tipos.
  • Para organizar a execución paralela, proponse utilizar clases co atributo isolate, cuxo código se executa enteiramente nun espazo illado nunha área de memoria separada, interactuando co proceso principal mediante o envío de mensaxes.
  • Soporte para o uso de bibliotecas que simplifican o soporte e a depuración de grandes proxectos web. As implementacións de funcións de terceiros pódense incluír en forma de bibliotecas compartidas. As aplicacións pódense dividir en partes e confiar o desenvolvemento de cada parte a un equipo separado de programadores.
  • Un conxunto de ferramentas preparadas para apoiar o desenvolvemento na linguaxe Dart, incluíndo a implementación de ferramentas de desenvolvemento dinámico e depuración con corrección de código sobre a marcha ("edit-and-continue").
  • Para simplificar o desenvolvemento na linguaxe Dart, inclúe un SDK, un pub xestor de paquetes, un analizador de código estático dart_analyzer, un conxunto de bibliotecas, un ambiente de desenvolvemento integrado DartPad e complementos habilitados para Dart para IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 e Vim.
  • Paquetes adicionais con bibliotecas e utilidades distribúense a través do repositorio pub, que ten máis de 20 mil paquetes.

Principais cambios na versión de Dart 2.14:

  • Engadiuse un novo operador de triple desprazamento (>>>) que, a diferenza do operador “>>”, non realiza unha aritmética, senón un desprazamento lóxico que funciona sen ter en conta o bit de signo (o desprazamento realízase sen dividir en números positivos e negativos).
  • Eliminouse a restrición dos argumentos de tipo que impedía que os tipos de funcións xenéricas se usaran como argumento de tipo. Por exemplo, agora pode especificar: Lista tarde (T)>idFunctions; var callback = [ (valor T) => valor]; late S Función (T)>(S) f;
  • Permite especificar argumentos con tipos en anotacións como @Deprecated. Por exemplo, agora pode especificar: @TypeHelper (42, "O significado")
  • Os métodos estáticos hash, hashAll e hashAllUnordered foron engadidos á biblioteca estándar (núcleo) na clase Object. A clase DateTime mellorou o manexo da hora local ao converter os reloxos entre o horario de verán e o de inverno que non son divisibles por unha hora (por exemplo, en Australia úsase unha compensación de 30 minutos). O paquete ffi engadiu soporte para o mecanismo de asignación de memoria arena, que libera recursos automaticamente. O paquete ffigen engadiu a capacidade de xerar definicións typedef de tipos Dart a partir da linguaxe C.
  • Os 250 paquetes máis populares do repositorio pub.dev e o 94% dos 1000 principais pasáronse ao modo de "seguridade nula", o que evitará fallos causados ​​por intentos de usar variables cuxo valor non está definido e definido como "Nulo". " " O modo implica que as variables non poden ter valores nulos a menos que se lles asignen explícitamente o valor nulo. O modo respecta estrictamente os tipos de variables, o que permite ao compilador aplicar optimizacións adicionais. O cumprimento do tipo compróbase no momento da compilación, por exemplo, se tenta asignar o valor "Null" a unha variable cun tipo que non implique estado indefinido, como "int", amosarase un erro.
  • Propóñense conxuntos unificados de regras para o analizador de código (linter), que proporcionan soporte simultáneo para comprobar o cumprimento das directrices de estilo de código para Dart e o framework Flutter. Por razóns históricas, as regras de codificación para Flutter e Dart eran diferentes, ademais, para Dart había dous conxuntos de regras en uso: as pedantes de Google e as regras da comunidade de desenvolvedores de Dart. Dart 2.14 introduce un novo conxunto común de regras para linter, que se decide que se utilizará por defecto en novos proxectos de Dart e no SDK de Flutter. O conxunto inclúe regras básicas (paquete lints/core.yaml), regras adicionais recomendadas (lints/recommended.yaml) e recomendacións específicas de Flutter (flutter_lints/flutter.yaml). Recoméndase aos usuarios de regras pedantes que cambien a usar un novo estilo de codificación baseado nas recomendacións da documentación de Dart.
  • No formateador, realizáronse optimizacións no formato de bloques de código en cascada, o que pode mellorar significativamente o rendemento do formato e evitar a interpretación ambigua da propiedade dos elementos de expresión. Por exemplo, chamando a "..doIt" na expresión "var result = errorState ? foo : bad..doIt()” non se refire á parte condicional do bloque “mal”, senón a toda a expresión, polo que ao formatear agora está separada: var result = errorState ? foo : malo ..doIt();
  • Engadiuse ao SDK soporte para procesadores Apple M1 (Silicon), o que implica tanto a posibilidade de executar Dart VM, utilidades e compoñentes do SDK en sistemas cun procesador Apple Silicon, como soporte para compilar ficheiros executables para estes chips.
  • O comando "dart pub" engadiu soporte para un novo ficheiro de servizo ".pubignore", que lle permite definir unha lista de ficheiros que se omitirán ao publicar un paquete no repositorio pub.dev. Esta configuración non interfire coa lista de ignorados ".gitignore" (nalgunhas situacións, pub.dev pode querer evitar a transferencia de ficheiros que son necesarios en Git, por exemplo, os scripts internos utilizados durante o desenvolvemento).
  • Traballouse para mellorar o rendemento do comando "dart test", que agora non require recompilar probas despois de cambiar pubspec se o número de versión non cambiou.
  • O soporte para a compilación no modo de compatibilidade ECMAScript 5 descontinuouse (o cambio provocará a perda da compatibilidade co navegador IE11).
  • As utilidades individuais stagehand, dartfmt e dart2native foron declaradas obsoletas, substituídas por comandos integrados chamados a través da utilidade dart.
  • O mecanismo de extensións nativas de VM quedou en desuso. Para chamar ao código nativo desde o código Dart, recoméndase utilizar a nova Dart FFI (Foreign Function Interface).

Ao mesmo tempo, presentouse unha versión significativa do framework de interface de usuario Flutter 2.5, que se considera unha alternativa a React Native e que permite, baseándose nunha base de código, lanzar aplicacións para iOS, Android, Windows, macOS e Linux. plataformas, así como crear aplicacións para executar en navegadores. Un shell personalizado para o sistema operativo microkernel Fuchsia desenvolvido por Google está construído sobre a base de Flutter.

A parte principal do código Flutter está implementada na linguaxe Dart e o motor de execución para executar aplicacións está escrito en C++. Ao desenvolver aplicacións, ademais da linguaxe Dart nativa de Flutter, pode usar a interface da función externa de Dart para chamar código C/C++. Conséguese un alto rendemento de execución compilando aplicacións en código nativo para plataformas de destino. Neste caso, non é necesario recompilar o programa despois de cada cambio - Dart ofrece un modo de recarga en quente que lle permite facer cambios nunha aplicación en execución e avaliar inmediatamente o resultado.

Principais cambios en Flutter 2.5:

  • Optimizacións significativas de rendemento. Nas plataformas iOS e macOS, implementouse a compilación previa de sombreadores para a API de gráficos Metal. Mellora da eficiencia do procesamento de eventos asíncronos. Resolveuse un problema con atrasos cando o colector de lixo recupera a memoria das imaxes non utilizadas (por exemplo, durante a reprodución dun GIF animado de 20 segundos, o número de operacións de recollida de lixo reduciuse de 400 a 4. Atrasos ao pasar mensaxes entre Dart e Objective- C/Swift reducíronse ao 50% (iOS) ou Java/Kotlin (Android) Engadiuse soporte nativo de compilación para sistemas baseados no chip Apple Silicon.
    Idioma Dart 2.14 e marco Flutter 2.5 dispoñibles
  • Para a plataforma Android, estableceuse a compatibilidade para executar aplicacións en modo de pantalla completa. Continuou a implementación do concepto de deseño "Material You", presentado como unha opción de Deseño de Material de próxima xeración. Engadiu un novo estado MaterialState.scrolledUnder, implementou a visualización dinámica das barras de desprazamento ao cambiar o tamaño e propúxose unha nova interface para mostrar pancartas de notificación.
  • Ampliáronse significativamente as capacidades do complemento da cámara, engadindo ferramentas para controlar o enfoque automático, a exposición, o flash, o zoom, a redución de ruído e a resolución.
  • Melloráronse as ferramentas para programadores (DevTools) para incluír un modo de inspección de widgets actualizado, así como ferramentas para identificar atrasos de renderización e compilación de sombreadores de seguimento.
    Idioma Dart 2.14 e marco Flutter 2.5 dispoñibles
  • Complementos mellorados para Visual Studio Code e IntelliJ/Android Studio.

Fonte: opennet.ru

Engadir un comentario