A Mozilla lançou o Firefox 31 incluindo a implementação de novos recursos do ECMAScript, detecção de malwares e novas funcionalidades para desenvolvedores de jogos.
O ECMAScript 6 é a próxima versão do padrão ECMAScript, apelidado de "Harmony" ou "ES.next". No artigo Firefox 31 para desenvolvedores, o time da Mozilla destaca algumas atualizações do JavaScript para compatibilidade com os novos recursos do ECMAScript 6:
- Novo método de Array: O método Array.prototype.fill() preenche todos os elementos de um array, de um índice inicial ao final, com um valor estático.
- Nova função em Math: Math.clz32() retorna o número de bits que representam zeros à esquerda na representação binária de um número em 32-bits.
- Novo método de String: String.prototype.normalize() está disponível no Firefox Desktop e retorna a forma normalizada Unicode de uma determinada string (se o valor não for uma string, ele será primeiro convertido para string).
- Novo método de Object: Object.setPrototypeOf() define o prototype (a propriedade interna [[Prototype]]) de um objeto específico para outro objeto ou null (nulo).
- Novas constantes em Number: Number.MAX_SAFE_INTEGER representa o maior inteiro seguro em JavaScript enquanto Number.MIN_SAFE_INTEGER representa o menor inteiro seguro.
A lista completa dos recursos atualmente suportados no Firefox pode ser encontrada no site da Mozilla.
Além das atualizações no JavaScript, o novo Firefox 31 também dispõe de ferramentas para desenvolvedores, incluindo a exibição por padrão de avisos de JavaScript no console web (web console), o comando "cópia como cURL (copy as cURL)" no gerenciador de rede (network monitor), que "copia a requisição para a área de trabalho como um comando cURL, para que você possa executá-la da linha de comando" e a "opção para habilitar a persistência dos logs do gerenciador de rede".
A Mozilla explica a opção para habilitar a persistência dos logs do gerenciador de rede no Firefox 31 para desenvolvedores.
Por padrão, o gerenciador de rede apresenta a lista de todas as requisições de rede realizadas durante o carregamento da página. Cada requisição é apresentada em sua própria linha.
O gerenciador de rede é reiniciado a cada vez que você navega para uma nova página ou recarrega a página atual. A partir do Firefox 31, você pode mudar esse comportamento marcando a opção "Habilitar a persistência dos logs (enable persistent logs)" nas configurações do browser.
O Firefox 31 também traz o seu novo detector de malwares instalado por padrão. Uma visão geral sobre essa funcionalidade está disponível no MozillaWiki:
O detector de malwares executa pesquisas locais sempre que um arquivo binário é baixado. Se um resultado local não for encontrado, o detector pode realizar uma pesquisa remota (apenas no ambiente Windows).
Quando é feito o download de um arquivo binário, o detector extrai metadados sobre o arquivo, incluindo:
- A URL de destino de onde o arquivo foi baixado, sua URL de referência e quaisquer URLs na cadeia de redirecionamento
- O hash SHA-256 do conteúdo do arquivo
- Qualquer informação de verificação de certificado obtido por meio das APIs do Windows Authenticode
- O tamanho do arquivo em bytes
- O nome do arquivo sugerido para download
Usando estes metadados, o detector realiza uma pesquisa local em uma "blocklist" (lista de bloqueio). Se o download for permitido, ele pesquisa uma "allow list"(lista de habilitados). Se o binário for assinado, então a informação de sua assinatura é verificada na "allow list".
Se um registro na "blocklist" for encontrado para o download, o detector não deve salvar o arquivo no disco. Se um registro for encontrado na "allow list", o detector pode tratar o binário como confiável e desconsiderar a pesquisa remota. Se nenhum registro for encontrado e o binário não estiver assinado, o detector pode iniciar uma pesquisa remota para o serviço de reputação de aplicativos.
O recurso de detecção de malwares do Firefox 31 não passou despercebido pela comunidade de desenvolvedores. No artigo do Slashdot Firefox 31 Released, um usuário anônimo comentou: "o 'bloqueio de malware no download de arquivos' é uma grave invasão de privacidade. Ele funciona enviando a URL de quase todos os arquivos baixados para o Google".
No Hacker News, um sentimento semelhante foi observado na discussão Firefox 31.
O usuário TheCraiggers comentou:
Eu estou preocupado com as implicações na privacidade. Especialmente levando em conta que o recurso está escondido, e as únicas duas formas de desligá-lo envolvem entrar em about:config, que a maioria das pessoas nem sequer sabe que existe. Eu nem saberia que ele está fazendo isso se não tivesse lido o log de alterações da versão.
Sid Stamm, gerente sênior de engenharia de segurança e privacidade na Mozilla publicou um artigo intitulado "Melhorando a Detecção de Malwares no Firefox" sobre o recurso em 23 de Julho e as instruções para desligar a detecção de malware são detalhadas no MozillaWiki.
Stamm disse a InfoQ:
Toda vez que a navegação segura envia dados de volta ao Google, como informações sobre uma página de phishing suspeita ou um arquivo malicioso, esta informação é utilizada apenas para marcar atividade maliciosa e não é utilizada em nenhum outro local no Google. Após duas semanas, quaisquer informações associadas, tais como seu endereço de IP, são descartadas, e só a própria URL é mantida.
Preocupações com privacidade à parte, o Firefox 31 o que o time Mozilla Hack descreveu no artigo "Recursos para Desenvolvedores de Jogos em HTML5" como "novas funcionalidades que irão ajudar desenvolvedores de jogos em HTML5 a codificar e depurar jogos sofisticados".
Entre as diversas melhorias das Ferramentas para Desenvolvedores Firefox (Firefox Developer Tools) estão atualizações do depurador (debugger) JavaScript, editor de estilos (style editor), inspetor de página (page inspector), scratchpad, profiler, gerenciador de rede (network monitor) e console web (web console).
Outras melhorias notáveis compreendem a inclusão do depurador de canvas (Canvas Debugger) para o browser. O time Mozilla Hack disse:
O depurador de canvas permite rastrear todas as chamadas no contexto da tela que são usadas para gerar um quadro. As chamadas são codificadas por cores para ações específicas como desenhar elementos ou utilizar um shader específico para o programa.
O depurador é útil não somente no desenvolvimento de jogos baseados em WebGL, mas também pode ser usado para a depuração de um jogo baseado em Canvas 2D.
Duas questões muito comuns que foram relatadas quando utilizado o depurador de canvas são as animações geradas utilizando setInterval ao invés de requestAnimationFrame e a inspeção de elementos do canvas em um iframe.
Para mais informações sobre o depurador de canvas, os desenvolvedores são encorajados a ler o artigo "Apresentando o Depurador de Canvas nas Ferramentas para Desenvolvedores Firefox (Introducing the Canvas Debugger in Firefox Developer Tools)". Para uma lista completa das mudanças no Firefox 31, usuários e desenvolvedores devem visitar as notas de versão.
Existem muitas formas dos leitores do InfoQ contribuírem para o Firefox e a Mozilla recebe com boas vindas novatos que queiram fazer parte do projeto. Uma lista completa de opções está disponível na "Rede de Desenvolvedores Mozilla (Mozilla Developer Network)" onde também está publicado um conjunto de guias para contribuição.