Update release notes to match template for #7864

This commit is contained in:
Alex Clark 2024-03-14 20:50:17 -04:00
parent 180f37b18e
commit b5f77799ca
11 changed files with 70 additions and 81 deletions

View File

@ -11,7 +11,10 @@ This release provides an updated install script and updated wheels to
include libwebp 1.3.2, preventing a potential heap buffer overflow in include libwebp 1.3.2, preventing a potential heap buffer overflow in
WebP. WebP.
Other Changes
=============
Updated tests to pass with latest zlib version Updated tests to pass with latest zlib version
============================================== ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The release of zlib 1.3 caused one of the tests in the Pillow test suite to fail. The release of zlib 1.3 caused one of the tests in the Pillow test suite to fail.

View File

@ -90,3 +90,8 @@ Release GIL when fetching WebP frames
Python's Global Interpreter Lock is now released when fetching WebP frames from Python's Global Interpreter Lock is now released when fetching WebP frames from
the libwebp decoder. the libwebp decoder.
Add release notes for 2.3.1, 2.3.2, 2.5.2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TODO

View File

@ -35,7 +35,7 @@ which filter should be used for resampling. Possible values are:
were changed in this version. were changed in this version.
Bicubic and bilinear downscaling Bicubic and bilinear downscaling
-------------------------------- ++++++++++++++++++++++++++++++++
From the beginning ``BILINEAR`` and ``BICUBIC`` filters were based on affine From the beginning ``BILINEAR`` and ``BICUBIC`` filters were based on affine
transformations and used a fixed number of pixels from the source image for transformations and used a fixed number of pixels from the source image for
@ -52,7 +52,7 @@ If you have previously used any tricks to maintain quality when downscaling with
steps), they are unnecessary now. steps), they are unnecessary now.
Antialias renamed to Lanczos Antialias renamed to Lanczos
---------------------------- ++++++++++++++++++++++++++++
A new ``LANCZOS`` constant was added instead of ``ANTIALIAS``. A new ``LANCZOS`` constant was added instead of ``ANTIALIAS``.
@ -66,19 +66,19 @@ The ``ANTIALIAS`` constant is left for backward compatibility and is an alias
for ``LANCZOS``. for ``LANCZOS``.
Lanczos upscaling quality Lanczos upscaling quality
------------------------- +++++++++++++++++++++++++
The image upscaling quality with ``LANCZOS`` filter was almost the same as The image upscaling quality with ``LANCZOS`` filter was almost the same as
``BILINEAR`` due to a bug. This has been fixed. ``BILINEAR`` due to a bug. This has been fixed.
Bicubic upscaling quality Bicubic upscaling quality
------------------------- +++++++++++++++++++++++++
The ``BICUBIC`` filter for affine transformations produced sharp, slightly The ``BICUBIC`` filter for affine transformations produced sharp, slightly
pixelated image for upscaling. Bicubic for convolutions is more soft. pixelated image for upscaling. Bicubic for convolutions is more soft.
Resize performance Resize performance
------------------ ++++++++++++++++++
In most cases, convolution is more a expensive algorithm for downscaling In most cases, convolution is more a expensive algorithm for downscaling
because it takes into account all the pixels of source image. Therefore because it takes into account all the pixels of source image. Therefore
@ -95,7 +95,7 @@ The upscaling performance of the ``LANCZOS`` filter has remained the same. For
times. times.
Default filter for thumbnails Default filter for thumbnails
----------------------------- +++++++++++++++++++++++++++++
In Pillow 2.5 the default filter for :py:meth:`~PIL.Image.Image.thumbnail` was In Pillow 2.5 the default filter for :py:meth:`~PIL.Image.Image.thumbnail` was
changed from ``NEAREST`` to ``ANTIALIAS``. Antialias was chosen because all the changed from ``NEAREST`` to ``ANTIALIAS``. Antialias was chosen because all the
@ -105,7 +105,6 @@ other filters gave poor quality for reduction. Starting from Pillow 2.7.0,
uses supersampling internally, not convolutions. uses supersampling internally, not convolutions.
Image transposition Image transposition
^^^^^^^^^^^^^^^^^^^
A new method ``TRANSPOSE`` has been added for the A new method ``TRANSPOSE`` has been added for the
:py:meth:`~PIL.Image.Image.transpose` operation in addition to :py:meth:`~PIL.Image.Image.transpose` operation in addition to
@ -127,7 +126,7 @@ implementations use Gaussian blur internally, all changes from this chapter
are also applicable to it. are also applicable to it.
Blur radius Blur radius
----------- +++++++++++
There was an error in the previous version of Pillow, where blur radius (the There was an error in the previous version of Pillow, where blur radius (the
standard deviation of Gaussian) actually meant blur diameter. For example, to standard deviation of Gaussian) actually meant blur diameter. For example, to
@ -138,7 +137,7 @@ If you used a Gaussian blur with some radius value, you need to divide this
value by two. value by two.
Blur performance Blur performance
---------------- ++++++++++++++++
Box filter computation time is constant relative to the radius and depends Box filter computation time is constant relative to the radius and depends
on source image size only. Because the new Gaussian blur implementation on source image size only. Because the new Gaussian blur implementation
@ -150,7 +149,7 @@ second for radius 1, 3.6 seconds for radius 10 and 17 seconds for 50, now blur
with any radius on same image is executed for 0.2 seconds. with any radius on same image is executed for 0.2 seconds.
Blur quality Blur quality
------------ ++++++++++++
The previous implementation takes into account only source pixels within The previous implementation takes into account only source pixels within
2 * standard deviation radius for every destination pixel. This was not enough, 2 * standard deviation radius for every destination pixel. This was not enough,

