Lançamento do Chrome 74

A empresa Google apresentou lançamento do navegador web Chrome 74. Ao mesmo tempo disponível lançamento estável de um projeto de código aberto Chromium, que serve como base para o Chrome. O navegador Chrome caracteriza-se uso de logotipos do Google, com a possibilidade de carregar o módulo Flash sob demanda, a presença de um sistema de envio de notificações em caso de falha, módulos para reprodução de conteúdo de vídeo protegido, um sistema de instalação automática de atualizações e a transmissão durante a busca de parâmetros RLZ. A próxima versão do Chrome 75 está prevista para 4 de junho.

Principais mudanças em Chrome 74:

  • Na ocorrência do evento onUnload, que é chamado ao fechar a página, agora é proibido exibir janelas pop-up (a chamada window.open() é bloqueada), o que ajudará a proteger os usuários de abrir forçadamente páginas publicitárias após o fechamento de sites duvidosos;
  • No motor JavaScript são implementadas apareceu um novo modo JIT-less (flag "--jitless"), permitindo a execução de JavaScript sem o uso de JIT (utilizando apenas o interpretador) e sem alocar memória executável durante a execução do código. Desativar o JIT pode ser útil para aumentar a segurança ao lidar com aplicativos web potencialmente perigosos, além de garantir a compilação em plataformas que proíbem o uso de JIT (por exemplo, em iOS, em algumas Smart TVs e consoles de jogos). Com o JIT desativado, o desempenho da execução de JavaScript diminui em 40% no teste Speedometer 2.0 e em 80% no teste Web Tooling Benchmark, mas ao simular o uso do YouTube, a diminuição de desempenho foi apenas de 6%. O consumo de memória, nesse caso, é reduzido ligeiramente, em apenas 1.7%;
  • No V8 também foram propostas uma série de novas otimizações. Por exemplo, a execução de chamadas de funções onde o número de parâmetros efetivamente passados não corresponde ao número de argumentos indicado na definição da função foi acelerada em 60%. O acesso às propriedades do DOM foi otimizado com a função get, o que impactou positivamente o desempenho do framework Angular. O processo de parsing JavaScript foi acelerado: a otimização do decodificador UTF-8 melhorou a performance do parser em modo streaming (análise enquanto carrega) em 8%, e a eliminação de operações desnecessárias de deduplicação gerou um ganho adicional de 10.5%;
  • Foi feito um trabalho para reduzir o consumo de memória do motor JavaScript.
    Foi adicionado um código para limpar o cache de bytecode, que ocupa aproximadamente 15% do tamanho total do heap. O coletor de lixo recebeu uma nova fase para expelir do cache bytecode raramente compilado para funções usadas ou funções que são chamadas apenas na inicialização. A decisão de limpeza é baseada em novos contadores que consideram o último tempo de acesso ao bytecode. A alteração especificada permitiu reduzir o consumo de memória em 5 a 15% sem impacto negativo no desempenho. Além disso, o compilador de bytecode excluiu a geração de código claramente não utilizado, por exemplo, que fica após return ou break (se não houver um salto para ele);

    Lançamento do Chrome 74
  • Para WebAssembly são implementadas suporte a threads e operações atômicas (API WebAssembly Threads e WebAssembly Atomics);
  • Para entrega isolada de scripts, foi adicionada a suporte ao cabeçalho "#!", que define o interpretador para execução. Por exemplo, similar a outras linguagens de script, um arquivo JavaScript pode parecer assim:

    #!/usr/bin/env node
    console.log(42);

  • No CSS, foi adicionada uma nova consulta media "prefers-reduced-motion" que permite ao site determinar o estado das configurações no sistema operacional relacionadas à desativação de efeitos animados. Com a consulta proposta, o proprietário do site pode pode saber que o usuário desativou efeitos animados e também desativar várias opções de animação no site, como remover o efeito de tremor dos botões usados para chamar a atenção;
  • Além da funcionalidade introduzida no Chrome 72 para identificar campos públicos, foi implementado o suporte a marcação de campos como privados, após o que o acesso aos seus valores será permitido apenas dentro da classe. Para marcar um campo como privado, é necessário indicar antes do nome do campo o símbolo "#". Assim como nos campos públicos, propriedades privadas não exigem o uso explícito do construtor.
  • O cabeçalho HTTP Feature-Policy, que permite controlar o comportamento da API e a ativação de determinadas funcionalidades (por exemplo, habilitar o modo síncrono de XMLHttpRequest ou desativar a Geolocation API), foi complementado API JavaScript para controlar a atividade de determinadas funcionalidades. Para os desenvolvedores, foram oferecidos dois novos métodos document.featurePolicy e frame.featurePolicy, que oferecem três funções:
    allowedFeatures() para obter uma lista de funções permitidas para o domínio atual, allowsFeature() para verificar seletivamente a ativação de recursos específicos e getAllowlistForFeature() para exibir a lista de domínios onde o recurso especificado é permitido na página atual;
  • Adicionada a suporte experimental («chrome://flags#enable-text-fragment-anchor») ao modo Scroll-To-Text, permitindo criar links para palavras ou frases específicas, sem a necessidade de indicar explicitamente no documento rótulos por meio da tag «a name» ou da propriedade «id». Para transmitir o link, é proposto um parâmetro especial «#targetText=», no qual é possível indicar o texto para o acesso. É aceitável especificar uma máscara, incluindo frases que indiquem o início e o fim do fragmento, utilizando a vírgula como separador (por exemplo, «example.com#targetText=startwords, endwords»);
  • Foi adicionada uma opção ao construtor AudioContext sampleRate, que permite definir a frequência de amostragem para operações de áudio através da API Web Audio;
  • Adicionada a suporte à classe Intl.Locale, que fornece métodos para analisar e manipular parâmetros de idioma, região e formatação definidos pela localidade, além de ler e gravar tags de extensões Unicode, armazenando configurações de localidade do usuário em um formato serializado;
  • O mecanismo Signed HTTP Exchanges (SXG) foi ampliado com recursos para informação distribuidores de conteúdo sobre erros de carregamento de conteúdo assinado, como problemas de verificação de certificados. O tratamento de erros é realizado através das extensões da API Network Error Logging. Lembrando que o SXG permite permite a um proprietário de site autorizar, com assinatura digital, a publicação de determinadas páginas em outro site, após o que, ao acessar essas páginas no segundo site, o navegador mostrará ao usuário a URL do site original, apesar da página ter sido carregada a partir de outro host;
  • Foi adicionado ao class TextEncoder o método encodeInto(), que permite gravar uma string codificada diretamente em um buffer previamente alocado. O método encodeInto() é uma alternativa de alto desempenho ao método encode(), que requer a operação de alocação de buffer a cada chamada.
  • No Service worker foi garantido Bufferização da chamada client.postMessage() até que o documento esteja pronto. As mensagens enviadas através de client.postMessage() serão mantidas até o evento DOMContentLoaded ser gerado, a definição do onmessage ser realizada ou o startMessages() ser chamado;
  • Em conformidade com os requisitos da especificação CSS Transitions foram adicionados os eventos transitionrun, transitioncancel, transitionstart e transitionend, gerados quando uma transição CSS é colocada na fila, cancelada, iniciada ou concluída.
  • Ao especificar um tipo MIME incorreto ou uma codificação de caracteres através de overrideMimeType() para uma solicitação XMLHttpRequest, agora ocorre um retrocesso para UTF-8 em vez de Latin-1;
  • O recurso 'allow-downloads-without-user-activation' foi declarado obsoleto e será removido em uma das próximas versões, o qual permitia que downloads de arquivos fossem organizados ao processar iframes. No futuro, a inicialização de downloads de arquivos sem a ação explícita do usuário será proibida, pois foi amplamente utilizada para abusos, impor downloads e injetar partes de malware no computador do usuário. Para iniciar o download, o clique do usuário na mesma página será obrigatório. Inicialmente, a remoção do recurso estava prevista para o Chrome 74, mas a remoção foi adiado adiada até o Chrome 76.
  • Uma opção de tema escuro foi proposta para a plataforma Windows (na versão anterior, o tema escuro foi preparado para macOS). Como o tema escuro é quase idêntico ao modo de navegação anônima, para destacar o modo privado de operação, um indicador especial foi adicionado em vez do ícone do perfil do usuário;
  • Para usuários corporativos, foi adicionada a possibilidade de Gerenciamento da Nuvem do Navegador Chrome para gerenciar as configurações dos navegadores dos usuários através do console do Google Admin;

    Lançamento do Chrome 74

Além das inovações e correções de bugs, na nova versão foram eliminadas 39 vulnerabilidades. Muitas das vulnerabilidades foram descobertas através de teste automatizado com ferramentas AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Não foram identificados problemas críticos que permitam contornar todos os níveis de segurança do navegador e executar código no sistema fora do ambiente sandbox. No âmbito do programa de recompensas por descoberta de vulnerabilidades para esta versão, a Google pagou 19 prêmios no total de 26837 dólares EUA (quatro prêmios de $3000, quatro prêmios de $2000, um prêmio de $1337, quatro prêmios de $1000, três prêmios de $500). O valor de 4 recompensas ainda não foi determinado.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster