A Google acaba de lançar a versão 1.4 da sua linguagem de programação open source para web chamada Dart. A versão possui uma nova ferramenta de análise de performance chamada Observatory e referências ServerSocket, uma funcionalidade experimental do dart:io.
Na documentação de lançamento da ferramenta, a Google comenta que o Observatory "permite que você olhe sob demanda dentro de uma máquina virtual (VM) Dart em execução e tenha uma visão em tempo real dos dados". Dentre as funcionalidades do Observatory está a habilidade de determinar onde sua aplicação está gastando mais tempo, examinar a memória alocada e ver quais linhas de código foram executadas.
Kevin Moore, commiter (contribuidor) do Dart, anunciou o Observatory no seu artigo Dart 1.4 Traz Grande Visibilidade para Execução de Aplicações, e comenta que o Observatory vai "continuar evoluindo e melhorando em futuras versões". Moore fala que os commiters já estão olhando para o suporte a dispositivos móveis que vai permitir que os usuários depurem uma aplicação Dart rodando em smartphones, e trabalhando ativamente para suportar VMs gerenciadas na nuvem.
Os feedbacks da nova versão vindos da comunidade de desenvolvimento Dart "Dartisan" celebram as novidades. Róbert Tóth, desenvolvedor do DartRocket, engine de jogos HTML5, falou:
Eu acabo de utilizar a funcionalidade no meu jogo de exemplo e ela realmente me ajudou a ver como o jogo estava sendo executado, embora eu acredite que a necessidade de fazer refresh manual seja algo incômodo. Nunca fui muito adepto a fazer profiling (análise de execução de um software) de aplicações, mas achei essa ferramenta simples e realmente útil.
Novos comentários vieram de Dan Schultz, desenvolvedor líder do Mixbook. O Mixbook apareceu nos canais de notícia em novembro do ano passado com o anúncio que a empresa estava rejeitando JavaScript e TypeScript e adotando o Dart, de forma a potencializar sua ferramenta de criação de álbuns de fotos. Schultz falou:
Esse é um excelente começo. Mas, para realmente ser útil, a ferramenta realmente precisa suportar diagnóstico de leaks de memória e profiling de quantidade de execuções de funções. Na minha experiência, leaks de memória em Dart são mais comuns de acontecer entre observadores, streams e iteráveis "lazy". Qualquer ferramenta que possa ajudar a mitigar esses problemas seria realmente útil.
John McCutchan, a força direcionadora responsável pelo Observatory, falou à InfoQ
No futuro, nós vamos fornecer informações detalhadas para aplicações servidoras, por exemplo, quantas conexões HTTP estão sendo usadas no momento e quanta banda de rede cada uma está individualmente utilizando. Vamos fornecer mais opções para programas se conectarem ao Observatory e mostrar dados customizados. No geral, vamos continuar a expandir o que pode ser analisado de um programa Dart pelo Observatory.
Além das ferramentas de análise de performance, a versão 1.4 também traz consigo outras atualizações. Falando pro InfoQ, Moore falou que referências ServerSocket, ainda experimental, no dart:io tem o potencial de dramaticamente melhorar o desempenho das aplicações.
Ao discutir sobre a funcionalidade no grupo de discussão Dart Misc no dartlang.org, Anders Johnsen afirmou que ela ainda está em estágio "muito experimental", mas que ela é "uma nova funcionalidade muito importante para fazer "isolates" (mecanismo de concorrência) serem mais valiosos no contexto do dart:io". Ele comentou:
Uma referência ServerSocket é obtida de um ServerSocket e pode ser transferidas para outros isolates. Por essa referência, é possível clonar o ServerSocket original que vai compartilhar o socket nativo. Isso torna possível aceitar conexões de entrada em múltiplos isolates na mesma interface de rede.
A Google também inclui na versão 1.4 atualizações para a ferramenta Dart Editor. O release notes da versão menciona que a visão "Expressions" do editor agora funciona para aplicativos de linhas de comando durante a depuração. Outras melhorias incluem suporte para refatoração de renomeação no editor HTML, uma autocorreção para trocar o operador 'new' para criação de instâncias pelo 'const' quando constantes são esperadas e a configuração de execução Pub Serve agora suporta depuração. A atualização também traz consigo assistentes de código para diretivas de atributos Angular.
No núcleo do SDK, tanto o dart:convert quanto o dart:collection tiveram atualizações. As notas de atualização do primeiro falam que "o JsonEncoder agora possui um construtor withIndent para criar saídas mais bonitas", enquanto o dart:collection inclui "novas classes Map - MapBase, UnmodifiableMapBase, MapView e UnmodifiableMapView".
Moore fala que o time Dart dá boas vindas às contribuções, e que Dart é um "projeto comunitário". Leitores do InfoQ que desejam contribuir para o Dart podem ajudar a reportar bugs e responder questões no StackOverflow, assim como contribuir com código. Mais informações sobre como contribuir com o Dart na wiki do projeto.