Pierre Joye a lancé la discussion sur une RFC pour ext/gd 2.4 visant PHP 8.6, proposant une modernisation complète de l'extension d'image tout en maintenant la compatibilité rétroactive.
La proposition couvre trois domaines majeurs :
Synchronisation et amélioration des codecs. La libgd intégrée s'est éloignée de manière significative du code amont. La RFC l'aligne en testant chaque codec contre son corpus de conformité amont, corrigeant les problèmes d'appariement de couleurs et les erreurs FreeType de boîte englobante/baseline pour le texte incliné. Nouveaux codecs supportés : QOI, JPEG XL et UltraHDR. Les codecs existants gagnent des fonctionnalités manquantes : lecture/écriture d'animation GIF, support TIFF multi-pages, animation WebP complète, exposition des options PNG, options de lecture/écriture JPEG et accès en lecture/écriture aux métadonnées brutes (EXIF, XMP, ICC, IPTC). Une PR de synchronisation libgd séparée (php/php-src#22532) contenant la plupart des mises à jour de codecs a déjà fusionné dans php-src.
API orientée objet. Une nouvelle surface Gd\* OOP ajoute directement à GdImage des méthodes (scale(), rotate(), transform(), composeFrom(), saveTo(), etc.) tandis que chaque fonction procédurale existante conserve sa signature inchangée. Le code legacy fonctionne librement aux côtés des nouvelles méthodes puisque les deux opèrent sur le même objet GdImage. Chaque codec suit un pattern cohérent : méthodes Codec::fromFile/fromString/fromStream et toFile/toString/toStream, objets Info immuables, et objets valeur ReadOptions/WriteOptions conçus pour une extensibilité future sans rupture de compatibilité. Les formats animés et multi-pages obtiennent des classes Reader/Writer en streaming pour éviter de charger des images entières en mémoire.
Couche vectorielle 2D et canvas. Construite sur le rasteriser de FreeType, cette couche fournit des dégradés, l'ensemble complet des opérateurs de composition Cairo (avec sémantique correcte d'opérateur non délimité et alpha prémultiplié) et piles save/restore d'état. Elle dessine directement dans les buffers GdImage truecolor existants sans copie, permettant l'entrelacement avec les appels de dessin legacy sur la même image.
La RFC encadre le pattern de façade uniforme et la conception des objets valeur comme fondationnel pour les éléments futurs de la roadmap : les formats d'image internes prévus pour PHP 2.5/3.x (vrai ARGB 32-bit, buffers HDR virgule flottante) s'intègrent dans la même interface plutôt que forcer des APIs parallèles. Le style de méthode fluide et chaînable est conçu pour que les modes streaming/pipeline futurs ajoutent une seule méthode d'entrée alimentant la même chaîne, non une API séparée.
L'implémentation est presque complète sur https://github.com/pierrejoye/php-src-syncgd. Joye prévoit d'ajouter une méthode de quantification exposant la sélection de mode (nnquant, legacy) et créera une PR formelle avant la fin de la discussion. La période de discussion s'étend sur 14 jours jusqu'au 2026-08-01.