public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Paul Howarth <paul@city-fan.org>
To: git-commits@fedoraproject.org
Subject: [rpms/perl-GD] rawhide: Update to 2.91
Date: Sun, 16 Aug 2026 10:27:30 GMT	[thread overview]
Message-ID: <178687605064.1.17348326694720497688.rpms-perl-GD-3fcbef1f1325@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/perl-GD
            Branch : rawhide
            Commit : 3fcbef1f1325a1c3054329f322ced28294c9695a
            Author : Paul Howarth <paul@city-fan.org>
            Date   : 2026-08-16T11:26:59+01:00
            Stats  : +70/-2 in 2 file(s)
            URL    : https://src.fedoraproject.org/rpms/perl-GD/c/3fcbef1f1325a1c3054329f322ced28294c9695a?branch=rawhide

            Log:
            Update to 2.91

- New upstream release 2.91
  - Add JXL, UHDR support for new libgd-2.4.0 (from git)
  - JXL: newFromJxl/newFromJxlData readers, jxl() writer
    (lossless/distance/effort), magic-byte autodetection in new()
  - UHDR: New GD::UHDR class (newFromFile/newFromData, width/height/hasGainMap,
    resize/crop/rotate/mirror, file/write, getSdr)
  - Work around libgd 2.4.0 gd.h no longer declaring gdImageBoundsSafe()
  - IMAGEQUANT: trueColorToPaletteSetMethod/SetQuality and the GD_QUANT_*
    constants for the libimagequant-backed quantizer
  - Guard for installations without libimagequant
  - Fix imagequant feature autodetection in Makefile.PL (libimagequant surfaces
    in gdlib.pc's Libs.private, not Requires.private
  - Embed rpath (Linux) and fix stale blib/lib/GD/Image.pm so 'make test'
    reliably exercises the just-configured libgd (GH#21 test infra); fix GD_LIQ
    detection from the deprecated gdlib-config script
  - Add Affine transformations (GH#21): GD::Image affine matrix builders
    (affineIdentity/Scale/Rotate/ShearHorizontal/ShearVertical/Translate/
     Concat/Invert/Flip/Expansion/Rectilinear/Equal/ApplyToPoint) and
    transformAffineGetImage/transformAffineCopy/transformAffineBoundingBox,
    wrapping gdAffine*/gdTransformAffine* (libgd >= 2.1.0); fix GD_AFFINE_*
    constant visibility (same enum/#ifdef issue as GD_QUANT_*)
  - Add more previously-unbound libgd methods (libgd >= 2.1.0 unless noted):
    paletteToTrueColor, crop, cropAuto, cropThreshold, colorReplace,
    colorReplaceArray, colorReplaceThreshold, convolution, resolution;
    cloneImage, getTrueColorPixel, perceptualDiff (libgd >= 2.4.0); clone() now
    uses the native gdImageClone() when available, fixing truecolor-ness loss on
    the old new()+copy() fallback; Fix GD_CROP_* constant visibility (same
    enum/#ifdef issue as GD_QUANT_*)
  - Animated WebP support (libgd >= 2.4.0): new GD::WebpAnimWriter
    (new/addImage/finish, wrapping gdWebpWriteOpenPtr/AddImage/PtrFinish) and
    GD::WebpAnimReader (newFromData/info/nextImage, wrapping
    gdWebpReadOpenCtx/GetInfo/NextImage) classes
  - Animated/multi-image JXL support (libgd >= 2.4.0): new GD::JxlAnimWriter
    (new/addImage/finish, wrapping gdJxlWriteOpenPtr/AddImage/PtrFinish) and
    GD::JxlAnimReader (newFromData/info/nextImage, wrapping
    gdJxlReadOpenCtx/GetInfo/NextImage) classes, mirroring
    GD::WebpAnimReader/Writer
  - Multi-page TIFF support (libgd >= 2.4.0): new GD::TiffMultiWriter
    (new/addImage/finish, wrapping gdTiffWriteOpenPtr/AddImage/PtrFinish) and
    GD::TiffMultiReader (newFromData/info/nextImage, wrapping
    gdTiffReadOpenCtx/GetInfo/NextImage) classes, mirroring
    GD::WebpAnimReader/Writer (pages have no per-page delay; nextImage()
    returns a page-info hashref instead); also adds the GD_TIFF_* writer option
    constants (colorspace, compression, resolution unit, alpha type)
  - Per-format header introspection (libgd >= 2.4.0): new
    GD::Image->pngInfoData/jpegInfoData/gifInfoData/bmpInfoData/avifInfoData/
    heifInfoData class methods, wrapping
    gd{Png,Jpeg,Gif,Bmp,Avif,Heif}GetInfoCtx; each reads just the container
    facts (dimensions, bit depth, and similar) from an in-memory buffer without
    fully decoding the image
  - Fixed a longstanding bug in the in-memory gdIOCtx used by every
    newFrom*Data()/*InfoData() method: its getC() callback never advanced the
    read position, so any decoder reading a buffer byte-by-byte (as the new
    bmpInfoData()'s BMP header parser does) would spin re-reading the first
    byte forever; PNG, JPEG, GIF, WebP, TIFF, JXL, AVIF and HEIF decoding were
    unaffected because they read through the bulk getBuf() callback instead,
    which was already correct
  - Worked around inconsistent success/failure return conventions across
    libgd's new Get*InfoCtx functions: gdPngGetInfoCtx, gdJpegGetInfoCtx,
    gdAvifGetInfoCtx and gdHeifGetInfoCtx all return 0 on success despite two
    of their own header comments claiming the opposite, while gdGifGetInfoCtx
    and gdBmpGetInfoCtx return 1 on success as documented
  - t/affine.t: Compare affineInvert(scale(2,3))'s result with an epsilon
    (1e-6) instead of exact is_deeply, since -Duselongdouble perls compute the
    division in extended precision, giving a last-few-ULP-different 1/3 than a
    plain double (GH#68)

---
diff --git a/perl-GD.spec b/perl-GD.spec
index b050995..0c85e25 100644
--- a/perl-GD.spec
+++ b/perl-GD.spec
@@ -1,5 +1,5 @@
 Name:           perl-GD
-Version:        2.87
+Version:        2.91
 Release:        1%{?dist}
 Summary:        Perl interface to the GD graphics library
 License:        GPL-1.0-or-later OR Artistic-2.0
@@ -102,6 +102,74 @@ make test TEST_VERBOSE=1
 %{_mandir}/man3/GD::Simple.3*
 
 %changelog
+* Sun Aug 16 2026 Paul Howarth <paul@city-fan.org> - 2.91-1
+- Update to 2.91
+  - Add JXL, UHDR support for new libgd-2.4.0 (from git)
+  - JXL: newFromJxl/newFromJxlData readers, jxl() writer
+    (lossless/distance/effort), magic-byte autodetection in new()
+  - UHDR: New GD::UHDR class (newFromFile/newFromData, width/height/hasGainMap,
+    resize/crop/rotate/mirror, file/write, getSdr)
+  - Work around libgd 2.4.0 gd.h no longer declaring gdImageBoundsSafe()
+  - IMAGEQUANT: trueColorToPaletteSetMethod/SetQuality and the GD_QUANT_*
+    constants for the libimagequant-backed quantizer
+  - Guard for installations without libimagequant
+  - Fix imagequant feature autodetection in Makefile.PL (libimagequant surfaces
+    in gdlib.pc's Libs.private, not Requires.private
+  - Embed rpath (Linux) and fix stale blib/lib/GD/Image.pm so 'make test'
+    reliably exercises the just-configured libgd (GH#21 test infra); fix GD_LIQ
+    detection from the deprecated gdlib-config script
+  - Add Affine transformations (GH#21): GD::Image affine matrix builders
+    (affineIdentity/Scale/Rotate/ShearHorizontal/ShearVertical/Translate/
+     Concat/Invert/Flip/Expansion/Rectilinear/Equal/ApplyToPoint) and
+    transformAffineGetImage/transformAffineCopy/transformAffineBoundingBox,
+    wrapping gdAffine*/gdTransformAffine* (libgd >= 2.1.0); fix GD_AFFINE_*
+    constant visibility (same enum/#ifdef issue as GD_QUANT_*)
+  - Add more previously-unbound libgd methods (libgd >= 2.1.0 unless noted):
+    paletteToTrueColor, crop, cropAuto, cropThreshold, colorReplace,
+    colorReplaceArray, colorReplaceThreshold, convolution, resolution;
+    cloneImage, getTrueColorPixel, perceptualDiff (libgd >= 2.4.0); clone() now
+    uses the native gdImageClone() when available, fixing truecolor-ness loss on
+    the old new()+copy() fallback; Fix GD_CROP_* constant visibility (same
+    enum/#ifdef issue as GD_QUANT_*)
+  - Animated WebP support (libgd >= 2.4.0): new GD::WebpAnimWriter
+    (new/addImage/finish, wrapping gdWebpWriteOpenPtr/AddImage/PtrFinish) and
+    GD::WebpAnimReader (newFromData/info/nextImage, wrapping
+    gdWebpReadOpenCtx/GetInfo/NextImage) classes
+  - Animated/multi-image JXL support (libgd >= 2.4.0): new GD::JxlAnimWriter
+    (new/addImage/finish, wrapping gdJxlWriteOpenPtr/AddImage/PtrFinish) and
+    GD::JxlAnimReader (newFromData/info/nextImage, wrapping
+    gdJxlReadOpenCtx/GetInfo/NextImage) classes, mirroring
+    GD::WebpAnimReader/Writer
+  - Multi-page TIFF support (libgd >= 2.4.0): new GD::TiffMultiWriter
+    (new/addImage/finish, wrapping gdTiffWriteOpenPtr/AddImage/PtrFinish) and
+    GD::TiffMultiReader (newFromData/info/nextImage, wrapping
+    gdTiffReadOpenCtx/GetInfo/NextImage) classes, mirroring
+    GD::WebpAnimReader/Writer (pages have no per-page delay; nextImage()
+    returns a page-info hashref instead); also adds the GD_TIFF_* writer option
+    constants (colorspace, compression, resolution unit, alpha type)
+  - Per-format header introspection (libgd >= 2.4.0): new
+    GD::Image->pngInfoData/jpegInfoData/gifInfoData/bmpInfoData/avifInfoData/
+    heifInfoData class methods, wrapping
+    gd{Png,Jpeg,Gif,Bmp,Avif,Heif}GetInfoCtx; each reads just the container
+    facts (dimensions, bit depth, and similar) from an in-memory buffer without
+    fully decoding the image
+  - Fixed a longstanding bug in the in-memory gdIOCtx used by every
+    newFrom*Data()/*InfoData() method: its getC() callback never advanced the
+    read position, so any decoder reading a buffer byte-by-byte (as the new
+    bmpInfoData()'s BMP header parser does) would spin re-reading the first
+    byte forever; PNG, JPEG, GIF, WebP, TIFF, JXL, AVIF and HEIF decoding were
+    unaffected because they read through the bulk getBuf() callback instead,
+    which was already correct
+  - Worked around inconsistent success/failure return conventions across
+    libgd's new Get*InfoCtx functions: gdPngGetInfoCtx, gdJpegGetInfoCtx,
+    gdAvifGetInfoCtx and gdHeifGetInfoCtx all return 0 on success despite two
+    of their own header comments claiming the opposite, while gdGifGetInfoCtx
+    and gdBmpGetInfoCtx return 1 on success as documented
+  - t/affine.t: Compare affineInvert(scale(2,3))'s result with an epsilon
+    (1e-6) instead of exact is_deeply, since -Duselongdouble perls compute the
+    division in extended precision, giving a last-few-ULP-different 1/3 than a
+    plain double (GH#68)
+
 * Sat Aug 15 2026 Paul Howarth <paul@city-fan.org> - 2.87-1
 - Update to 2.87
   - Fix OpenBSD support (GH#63)

diff --git a/sources b/sources
index 6fddeea..05e815d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (GD-2.87.tar.gz) = 1054447b4cf5981969992b562cbee95e2c06aaa664482e534b80c4cc448ce47433137db0e8d734af1dbceb454a2304f8d6d2213af31206dfc885cadb20407b13
+SHA512 (GD-2.91.tar.gz) = 85b3fb9fdcacfb0950f6763bcf7b1190794370028d3ae52c60e63ce143b2922880843f9fd7b813df89fb531c647b1e6bd4f1483a1ac21027447aa4666d770f0b

                 reply	other threads:[~2026-08-16 10:27 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178687605064.1.17348326694720497688.rpms-perl-GD-3fcbef1f1325@fedoraproject.org \
    --to=paul@city-fan.org \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox