Linguagem Dart 2.14 e estrutura Flutter 2.5 disponíveis

O Google publicou o lançamento da linguagem de programação Dart 2.14, que continua o desenvolvimento de um ramo Dart 2 radicalmente redesenhado, que difere da versão original da linguagem Dart no uso de digitação estática forte (os tipos podem ser inferidos automaticamente, especificando assim tipos não são necessários, mas a digitação dinâmica não é mais usada e no cálculo inicial o tipo é atribuído à variável e a verificação estrita de tipo é aplicada posteriormente).

Recursos da linguagem Dart:

  • Sintaxe familiar e fácil de aprender, natural para programadores JavaScript, C e Java.
  • Garantindo inicialização rápida e alto desempenho para todos os navegadores modernos e vários tipos de ambientes, desde dispositivos portáteis até servidores poderosos.
  • A capacidade de definir classes e interfaces que permitem o encapsulamento e a reutilização de métodos e dados existentes.
  • A especificação de tipos facilita a depuração e a identificação de erros, torna o código mais claro e legível e simplifica sua modificação e análise por desenvolvedores terceiros.
  • Os tipos suportados incluem: vários tipos de hashes, matrizes e listas, filas, tipos numéricos e de string, tipos para determinar data e hora, expressões regulares (RegExp). É possível criar seus próprios tipos.
  • Para organizar a execução paralela, propõe-se a utilização de classes com o atributo isolado, cujo código é executado inteiramente em espaço isolado em uma área de memória separada, interagindo com o processo principal por meio do envio de mensagens.
  • Suporte para uso de bibliotecas que simplificam o suporte e depuração de grandes projetos web. Implementações de funções de terceiros podem ser incluídas na forma de bibliotecas compartilhadas. Os aplicativos podem ser divididos em partes e confiar o desenvolvimento de cada parte a uma equipe separada de programadores.
  • Um conjunto de ferramentas prontas para apoiar o desenvolvimento na linguagem Dart, incluindo a implementação de desenvolvimento dinâmico e ferramentas de depuração com correção de código em tempo real (“editar e continuar”).
  • Para simplificar o desenvolvimento na linguagem Dart, ele vem com um SDK, um gerenciador de pacotes pub, um analisador de código estático dart_analyzer, um conjunto de bibliotecas, um ambiente de desenvolvimento integrado DartPad e plug-ins habilitados para Dart para IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 e Vim.
  • Pacotes adicionais com bibliotecas e utilitários são distribuídos através do repositório pub, que possui mais de 20 mil pacotes.

Principais mudanças na versão Dart 2.14:

  • Foi adicionado um novo operador de deslocamento triplo (>>>), que, ao contrário do operador “>>”, realiza não uma mudança aritmética, mas uma mudança lógica que funciona sem levar em conta o bit de sinal (a mudança é realizada sem dividir em números positivos e negativos).
  • Removida a restrição sobre argumentos de tipo que impedia que tipos de funções genéricas fossem usados ​​como argumento de tipo. Por exemplo, agora você pode especificar: late List (T)>idFunctions; var retorno de chamada = [ (valor T) => valor]; Função S tardia (T)>(S) f;
  • Permitir especificar argumentos com tipos em anotações como @Deprecated. Por exemplo, agora você pode especificar: @TypeHelper (42, "O significado")
  • Os métodos estáticos hash, hashAll e hashAllUnordered foram adicionados à biblioteca padrão (núcleo) na classe Object. A classe DateTime melhorou o tratamento da hora local ao converter relógios entre o horário de verão e o horário de inverno que não são divisíveis por uma hora (por exemplo, na Austrália é usado um deslocamento de 30 minutos). O pacote ffi adicionou suporte para o mecanismo de alocação de memória arena, que libera recursos automaticamente. O pacote ffigen adicionou a capacidade de gerar definições typedef de tipos Dart a partir da linguagem C.
  • Os 250 pacotes mais populares do repositório pub.dev e 94% dos 1000 principais passaram a usar o modo “segurança nula”, que evitará travamentos causados ​​por tentativas de uso de variáveis ​​cujo valor é indefinido e definido como “Nulo ” " O modo implica que as variáveis ​​​​não podem ter valores nulos, a menos que sejam explicitamente atribuídos ao valor nulo. O modo respeita estritamente os tipos de variáveis, o que permite ao compilador aplicar otimizações adicionais. A conformidade de tipo é verificada em tempo de compilação, por exemplo, se você tentar atribuir o valor “Nulo” a uma variável com um tipo que não implique estado indefinido, como “int”, um erro será exibido.
  • São propostos conjuntos unificados de regras para o analisador de código (linter), fornecendo suporte simultâneo para verificação da conformidade com as diretrizes de estilo de código do Dart e do framework Flutter. Por razões históricas, as regras de codificação para Flutter e Dart eram diferentes, além disso, para Dart havia dois conjuntos de regras em uso - as pedantes do Google e as regras da comunidade de desenvolvedores Dart. O Dart 2.14 introduz um novo conjunto comum de regras para linter, que foi decidido para ser usado por padrão em novos projetos Dart e no Flutter SDK. O conjunto inclui regras básicas (pacote lints/core.yaml), regras adicionais recomendadas (lints/recommended.yaml) e recomendações específicas do Flutter (flutter_lints/flutter.yaml). Os usuários de regras pedantes são aconselhados a mudar para um novo estilo de codificação baseado nas recomendações da documentação do Dart.
  • No formatador, foram feitas otimizações na formatação de blocos de código em cascata, o que pode melhorar significativamente o desempenho da formatação e evitar interpretações ambíguas da propriedade dos elementos de expressão. Por exemplo, chamar "..doIt" na expressão "var result = errorState ? foo : bad..doIt()” não diz respeito à parte condicional do bloco “bad”, mas sim a toda a expressão, portanto ao formatar ela agora fica separada: var result = errorState ? foo: ruim ..doIt();
  • O suporte para processadores Apple M1 (Silicon) foi adicionado ao SDK, implicando na capacidade de executar Dart VM, utilitários e componentes SDK em sistemas com um processador Apple Silicon, e suporte para compilar arquivos executáveis ​​​​para esses chips.
  • O comando "dart pub" adicionou suporte para um novo arquivo de serviço ".pubignore", que permite definir uma lista de arquivos que serão ignorados ao publicar um pacote no repositório pub.dev. Essas configurações não interferem na lista de ignorados “.gitignore” (em algumas situações, pub.dev pode querer evitar a transferência de arquivos necessários no Git, por exemplo, scripts internos usados ​​durante o desenvolvimento).
  • Foram feitos trabalhos para melhorar o desempenho do comando “dart test”, que agora não requer a recompilação de testes após a alteração do pubspec se o número da versão não tiver sido alterado.
  • O suporte para compilação no modo de compatibilidade ECMAScript 5 foi descontinuado (a mudança resultará na perda de compatibilidade com o navegador IE11).
  • Os utilitários individuais stagehand, dartfmt e dart2native foram declarados obsoletos, substituídos por comandos integrados chamados através do utilitário dart.
  • O mecanismo VM Native Extensions foi descontinuado. Para chamar o código nativo do código Dart, é recomendado usar o novo Dart FFI (Foreign Function Interface).