View File

@ -34,7 +34,7 @@ fixed in Pillow 3.1, and some of them have been extended to have
different behavior. different behavior.
TiffImagePlugin.IFDRational TiffImagePlugin.IFDRational
--------------------------- +++++++++++++++++++++++++++
Pillow 3.0 changed rational metadata to use a float. In Pillow 3.1, Pillow 3.0 changed rational metadata to use a float. In Pillow 3.1,
this has changed to allow the expression of 0/0 as a valid piece of this has changed to allow the expression of 0/0 as a valid piece of
@ -52,7 +52,7 @@ This class should be used when adding a rational value to an
ImageFileDirectory for saving to image metadata. ImageFileDirectory for saving to image metadata.
JpegImagePlugin._getexif JpegImagePlugin._getexif
------------------------ ++++++++++++++++++++++++
In Pillow 3.0, the dictionary returned from the private, experimental, In Pillow 3.0, the dictionary returned from the private, experimental,
but generally widely used ``_getexif`` function changed to reflect the but generally widely used ``_getexif`` function changed to reflect the
@ -67,7 +67,7 @@ The format returned by Pillow 3.0 has been abandoned. A more fully
featured interface for EXIF is anticipated in a future release. featured interface for EXIF is anticipated in a future release.
Out of Spec Metadata Out of Spec Metadata
-------------------- ++++++++++++++++++++
In Pillow 3.0 and 3.1, images that contain metadata that is internally In Pillow 3.0 and 3.1, images that contain metadata that is internally
consistent, but not in agreement with the TIFF spec, may cause an consistent, but not in agreement with the TIFF spec, may cause an

View File

@ -22,7 +22,7 @@ The ``GbrImagePlugin`` (GIMP brush format) has been updated to fix
support for version 1 files and add support for version 2 files. support for version 1 files and add support for version 2 files.
Passthrough Parameters for ImageDraw.text Passthrough Parameters for ImageDraw.text
========================================= ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
``ImageDraw.multiline_text`` and ``ImageDraw.multiline_size`` take extra ``ImageDraw.multiline_text`` and ``ImageDraw.multiline_size`` take extra
spacing parameters above what are used in ``ImageDraw.text`` and spacing parameters above what are used in ``ImageDraw.text`` and
@ -31,7 +31,7 @@ spacing parameters above what are used in ``ImageDraw.text`` and
to the corresponding multiline functions. to the corresponding multiline functions.
ImageSequence.Iterator changes ImageSequence.Iterator changes
============================== ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
``ImageSequence.Iterator`` is now an actual iterator implementing the ``ImageSequence.Iterator`` is now an actual iterator implementing the
Iterator protocol. It is also now possible to seek to the first image Iterator protocol. It is also now possible to seek to the first image

View File

@ -5,7 +5,7 @@ Other Changes
============= =============
Python 2.6 and 3.2 Dropped Python 2.6 and 3.2 Dropped
========================== ^^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow 4.0 no longer supports Python 2.6 and 3.2. We will not be Pillow 4.0 no longer supports Python 2.6 and 3.2. We will not be
creating binaries, testing, or retaining compatibility with these creating binaries, testing, or retaining compatibility with these
@ -13,12 +13,12 @@ releases. This release removes some workarounds for those Python
releases, so the final working version of Pillow on 2.6 or 3.2 is 3.4.2. releases, so the final working version of Pillow on 2.6 or 3.2 is 3.4.2.
Support added for Python 3.6 Support added for Python 3.6
============================ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow 4.0 supports Python 3.6. Pillow 4.0 supports Python 3.6.
OleFileIO.py OleFileIO.py
============ ^^^^^^^^^^^^
``OleFileIO.py`` has been removed as a vendored file and is now installed ``OleFileIO.py`` has been removed as a vendored file and is now installed
from the upstream :pypi:`olefile` PyPI package. All internal dependencies are from the upstream :pypi:`olefile` PyPI package. All internal dependencies are
@ -27,19 +27,19 @@ redirected to the olefile package. Direct accesses to
upstream olefile into ``sys.modules`` in its place. upstream olefile into ``sys.modules`` in its place.
SGI image save SGI image save
============== ^^^^^^^^^^^^^^
It is now possible to save images in modes ``L``, ``RGB``, and It is now possible to save images in modes ``L``, ``RGB``, and
``RGBA`` to the uncompressed SGI image format. ``RGBA`` to the uncompressed SGI image format.
Zero sized images Zero sized images
================= ^^^^^^^^^^^^^^^^^
Pillow 3.4.0 removed support for creating images with (0,0) size. This Pillow 3.4.0 removed support for creating images with (0,0) size. This
has been reenabled, restoring pre 3.4 behavior. has been reenabled, restoring pre 3.4 behavior.
Internal handles_eof flag Internal handles_eof flag
========================= ^^^^^^^^^^^^^^^^^^^^^^^^^
The ``handles_eof flag`` for decoding images has been removed, as there The ``handles_eof flag`` for decoding images has been removed, as there
were no internal users of the flag. Anyone maintaining image decoders were no internal users of the flag. Anyone maintaining image decoders
@ -47,7 +47,7 @@ outside of the Pillow source tree should consider using the cleanup
function pointers instead. function pointers instead.
Image.core.stretch removed Image.core.stretch removed
========================== ^^^^^^^^^^^^^^^^^^^^^^^^^^
The stretch function on the core image object has been removed. This The stretch function on the core image object has been removed. This
used to be for enlarging the image, but has been aliased to resize used to be for enlarging the image, but has been aliased to resize

View File

@ -58,14 +58,14 @@ This refactor fixed some bugs with palette handling when saving
multiple frame GIFs. multiple frame GIFs.
New Method: Image.remap_palette New Method: Image.remap_palette
=============================== ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The method :py:meth:`PIL.Image.Image.remap_palette()` has been The method :py:meth:`PIL.Image.Image.remap_palette()` has been
added. This method was hoisted from the GifImagePlugin code used to added. This method was hoisted from the GifImagePlugin code used to
optimize the palette. optimize the palette.
Added Decoder Registry and Support for Python Based Decoders Added Decoder Registry and Support for Python Based Decoders
============================================================ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There is now a decoder registry similar to the image plugin There is now a decoder registry similar to the image plugin
registries. Image plugins can register a decoder, and it will be registries. Image plugins can register a decoder, and it will be
@ -75,7 +75,7 @@ their C based counterparts, they may be easier and quicker to develop
or safer to run. or safer to run.
Tests Tests
===== ^^^^^
Many tests have been added, including correctness tests for image Many tests have been added, including correctness tests for image
formats that have been previously untested. formats that have been previously untested.

View File

