Lanzamiento de Chrome 74

La empresa Google ha presentado la versión del navegador web Chrome 74. A la vez está disponible lanzamiento estable de un proyecto de código abierto Chromium, que sirve como base para Chrome. El navegador Chrome se distingue el uso de logotipos de Google, la posibilidad de cargar el módulo Flash bajo demanda, la existencia de un sistema de envío de notificaciones en caso de un fallo, módulos para la reproducción de contenido de video protegido, un sistema de instalación automática de actualizaciones y la transmisión durante la búsqueda de parámetros RLZ. La próxima versión de Chrome 75 está programada para el 4 de junio.

Principales cambios en Chrome 74:

  • Cuando ocurren eventos onUnload, que se activan al cerrar la página, ahora están prohibidas se bloquearán ventanas emergentes (se bloquea la llamada a window.open()), lo que protegerá a los usuarios de la apertura forzada de páginas publicitarias tras cerrar sitios cuestionables;
  • En el motor JavaScript se ha implementado se ha introducido un nuevo modo JIT-less (flag «—jitless»), que permite ejecutar JavaScript sin utilizar JIT (solo se usa el intérprete) y sin asignar memoria ejecutable durante la ejecución del código. Desactivar JIT puede ser útil para mejorar la seguridad al trabajar con aplicaciones web potencialmente peligrosas, así como para garantizar la compilación en plataformas que prohíben el uso de JIT (por ejemplo, en iOS, en algunos Smart TV y consolas de videojuegos). Al desactivar JIT, el rendimiento de la ejecución de JavaScript disminuye en un 40% en la prueba Speedometer 2.0 y en un 80% en la prueba Web Tooling Benchmark, pero al simular trabajos con YouTube, se observó solo una disminución del rendimiento del 6%. El consumo de memoria también disminuye ligeramente, solo un 1.7%;
  • En V8 también se ha propuesto una gran cantidad de nuevas optimizaciones. Por ejemplo, se ha acelerado en un 60% la ejecución de llamadas a funciones donde el número de parámetros realmente pasados no coincide con el número especificado al definir la función. Se ha acelerado el acceso a las propiedades del DOM mediante la función get, lo que ha tenido un impacto positivo en el rendimiento del marco Angular. Se ha acelerado el análisis de JavaScript: la optimización del decodificador UTF-8 ha permitido aumentar el rendimiento del parser en modo streaming (análisis a medida que se carga) en un 8%, y la eliminación de operaciones de deduplicación innecesarias ha dado un incremento adicional del 10.5%;
  • Se han realizado trabajos para reducir el consumo de memoria del motor JavaScript.
    Se añadió un código para limpiar la caché de bytecode, que ocupa aproximadamente el 15% del tamaño total del montón. Se agregó una etapa al recolector de basura para eliminar de la caché el bytecode rara vez compilado para las funciones utilizadas o funciones que se llaman solo en la inicialización. La decisión de limpiar se toma en base a nuevos contadores que consideran el último tiempo de acceso al bytecode. Este cambio permitió reducir el consumo de memoria en un 5–15% sin afectar negativamente el rendimiento. Además, en el compilador de bytecode se eliminó la generación de código que no se utilizará, por ejemplo, el que sigue a un return o break (si no hay un salto hacia él);

    Lanzamiento de Chrome 74
  • Para WebAssembly se ha implementado soporte para hilos y operaciones atómicas (API WebAssembly Threads y WebAssembly Atomics);
  • Para la entrega separada de scripts se añadió soporte para el encabezado «#!», que define el intérprete a utilizar. Por ejemplo, al igual que en otros lenguajes de scripting, un archivo JavaScript puede verse así:

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

  • Se añadió una nueva consulta media «prefers-reduced-motion«, que permite al sitio determinar el estado de las configuraciones en el sistema operativo relacionadas con la desactivación de efectos animados. Con esta consulta, el propietario del sitio puede puede saber que el usuario ha desactivado los efectos animados y también desactivar varias capacidades de animación en el sitio, por ejemplo, eliminar el efecto de temblor de los botones utilizados para llamar la atención;
  • Además de la nueva capacidad en Chrome 72 para definir campos públicos, se implementó soporte para marcar campos como privados, después de lo cual el acceso a sus valores solo estará disponible dentro de la clase. Para marcar un campo como privado, se debe anteponer el signo «#» al nombre del campo. Al igual que en el caso de los campos públicos, las propiedades privadas no requieren el uso explícito de un constructor.
  • La cabecera HTTP Feature-Policy, que permite gestionar el comportamiento de las API y habilitar ciertas capacidades (por ejemplo, se puede habilitar el modo de trabajo síncrono de XMLHttpRequest o desactivar la API de Geolocalización), se ha complementado con JavaScript API para controlar la actividad de ciertas capacidades. Se han propuesto a los desarrolladores dos nuevos métodos document.featurePolicy y frame.featurePolicy, que ofrecen tres funciones:
    allowedFeatures() para obtener una lista de funciones permitidas para el dominio actual, allowsFeature() para verificar selectivamente la inclusión de capacidades específicas y getAllowlistForFeature() para mostrar la lista de dominios para los cuales la capacidad especificada está permitida en la página actual;
  • Se ha añadido soporte experimental («chrome://flags#enable-text-fragment-anchor») para el modo Scroll-To-Text, que permite crear enlaces a palabras o frases individuales, sin necesidad de indicar explícitamente en el documento etiquetas mediante la etiqueta «a name» o el atributo «id». Para transmitir el enlace se propone un parámetro especial «#targetText=», en el cual se puede especificar el texto para la navegación. Se permite la indicación de una máscara que incluya frases que indiquen el inicio y el final del fragmento usando una coma como separador (por ejemplo, «example.com#targetText=startwords, endwords»);
  • Se añadió una opción al constructor AudioContext sampleRate, que permite establecer la frecuencia de muestreo para operaciones de audio a través de la API Web Audio;
  • Se agregó soporte para la clase Intl.Locale, que proporciona métodos para analizar y procesar los parámetros de idioma, región y escritura establecidos por la configuración regional, así como para leer y escribir etiquetas de extensiones de Unicode, guardando configuraciones de usuario de forma serializada;
  • Mecanismo (SXG). Recordemos que SXG permite que el propietario de un sitio autorice, mediante una firma digital, la colocación de ciertas páginas en otro sitio, de modo que, al acceder a estas páginas en el segundo sitio, el navegador mostrará al usuario la URL del sitio original, a pesar de que la página se haya cargado desde otro host. (SXG) se ha ampliado con herramientas para la notificación distribuidores de contenido sobre errores al cargar contenido firmado, como problemas con la verificación de certificados. El manejo de errores se lleva a cabo a través de las extensiones de la API Network Error Logging. Recordemos que SXG permite permite al propietario de un sitio autorizar, mediante una firma digital, la colocación de páginas específicas en otro sitio, de modo que cuando se acceda a estas páginas en el segundo sitio, el navegador mostrará al usuario la URL del sitio original, a pesar de que la página se haya cargado desde otro host;
  • Se ha añadido un método al class TextEncoder encodeInto(), que permite escribir una cadena codificada directamente en un búfer previamente asignado. El método encodeInto() es una alternativa de alto rendimiento al método encode(), que requiere realizar la operación de asignación de búfer en cada llamada.
  • En el Service worker se ha asegurado la llamada a client.postMessage() se bufferiza hasta que el documento está listo. Los mensajes enviados a través de client.postMessage() se retendrán hasta la generación del evento DOMContentLoaded, cuando se instale onmessage o se llame a startMessages();
  • De acuerdo con los requisitos de la especificación CSS Transitions agregados los eventos transitionrun, transitioncancel, transitionstart y transitionend, generados cuando la transición CSS se coloca en cola, se cancela, comienza o finaliza.
  • Al especificar un overrideMimeType() o un tipo MIME con codificación de caracteres incorrecta para la solicitud XMLHttpRequest, ahora se retrocede a UTF-8 en lugar de Latin-1;
  • Se ha declarado obsoleto y se eliminará en una de las próximas versiones la propiedad 'allow-downloads-without-user-activation', que permitía organizar la descarga automática de archivos al manejar un iframe. En el futuro, la iniciación de descargas de archivos sin una acción explícita del usuario estará prohibida, ya que se utilizaba ampliamente para abusos, imposición de descargas y sustitución de partes de malware en la computadora del usuario. Para iniciar una descarga, se requerirá un clic del usuario en la misma página. Inicialmente, se planeaba eliminar esta propiedad en Chrome 74, pero la eliminación fue postponed hasta Chrome 76.
  • Para la plataforma Windows se ha propuesto un tema oscuro opcional para la interfaz (en la versión anterior, el modo oscuro se preparó para macOS). Dado que el modo oscuro es casi idéntico al diseño en modo incógnito, se ha añadido un indicador especial en lugar del icono del perfil de usuario para destacar el modo privado;
  • Se ha añadido la capacidad para usuarios corporativos Chrome Browser Cloud Management para gestionar la configuración de los navegadores de los usuarios a través de la consola de Google Admin;

    Lanzamiento de Chrome 74

Además de las novedades y correcciones de errores, en la nueva versión se han eliminado 39 vulnerabilidades. Muchas de las vulnerabilidades fueron identificadas a través de pruebas automatizadas con herramientas de AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer y AFL. No se han identificado problemas críticos que permitan eludir todos los niveles de seguridad del navegador y ejecutar código en el sistema fuera del entorno sandbox. En el marco del programa de recompensas por descubrimiento de vulnerabilidades para la versión actual, Google ha pagado 19 recompensas por un total de 26837 dólares (cuatro recompensas de $3000, cuatro de $2000, una de $1337, cuatro de $1000, tres de $500). El monto de cuatro recompensas aún no se ha determinado.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster