A empresa Google lançou a versão 126 do navegador web Chrome. Simultaneamente, está disponível a versão estável do projeto aberto Chromium, que serve como base para o Chrome. O navegador Chrome se diferencia do Chromium pelo uso dos logos do Google, pela inclusão de um sistema de notificação em caso de falhas, por módulos para reprodução de conteúdo de vídeo protegido (DRM), pelo sistema de instalação automática de atualizações, pela ativação constante da sandbox, pelo fornecimento de chaves para a API do Google e pela transmissão de parâmetros RLZ durante a busca. Para aqueles que precisam de mais tempo para atualizações, há uma ramificação chamada Extended Stable, com suporte por 8 semanas. O próximo lançamento do Chrome 127 está agendado para 23 de julho.
Principais mudanças no Chrome 126:
- O visualizador de PDF integrado foi atualizado para permitir a extração de texto do documento, acessível pela opção 'Extrair texto do PDF' no menu de contexto. Para extrair texto de documentos digitalizados, nos quais o texto aparece como imagem, é utilizado um mecanismo de reconhecimento óptico de caracteres (OCR) baseado em aprendizado de máquina. Espera-se que essa nova funcionalidade facilite o manuseio de documentos PDF para pessoas com problemas de visão que utilizam leitores de tela. No futuro, planeja-se implementar o reconhecimento de texto em imagens exibidas nas páginas e em capturas de tela. O mecanismo de OCR está ativado por padrão para 50% dos usuários, enquanto os outros podem ativá-lo através da configuração 'chrome://flags/#pdf-ocr'.

- Foi adicionada à página do configurador de parâmetros de desempenho
(‘Desempenho/ Economia de memória’ na seção chrome://settings/performance) uma nova opção para ajustar o nível de agressividade do modo de economia de memória (Memory Saver), que reduz o consumo de memória RAM ao liberar a memória ocupada por abas inativas. Por exemplo, ao escolher um nível moderado, o navegador descarregará menos abas da memória em comparação ao nível máximo. A configuração, que por padrão está disponível apenas para alguns usuários, pode ser ativada através do parâmetro 'chrome://flags/#memory-saver-aggressiveness'.
- Para alguns usuários, o visualizador de PDF agora utiliza por padrão uma nova arquitetura OOPIF (out-of-process iframe), na qual o conteúdo do documento é processado em um processo separado. A nova arquitetura elimina as complicações comuns da implementação baseada no mecanismo GuestView e simplifica a adição de novas funcionalidades ao visualizador de PDF. Para ativar a nova arquitetura, pode-se usar a configuração "chrome://flags/#pdf-oopif".
- Foi adicionado um modo de pré-carregamento reativo (Reactive prefetch), que carrega recursos relacionados à página durante a navegação, sem esperar pela solicitação real, permitindo uma abertura mais rápida de novas páginas. Para prever os recursos que podem ser necessários no futuro, um serviço externo do Google é utilizado, retornando uma lista de recomendações após o envio da URL das páginas em navegação.
- Foi adicionada a possibilidade de pesquisa no Google Lens por qualquer imagem e texto visível na tela. Essa funcionalidade é ativada através do menu de contexto, do indicador na barra de endereços ou do menu "⋮", permitindo que o usuário selecione um objeto de interesse na tela e obtenha informações sobre ele a partir do Google Lens. Ao realizar a operação na servidor Google, é enviado
uma captura de tela. Essa funcionalidade está atualmente ativada por padrão para 1% dos usuários. Para ativar e desativar o suporte ao Google Lens, pode-se usar a opção "chrome://flags/#enable-lens-region-search-static-page". - Foram resumidas as otimizações para acelerar o teste Speedometer 3 — ao longo de dois anos, o desempenho do Chrome nesse teste aumentou em 72%. Por exemplo, a execução da função SpaceSplitString, utilizada na análise de expressões como "class='foo bar'", foi acelerada, as funções de gerenciamento de memória foram otimizadas, operações desnecessárias na manipulação de elementos de formulários web foram eliminadas, e as ações mais frequentemente usadas foram aceleradas, além da otimização do uso do innerHTML e da renderização de fontes. A aceleração também foi alcançada graças à otimização do coletor de lixo no mecanismo V8, cuja eficiência aumentou ao ativar a coleta de lixo durante o tempo ocioso do processo de renderização, evitando concorrência com o aplicativo por recursos da CPU.

- A eficiência do trabalho com Cookies foi significativamente aumentada, permitindo reduzir a latência ao interagir com sites. Anteriormente, a cada acesso a Cookies, uma solicitação IPC síncrona era enviada do processo que gerenciava o site para o processo que garantiu a comunicação de rede. Como os aplicativos da web utilizam ativamente os valores de Cookies, essas solicitações entre processos desaceleravam o desempenho, sendo que 87% das solicitações para outro processo eram redundantes.
Para resolver o problema, uma nova arquitetura foi implementada, na qual cada processo contém sua própria cópia dos dados de Cookies e acessa-a diretamente, enquanto as alterações nos Cookies, que, por exemplo, podem ocorrer ao trabalhar com os mesmos Cookies em outra aba, são monitoradas através de um mecanismo de versionamento. A essência deste mecanismo é que a cada valor de document.cookie é anexado um contador com o número da versão, que é armazenado na memória compartilhada, aumenta ao modificar o valor e é comparado com a instância existente ao ler.
Adicionada a possibilidade de usar a API View Transitions para criar efeitos de animação de transição de uma página para outra dentro do mesmo site (same-origin). Anteriormente, essa API só poderia ser aplicada a efeitos entre diferentes estados do DOM em uma única página (por exemplo, uma transição suave de uma imagem para outra). Para aplicar efeitos de transição entre documentos diferentes, deve-se usar a propriedade "navigation: auto" na regra @-"view-transition".
- Ativada a API CloseWatcher, permitindo monitorar solicitações Close em aplicativos da web e reagir a elas (por exemplo, é possível criar um manipulador para o botão "voltar" em smartphones Android).
- As solicitações Close são geradas ao tentar fechar diálogos modais (<dialog>) e pop-ups (popover="") pressionando a tecla Esc, utilizando o botão "Voltar" ou realizando gestos na tela em smartphones.
Na API Gamepad, que permite monitorar e processar eventos de gamepads e controladores de jogos, foi adicionada a suporte a mecanismos de feedback tátil (trigger-rumble), como vibrações. - Nos interfaces GeolocationCoordinates e GeolocationPosition, adicionado o método .toJSON() para serializar objetos com coordenadas em formato JSON.
- Nos interfaces GeolocationCoordinates e GeolocationPosition, adicionado o método .toJSON() para serializar objetos com coordenadas em formato JSON.
- Na versão para ChromeOS, foi adicionado suporte ao modo de exibição de abas (propriedade CSS 'display: tabbed'), permitindo o uso de abas em um único aplicativo web, por exemplo, para organizar a edição de vários documentos.
- Foi adicionada uma funcionalidade experimental (origin trial) de pré-visualização do conteúdo obtido a partir da câmera ou microfone.
- No API WebGPU, a compilação de shaders foi significativamente acelerada. No backend para a API gráfica Vulkan, a carga de dados na GPU foi otimizada (possibilitando gravação direta no buffer da GPU sem cópia intermediária).
- Foram feitas melhorias nas ferramentas para desenvolvedores web. Na seção 'Application > Storage', foi adicionada a capacidade de inspecionar dados armazenados usando a API Storage Buckets, permitindo organizar o armazenamento de dados dividindo-o em segmentos separados associados à API IndexedDB e CacheStorage. No painel de avaliação de desempenho, foi adicionada a opção de mover e ocultar rastros, além de excluir informações sobre a execução de scripts do gráfico de desempenho e ativar o modo de desaceleração artificial do desempenho do sistema em 20 vezes.

No painel de rastreamento de atividade de rede, foi adicionada suporte para substituição na resposta recebida de uma string completa com cabeçalho HTTP no formato 'nome: valor'. No painel de monitoramento de consumo de memória, foram adicionados filtros para identificar ineficiências na utilização da memória, como a presença de strings duplicadas ou objetos associados a nós DOM desconectados.

Além das inovações e correções de bugs na nova versão, 21 vulnerabilidades foram corrigidas. Muitas das vulnerabilidades foram identificadas por meio de testes automatizados utilizando as ferramentas AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. 9 problemas foram classificados como de alto nível de risco. Nenhum problema crítico, que permita contornar todos os níveis de proteção do navegador e executar código no sistema além do ambiente sandbox, foi detectado. No âmbito do programa de recompensas por falhas de segurança para esta versão, a Google pagou 11 prêmios totalizando mais de 168 mil dólares americanos.
Um prêmio recorde de 100.115 dólares foi concedido pela vulnerabilidade CVE-2024-5839, relacionada a um problema na implementação do mecanismo de alocação de memória. Esta vulnerabilidade foi classificada como de risco médio, pois potencialmente permite causar corrupção de memória na heap ao processar conteúdo HTML especialmente formatado. Além disso, foram concedidos prêmios de 25.000, 7.000, 3.000, 2.000, 1.000 e 500 dólares, além de dois prêmios de 10.000 e 5.000 dólares. O valor de 7 recompensas ainda não foi determinado.
Fonte: opennet.ru






