Pierre Joye ha iniciado la discusión sobre una RFC para ext/gd 2.4 dirigida a PHP 8.6, proponiendo una modernización exhaustiva de la extensión de imagen manteniendo compatibilidad hacia atrás.
La propuesta cubre tres áreas principales:
Sincronización y mejora de códecs. La libgd incluida se ha desviado significativamente del código upstream. La RFC la alinea probando cada códec contra su corpus de conformidad upstream, corrigiendo problemas de coincidencia de colores y errores de caja delimitadora/baseline de FreeType para texto angulado. Nuevos códecs soportados: QOI, JPEG XL y UltraHDR. Los códecs existentes ganan funcionalidad faltante: lectura/escritura de animación GIF, soporte TIFF multipágina, animación WebP completa, exposición de opciones PNG, opciones de lectura/escritura JPEG y acceso de lectura/escritura a metadatos sin procesar (EXIF, XMP, ICC, IPTC). Un PR de sincronización libgd separado (php/php-src#22532) que contiene la mayoría de actualizaciones de códecs ya se ha fusionado en php-src.
API orientada a objetos. Una nueva superficie Gd\* OOP agrega métodos directamente a GdImage (scale(), rotate(), transform(), composeFrom(), saveTo(), etc.) mientras que cada función procedimental existente mantiene su firma sin cambios. El código legacy funciona libremente junto con nuevos métodos ya que ambos operan sobre el mismo objeto GdImage. Cada códec sigue un patrón consistente: métodos Codec::fromFile/fromString/fromStream y toFile/toString/toStream, objetos Info inmutables y objetos valor ReadOptions/WriteOptions diseñados para extensibilidad futura sin romper cambios. Los formatos animados y multipágina obtienen clases Reader/Writer en streaming para evitar cargar imágenes completas en memoria.
Capa vectorial 2D y canvas. Construida sobre el rasterizador de FreeType, esta capa proporciona degradados, el conjunto completo de operadores de composición Cairo (con semántica correcta de operador no acotado y alfa premultiplicado) y pilas de guardado/restauración de estado. Dibuja directamente en buffers GdImage truecolor existentes sin copia, permitiendo entrelazamiento con llamadas de dibujo legacy en la misma imagen.
La RFC encuadra el patrón de fachada uniforme y el diseño de objetos valor como fundamental para elementos futuros de la hoja de ruta: los formatos de imagen internos planificados para PHP 2.5/3.x (ARGB verdadero de 32 bits, buffers HDR en punto flotante) se ajustan a la misma interfaz en lugar de forzar APIs paralelas. El estilo de método fluido y encadenable está diseñado para que los modos streaming/pipeline futuros agreguen un único método de entrada alimentando la misma cadena, no una API separada.
La implementación está casi completa en https://github.com/pierrejoye/php-src-syncgd. Joye planea agregar un método de cuantización exponiendo selección de modo (nnquant, legacy) y creará un PR formal antes del final de la discusión. El período de discusión se extiende por 14 días hasta 2026-08-01.