Firefox Quantum 57 para programadores

Este artículo proporciona información sobre los cambios incluidos en Firefox 57 (también conocido como Firefox Quantum) que conciernen a los desarrolladores. Firefox 57 se disponibilizó al público el 14 de noviembre de 2017.

Firefox 57 === Firefox Quantum

Hemos bautizado a Firefox 57 como Quantum por el proyecto de ingeniería Firefox Quantum, cuyo objetivo ha sido el de reconstruir Firefox desde cero para darle un rendimiento y una estabilidad excelentes, así como mejorar su apariencia visual. Esta es la primera versión de Firefox en incluir algunos de estos cambios, así que quisimos conmemorar el acontecimiento.

Nota: Para obtener más información sobre las funciones de Quantum incluidas en esta versión, consúltese el artículo «Firefox Quantum Developer Edition: el Firefox más rápido, con IU Photon y mejores herramientas», escrito por Dan Callahan.

El nuevo procesador de CSS en paralelo de Firefox ―también denominado Quantum CSS o Stylo― está activado de manera predeterminada en Firefox 57 para escritorio; las versiones para móviles darán el salto en el futuro. Los programadores no deberían notar ninguna diferencia importante, aparte de la amplia gama de mejoras de rendimiento. Sin embargo, existen algunas diferencias menores de funcionalidad en Stylo, las cuales se han implementado para corregir comportamientos no estándares de Gecko que habrían de desaparecer. Informaremos de esas diferencias en las páginas de referencia y en las notas de publicación según proceda (véanse Notas sobre Quantum CSS).

Cambios para programadores web

Herramientas de desarrollo

No hay ningún cambio.

HTML

CSS

Notas sobre Quantum CSS

  • Los valores de degradados radiales tales como radial-gradient(circle gold,red) funcionan en el sistema de estilos de Gecko anterior, pero no debería por la coma faltante entre circle y gold (Error 1383323 en Firefox). Quantum corrige este defecto.
  • Cuando se da animación a un elemento ubicado fuera de la pantalla y se establece un tiempo de retardo, Gecko no actualiza la visualización correctamente en algunas plataformas, como Windows (Error 1383239 en Firefox). Esto ha quedado corregido en Quantum.
  • En Gecko, no es posible desplegar de manera predeterminada los elementos <details> mediante el atributo open si tienen una propiedad animation activa (Error 1382124 en Firefox). Quantum corrige este problema.
  • En Gecko, los efectos transitions no funcionan si se transiciona desde un text-shadow con un color especificado a un text-shadow sin ningún color (Error 726550 en Firefox). Este comportamiento se ha corregido en Quantum.
  • En Gecko, cancelar una animación de relleno (p. ej., con animation-fill-mode: forwards definido) puede desencadenar un conjunto de transiciones en el mismo elemento, aunque únicamente una vez (véase el Error 1192592 en Firefox y estas pruebas para más información). Por lo general, las animaciones declaratorias no deberían desencadenar animaciones. Esto se ha corregido en Quantum.
  • En Gecko, las animaciones que utilizan ems como unidad no reciben las modificaciones realizadas en font-size en el elemento padre del elemento animado, aunque deberían (Error 1254424 en Firefox). Quantum CSS corrige esto.
  • Gecko además maneja la herencia de font-size de manera diferente a la de Quantum CSS, por lo que para algunas configuraciones de idioma, los tamaños de letra heredados quedaban más pequeños de lo esperado (véase Error 1391341 en Firefox). Quantum corrige esto.
  • Gecko reutiliza el mismo mecanismo empleado al analizar una ficha de URL durante el análisis de las funciones domain() o url-prefix() para la regla @-moz-document. Quantum CSS no utiliza el mismo mecanismo y no considera las fichas como no válidas cuando contienen paréntesis o comillas (Error 1362333 en Firefox).
  • En Gecko, cuando se define un tipo de letra del sistema como el valor del tipo de letra de algún contexto del lienzo 2D (p. ej., menu), la obtención del valor del tipo de letra no devuelve el resultado correcto (no devuelve nada). Este problema quedó solucionado en Quantum. (Error 1374885 en Firefox).
  • En Gecko, cuando se crea un subárbol desligado (p. ej., un <div> creado a través de createElement() que todavía no se inserta en el DOM), el elemento raíz del subárbol se define como un elemento de nivel bloque. En Quantum CSS, el elemento se define como alineado, tal como se define en la especificación (Error 1374994 en Firefox).
  • Gecko rechaza las expresiones calc() ―lo que invalida el valor― cuando se utilizan como el componente radial de una función radial-gradient (Error 1376019 en Firefox). Quantum CSS lo resuelve.
  • En Gecko, calc(1*2*3) no es analizado debidamente; Quantum CSS soluciona el problema (Error 1379467 en Firefox).
  • En Quantum CSS, calc() se admite en todos los sitios que la especificación indica (Error 1350857 en Firefox). En Gecko, este no es el caso.
  • Gecko contiene un defecto que provoca que los pseudoelementos ::before y ::after se generen aun si el valor de la propiedad content se define como normal o none. Este comportamiento es contrario a la especificación (Error 1387931 en Firefox) y se ha corregido en Quantum.
  • Otro defecto de Gecko provoca que la propiedad background-position no pueda transicionarse entre dos valores que contengan números diferentes de valores <position>, por ejemplo, background-position: 10px 10px; y background-position: 20px 20px, 30px 30px; (véase Error 1390446 en Firefox). Quantum resuelve el error.