@ -1,23 +1,6 @@
5.1.0 5.1.0
----- -----
Other Changes
=============
New File Format
^^^^^^^^^^^^^^^
BLP File Format
---------------
Pillow now supports reading the BLP "Blizzard Mipmap" file format used
for tiles in Blizzard's engine.
WebP memory leak
^^^^^^^^^^^^^^^^
A memory leak when opening ``WebP`` files has been fixed.
API Changes API Changes
=========== ===========
@ -34,3 +17,17 @@ Append to PDF Files
Images can now be appended to PDF files in place by passing in Images can now be appended to PDF files in place by passing in
``append=True`` when saving the image. ``append=True`` when saving the image.
Other Changes
=============
New BLP File Format
^^^^^^^^^^^^^^^^^^^
Pillow now supports reading the BLP "Blizzard Mipmap" file format used
for tiles in Blizzard's engine.
WebP memory leak
^^^^^^^^^^^^^^^^
A memory leak when opening ``WebP`` files has been fixed.

View File

@ -13,23 +13,8 @@ If an FPX image reports that it has a large number of bands, a large amount of
resources will be used when trying to process the image. This is fixed by resources will be used when trying to process the image. This is fixed by
limiting the number of bands to those usable by Pillow. limiting the number of bands to those usable by Pillow.
:cve:`2020-5310`: Overflow checks added to TIFF image processing :cve:`2020-5310`, :cve:`2020-5311`, :cve:`2020-5312`, :cve:`2020-5313`: Overflow checks added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Overflow checks have been added when calculating the size of a memory block to be reallocated Overflow checks have been added when calculating the size of a memory block to be reallocated
in the processing of a TIFF image. in the processing of TIFF, SGI, PCX and FLI images.
:cve:`2020-5311`: Overflow checks added to SGI image processing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Buffer overruns were found when processing an SGI image. Checks have been added to prevent this.
:cve:`2020-5312`: Overflow checks added to PCX image processing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Buffer overruns were found when processing a PCX image. Checks have been added to prevent this.
:cve:`2020-5313`: Overflow checks added to FLI image processing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Buffer overruns were found when processing an FLI image. Checks have been added to prevent this.

View File

@ -22,7 +22,7 @@ with a ``dtype`` argument.
>>> >>>
Catch OSError when checking if destination is sys.stdout Catch OSError when checking if destination is sys.stdout
======================================================== ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In 8.3.0, a check to see if the destination was ``sys.stdout`` when saving an image was In 8.3.0, a check to see if the destination was ``sys.stdout`` when saving an image was
updated. This lead to an :py:exc:`OSError` being raised if the environment restricted updated. This lead to an :py:exc:`OSError` being raised if the environment restricted

View File

@ -1,6 +1,25 @@
9.4.0 9.4.0
----- -----
Security
========
Fix memory DOS in ImageFont
^^^^^^^^^^^^^^^^^^^^^^^^^^^
A corrupt or specially crafted TTF font could have font metrics that lead to
unreasonably large sizes when rendering text in font. ``ImageFont.py`` did not
check the image size before allocating memory for it. This dates to the PIL
fork. Pillow 8.2.0 added a check for large sizes, but did not consider the
case where one dimension is zero.
Null pointer dereference crash in ImageFont
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow attempted to dereference a null pointer in ``ImageFont``, leading to a
crash. An error is now raised instead. This has been present since
Pillow 8.0.0.
API Additions API Additions
============= =============
@ -69,25 +88,6 @@ When saving a JPEG image, a comment can now be written from
im.save(out, comment="Test comment") im.save(out, comment="Test comment")
Security
========
Fix memory DOS in ImageFont
^^^^^^^^^^^^^^^^^^^^^^^^^^^
A corrupt or specially crafted TTF font could have font metrics that lead to
unreasonably large sizes when rendering text in font. ``ImageFont.py`` did not
check the image size before allocating memory for it. This dates to the PIL
fork. Pillow 8.2.0 added a check for large sizes, but did not consider the
case where one dimension is zero.
Null pointer dereference crash in ImageFont
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow attempted to dereference a null pointer in ``ImageFont``, leading to a
crash. An error is now raised instead. This has been present since
Pillow 8.0.0.
Other Changes Other Changes
============= =============