[Zodb-checkins] CVS: ZODB3 - NEWS.txt:1.3

Jeremy Hylton jeremy@zope.com
Wed, 11 Sep 2002 01:46:45 -0400


Update of /cvs-repository/ZODB3
In directory cvs.zope.org:/tmp/cvs-serv4361

Modified Files:
	NEWS.txt 
Log Message:
draft a bunch of entries for the news file


=== ZODB3/NEWS.txt 1.2 => 1.3 ===
--- ZODB3/NEWS.txt:1.2	Thu Aug 22 22:59:10 2002
+++ ZODB3/NEWS.txt	Wed Sep 11 01:46:44 2002
@@ -16,6 +16,113 @@
 
 XXX Can probably get some details from Zope changes.txt
 
+New ZODB cache
+--------------
+
+Toby Dickenson implemented a new Connection cache for ZODB.  The cache
+is responsible for pointer swizzling (translating between oids and
+Python objects) and for keeping recently used objects in memory.  The
+new cache is a big improvement over the old cache.  It strictly honors
+its size limit, where size is specified in number of objects, and it
+evicts objects in least recently used (LRU) order.
+
+Users should take care when setting the cache size, which has a
+default value of 400 objects.  The old version of the cache often held
+many more objects than its specified size.  An application may not
+perform as well with a small cache size, because the cache no longer
+exceeds the limit.
+
+XXX perhaps Toby can say more
+
+Storages
+--------
+
+The index used by FileStorage was reimplemented using a custom BTrees
+object.  The index maps oids to file offsets, and is kept in memory at
+all times.  The new index uses about 1/4 the memory of the old,
+dictionary-based index.  See ZODB.fsIndex for details.
+
+A security flaw was corrected in transactionalUndo().  The transaction
+ids returned by undoLog() and used for transactionalUndo() contained a
+file offset.  An attacker could construct a pickle with a bogus
+transaction record in its binary data, deduce the position of the
+pickle in the file from the undo log, then submit an undo with a bogus
+file position that caused the pickle to get written as a regular data
+record.  The implementation was fixed so that file offsets are not
+included in the transaction ids.
+
+Several storages now have an explicit read-only mode.  For example,
+passing the keyword argument read_only=1 to FileStorage will make it
+read-only.  If a write operation is performed on a read-only storage,
+a ReadOnlyError will be raised.
+
+The storage API was extended with new methods that support the Zope
+Replication Service (ZRS).  XXX restore()
+
+FileStorage is now more cautious about creating a new file when it
+believes a file does not exist.  This change is a workaround for bug
+in Python versions upto and including 2.1.3.  If the interpreter was
+builtin without large file support but the platform had it,
+os.path.exists() would return false for large files.  The fix is to
+try to open the file first, and decide whether to create a new file
+based on errno.
+
+XXX abort/commit version
+
+BTrees
+------
+
+BTrees no longer ignore exceptions raised when two keys are compared.
+
+Tim Peters fixed many small bugs in the BTrees code.  These included
+many fixes for range searches, including the "range search bug:" If
+the smallest key S in a bucket in a BTree is deleted, doing a range
+search on the BTree with S on the high end may claim that the range is
+empty even when it's not.  XXX Tim really needs to provide a short
+summary, since I've got no idea what the highlights are.
+
+ZEO
+---
+
+XXX Need to incorporate ZEO CHANGES.txt into ZODB3 checkout.
+
+Other features
+--------------
+
+When a ConflictError is raised, the exception object now has a
+sensible structure, thanks to a patch from Greg Ward.  The exception
+now uses the following standard attributes: oid, class_name, message,
+serials.  See the ZODB.POSException.ConflictError doc string for
+details.
+
+It is now easier to customize the registration of persistent objects
+with a transaction.  The low-level persistence mechanism in
+cPersistence.c registers with the object's jar instead of with the
+current transaction.  The jar (Connection) then registers with the
+transaction.  This redirection would allow specialized Connection's to
+change the default policy on how the transaction manager is selected
+without hacking the Transaction module.
+
+Empty transactions can be committed without interacting with the
+storage.  It is possible for registration to be occur unintentionally
+and for a persistent object to compensate by making itself as
+unchanged.  When this happens, it's possible to commit a transaction
+with no modified objects.  The change allows such transactions to
+finish even on a read-only storage.
+
+Other bugs fixed
+----------------
+
+If an exception occurs inside an _p_deactivate() method, a traceback
+is printed on stderr.  Previous versions of ZODB silently cleared the
+exception. 
+
+ExtensionClass and ZODB now work correctly with a Python debug build.
+
+All C code has been fixed to use a consistent set of functions from
+the Python memory API.  This allows ZODB to be used in conjunction
+with pymalloc, the default allocator in Python 2.2.
+
 What's new in StandaloneZODB 1.0 final?
 =======================================
 Release date: 08-Feb-2002