===================
- Make ``poll_invalidations`` handle other retryable internal
exceptions besides just ``ReadConflictError`` so they don't
propagate out to ``transaction.begin()``.
- Make the zodburi resolver entry points not require a specific
RelStorage extra such as 'postgres', in case there is a desire to
use a different database driver than the default that's installed
with that extra. See :issue:`342`, reported by Éloi Rivard.
- Make the zodburi resolvers accept the 'driver' query paramater to
allow selecting a specific driver to use. This functions the same as
in a ZConfig configuration.
- Make the zodburi resolvers more strict on the distinction between
boolean arguments and arbitrary integer arguments. Previously, a
query like ``?read_only=12345&cache_local_mb=yes`` would have been
interpreted as ``True`` and ``1``, respectively. Now it produces errors.
- Fix the calculation of the persistent cache size, especially on
Python 2. This is used to determine when to shrink the disk cache.
See :issue:`317`.
- Fix several race conditions when packing history-free storages
through a combination of changes in ordering and more strongly
consistent (``READ ONLY REPEATABLE READ``) transactions.
Reported in :issue:`325` by krissik with initial PR by Andreas
Gabriel.
- Make ``zodbpack`` pass RelStorage specific options like
``--prepack`` and ``--use-prepack-state`` to the RelStorage, even
when it has been wrapped in a ``zc.zlibstorage``.
- Reduce the amount of memory required to pack a RelStorage through
more careful datastructure choices. On CPython 3, the peak
memory usage of the prepack phase can be up to 9 times less. On
CPython 2, pre-packing a 30MM row storage required 3GB memory; now
it requires about 200MB.
- Use server-side cursors during packing when available, further
reducing the amount of memory required. See :issue:`165`.
- Make history-free database iterators from the same storage use a
consistent view of the database (until a transaction is committed
using the storage or ``sync()`` is called). This prevents data loss
in some cases. See :issue:`344`.
- Make copying transactions *from* a history-free RelStorage (e.g., with
``zodbconvert``) require substantially less memory (75% less).
- Make copying transactions *to* a RelStorage clean up temporary blob
files.
- Make ``zodbconvert`` log progress at intervals instead of for every
transaction. Logging every transaction could add significant overhead
unless stdout was redirected to a file.
- Avoid attempting to lock objects being created. See :issue:`329`.
- Make cache vacuuming faster.