SVG

No hay ningún cambio.

JavaScript

API

API nuevas

DOM

Sucesos de DOM

No hay ningún cambio.

Multimedia y WebRTC

  • Ahora se admiten mensajes de cualquier tamaño (hasta 1 GiB, aunque 256 kiB es más interoperativo) en RTCDataChannel por medio del uso de la opción «end-of-record» (EOR) en los mensajes de SCTP. Consúltese Understanding message size limits para obtener más información (Error 979417 en Firefox).

    Nota: Como Firefox aún no admite el protocolo ndata de SCTP, que permite intercalar mensajes de SCTP de varias fuentes, enviar objetos de datos grandes puede causar retardos importantes en el resto del tránsito SCTP. Véase el Error 1381145 en Firefox para estar al tanto de la implementación de ndata en Firefox.

  • El método RTCDataChannel.send() ahora puede emitir una excepción TypeError si el tamaño del mensaje que se intenta enviar no es compatible con el agente de usuario de destino (esto se implementó como parte del Error 979417 en Firefox).

  • La API MediaStream Recording se ha actualizado de modo que los sucesos error que se envíen para notificar problemas acaecidos durante la grabación son ahora del tipo MediaRecorderErrorEvent en lugar de sucesos genéricos.

  • Se actualizó la documentación concerniente a OfflineAudioContext, dado que sus entradas de constructores pueden especificarse ahora dentro de un objeto en lugar de una lista de parámetros (Error 1388591 en Firefox).

Seguridad

  • Los URL resource:// ya no filtran información (Error 863246 en Firefox)
  • Los URI de datos ahora se manipulan como orígenes opacos únicos, en vez de heredar el origen del objeto de configuración responsable de la navegación (Error 1324406 en Firefox).

Plugins

No hay ningún cambio.

Otros

Eliminaciones de la plataforma web

HTML

  • <link rel="preload"> (véase Precargar contenido con rel="preload") fue desactivado en Firefox 57 a causa de varios problemas de compatibilidad con la web (p. ej., Error 1405761 en Firefox). Se espera que para Firefox 58 quede lista la versión de reemplazo, la cual funcionará para recursos no almacenables en la antememoria.

API

SVG

No hay ningún cambio.

Cambios relativos a los complementos y los programadores de Mozilla

Nota: A partir de Firefox 57, se ha eliminado por completo la compatibilidad con los complementos basados en la tecnología XPCOM. Todas las extensiones deben convertirse para emplear la tecnología nueva, conocida como WebExtensions, o de lo contrario dejarán de funcionar.

WebExtensions

Se añadieron o ampliaron las API siguientes:

Versiones anteriores