5.0.0
-----

Backwards incompatible changes
==============================

Python 3.3 dropped
^^^^^^^^^^^^^^^^^^

Python 3.3 is EOL and no longer supported due to moving testing from nose,
which is deprecated, to pytest, which doesn't support Python 3.3. We will not
be creating binaries, testing, or retaining compatibility with this version.
The final version of Pillow for Python 3.3 is 4.3.0.

Decompression bombs now raise exceptions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Pillow has previously emitted warnings for images that are
unexpectedly large and may be a denial of service. These warnings are
now upgraded to ``DecompressionBombError``\s for images that are twice
the size of images that trigger the ``DecompressionBombWarning``. The
default threshold is 128Mpx, or 0.5GB for an ``RGB`` or ``RGBA``
image. This can be disabled or changed by setting
``Image.MAX_IMAGE_PIXELS = None``.

Scripts
^^^^^^^

The scripts formerly installed by Pillow have been split into a
separate package, pillow-scripts, living at
https://github.com/python-pillow/pillow-scripts.


API changes
===========

OleFileIO.py
^^^^^^^^^^^^

The :pypi:`olefile` module is no longer a required dependency when installing Pillow.
Support for plugins requiring olefile will not be loaded if it is not
installed. This allows library consumers to avoid installing this dependency
if they choose. Some library consumers have little interest in the format
support and would like to keep dependencies to a minimum.

Further, the vendored version was removed in Pillow 4.0.0 and replaced with a
deprecation warning that PIL.OleFileIO would be removed in a future version.
This warning has been upgraded to an import error pending future removal.

Check parameter on _save
^^^^^^^^^^^^^^^^^^^^^^^^

Several image plugins supported a named ``check`` parameter on their
nominally private ``_save`` method to preflight if the image could be
saved in that format. That parameter has been removed.

API additions
=============

Image.transform
^^^^^^^^^^^^^^^

A new named parameter, ``fillcolor``, has been added to
``Image.transform``. This color specifies the background color to use in
the area outside the transformed area in the output image. This
parameter takes the same color specifications as used in ``Image.new``.

GIF disposal
^^^^^^^^^^^^

Multiframe GIF images now take an optional disposal parameter to
specify the disposal option for changed pixels.

Other changes
=============

Compressed TIFF images
^^^^^^^^^^^^^^^^^^^^^^

Previously, there were some compression modes (JPEG, Packbits, and
LZW) that were supported with Pillow's internal TIFF decoder. All
compressed TIFFs are now read using the ``libtiff`` decoder, as it
implements the compression schemes more correctly.

Libraqm is now dynamically linked
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The libraqm dependency for complex text scripts is now linked
dynamically at runtime rather than at packaging time. This allows us
to release binaries with support for libraqm if it is installed on the
user's machine.

Source layout changes
^^^^^^^^^^^^^^^^^^^^^

The Pillow source is now stored within the ``src`` directory of the
distribution. This prevents accidental imports of the PIL directory
when running Python from the project directory.

Setup.py changes
^^^^^^^^^^^^^^^^

Multiarch support on Linux should be more robust, especially on Debian
derivatives on ARM platforms. Debian's multiarch platform
configuration is run in preference to the sniffing of machine platform
and architecture.
