v5.6.0June 11, 2020
- 🛠 Fix KeyError on releasing resources of a Connection when closing the DB.
This requires at least version 2.4 of the
issue 208 <https://github.com/zopefoundation/ZODB/issues/208>_.
- 🛠 Fix KeyError on releasing resources of a Connection when closing the DB. This requires at least version 2.4 of the
➕ Add support for Python 3.7.
⬆️ Bump the dependency on zodbpickle to at least 1.0.1. This is required to avoid a memory leak on Python 2.7. See
issue 203 <https://github.com/zopefoundation/ZODB/issues/203>_.
⬆️ Bump the dependency on persistent to at least 4.4.0.
👉 Make the internal support functions for dealing with OIDs (
u64) somewhat faster and raise more informative exceptions on certain types of bad input. See
issue 216 <https://github.com/zopefoundation/ZODB/issues/216>_.
✂ Remove support for
python setup.py test. It hadn't been working for some time. See
issue #218 <https://github.com/zopefoundation/ZODB/issues/218>_.
✅ Make the tests run faster by avoiding calls to
- ZODB now uses pickle protocol 3 for both Python 2 and Python 3.
(Previously, protocol 2 was used for Python 2.)
The zodbpickle package provides a
zodbpickle.binarystring type that should be used in Python 2 to cause binary strings to be saved in a pickle binary format, so they can be loaded correctly in Python 3. Pickle protocol 3 is needed for this to work correctly.
Object identifiers in persistent references are saved as
zodbpickle.binarystrings in Python 2, so that they are loaded correctly in Python 3.
If an object is missing from the index while packing a
FileStorage, report its full
Storage imports are a bit faster.
👀 Storages can be important from non-seekable sources, like file-wrapped pipes.
➕ Add support for Python 3.6.
⬇️ Drop support for Python 3.3.
🚀 Ensure that the
releasemethod to its base instance. See
issue 78 <https://github.com/zopefoundation/ZODB/issues/788>_.
👉 Use a higher pickle protocol (2) for serializing objects on Python 2; previously protocol 1 was used. This is much more efficient for new-style classes (all persistent objects are new-style), at the cost of being very slightly less efficient for old-style classes.
.. note:: On Python 2, this will now allow open
fileobjects (but not open blobs or sockets) to be pickled (loading the object will result in a closed file); previously this would result in a
TypeError. Doing so is not recommended as they cannot be loaded in Python 3.
issue 179 <https://github.com/zopefoundation/ZODB/pull/179>_.
DB.closenow explicitly frees internal resources. This is helpful to avoid false positives in tests that check for leaks.
⚡️ Optimize getting the path to a blob file. See
issue 161 <https://github.com/zopefoundation/ZODB/pull/161>_.
💅 All classes are new-style classes on Python 2 (they were already new-style on Python 3). This improves performance on PyPy. See
issue 160 <https://github.com/zopefoundation/ZODB/pull/160>_.
- 🛠 Fix an import error. See
issue 158 <https://github.com/zopefoundation/ZODB/issues/158>_.
- 🛠 Fix an import error. See
- 🛠 Fixed: A blob misfeature set blob permissions so that blobs and blob
directories were only readable by the database process owner, rather
than honoring user-controlled permissions (e.g.
issue 155 <https://github.com/zopefoundation/ZODB/issues/155>_.
- 🛠 Fixed: A blob misfeature set blob permissions so that blobs and blob directories were only readable by the database process owner, rather than honoring user-controlled permissions (e.g.
- 🛠 Fixed: When opening FileStorages in read-only mode, non-existent files were silently created. Creating a read-only file-storage against a non-existent file errors.
- 🆓 Call new afterCompletion API on storages to allow them to free
resources after transaction complete.
issue 147 <https://github.com/zodb/relstorage/issues/147>__.
Take advantage of the new transaction-manager explicit mode to avoid starting transactions unnecessarily when transactions end.
Connection.new_oiddelegates to its storage, not the DB. This is helpful for improving concurrency in MVCC storages like RelStorage. See
issue 139 <https://github.com/zopefoundation/ZODB/issues/139>_.
persistentis no longer required at setup time. See
issue 119 <https://github.com/zopefoundation/ZODB/issues/119>_.
Connection.openno longer race on
self.transaction_manager, which could lead to
AttributeError. This was a bug introduced in 5.0.1. See
issue 142 <https://github.com/zopefoundation/ZODB/pull/143>_.
- 🆓 Call new afterCompletion API on storages to allow them to free resources after transaction complete. See