Paralelamente, foi apresentado um lançamento significativo do framework de interface de usuário Flutter 2.5, que é considerado uma alternativa ao React Native e permite, com base em uma base de código, lançar aplicativos para iOS, Android, Windows, macOS e Linux. plataformas, bem como criar aplicativos para rodar em navegadores. Um shell personalizado para o sistema operacional microkernel Fuchsia desenvolvido pelo Google é construído com base no Flutter.

A parte principal do código Flutter é implementada na linguagem Dart, e o mecanismo de tempo de execução para execução de aplicativos é escrito em C++. Ao desenvolver aplicativos, além da linguagem Dart nativa do Flutter, você pode usar a interface Dart Foreign Function para chamar código C/C++. O alto desempenho de execução é obtido compilando aplicativos em código nativo para plataformas de destino. Nesse caso, o programa não precisa ser recompilado após cada alteração - o Dart fornece um modo de recarga a quente que permite fazer alterações em um aplicativo em execução e avaliar imediatamente o resultado.

Principais mudanças no Flutter 2.5:

  • Fiz otimizações significativas de desempenho. Nas plataformas iOS e macOS, foi implementada a pré-compilação de shaders para a API gráfica Metal. Maior eficiência no processamento de eventos assíncronos. Resolvido um problema com atrasos quando o coletor de lixo recupera memória de imagens não utilizadas (por exemplo, durante a reprodução de um GIF animado de 20 segundos, o número de operações de coleta de lixo foi reduzido de 400 para 4. Atrasos ao passar mensagens entre Dart e Objective- C/Swift foi reduzido para 50% (iOS) ou Java/Kotlin (Android). Adicionado suporte de construção nativa para sistemas baseados no chip Apple Silicon.
    Linguagem Dart 2.14 e estrutura Flutter 2.5 disponíveis
  • Para a plataforma Android, foi estabelecido suporte para execução de aplicativos em modo de tela inteira. A implementação do conceito de design “Material You”, apresentado como uma opção de Material Design de próxima geração, continuou. Adicionado um novo estado MaterialState.scrolledUnder, implementada a exibição dinâmica de barras de rolagem ao redimensionar e proposta uma nova interface para exibição de banners de notificação.
  • Os recursos do plug-in da câmera foram significativamente expandidos, adicionando ferramentas para controlar foco automático, exposição, flash, zoom, redução de ruído e resolução.
  • As ferramentas do desenvolvedor (DevTools) foram aprimoradas para incluir um modo de inspeção de widget atualizado, bem como ferramentas para identificar atrasos na renderização e rastrear a compilação de shaders.
    Linguagem Dart 2.14 e estrutura Flutter 2.5 disponíveis
  • Plug-ins aprimorados para Visual Studio Code e IntelliJ/Android Studio.

Fonte: opennet.ru

Adicionar um comentário