==================
- Fix the extremely rare potential for a crash when the C extensions
are in use. See `issue 35 <https://github.com/zopefoundation/zope.security/issues/35>`_.
- Fix `issue 7
<https://github.com/zopefoundation/zope.security/issues/7>`_: The
pure-Python proxy didn't propagate ``TypeError`` from ``__repr__``
and ``__str__`` like the C implementation did.
- Fix `issue 27 <https://github.com/zopefoundation/zope.security/issues/27>`_:
iteration of ``zope.interface.providedBy()`` is now allowed by
default on all versions of Python. Previously it only worked on
Python 2. Note that ``providedBy`` returns unproxied objects for backwards
compatibility.
- Fix ``__length_hint__`` of proxied iterator objects. Previously it
was ignored.
- Drop support for Python 3.3.
- Enable coveralls.io for coverage measurement and run doctests on all
supported Python versions.
- Fix `issue 9
<https://github.com/zopefoundation/zope.security/issues/9>`_:
iteration of ``itertools.groupby`` objects is now allowed by
default. In addition, iteration of all the custom iterator types
defined in itertools are also allowed by default.
- Simplify the internal ``_compat.py`` module now that we only run on
newer Python versions. See `PR 32 <https://github.com/zopefoundation/zope.security/pull/32>`_.
- Respect ``PURE_PYTHON`` at runtime. At build time, always try to
build the C extensions on supported platforms, ignoring
``PURE_PYTHON``. See `issue 33
<https://github.com/zopefoundation/zope.security/issues/33>`_.
- Fix watching checkers (``ZOPE_WATCH_CHECKERS=1``) in pure-Python
mode. See `issue 8 <https://github.com/zopefoundation/zope.security/issues/8>`_.
- Remove unused internal files from ``tests/``.
- Remove ``zope.security.setup``. It was unused and did not work
anyway.
- Fix the pure-Python proxy on Python 2 letting ``__getslice__`` and
``__setslice__`` fall through to ``__getitem__`` or ``__setitem__``,
respectively, if it raised an error.
- Fix the pure-Python proxy calling a wrapped ``__getattr__`` or
``__getattribute__`` more than once in situations where the C
implementation only called it one time (when it raised an
AttributeError).
- Reach 100% test coverage and maintain it via automated checks.