[Python-checkins] python/dist/src/Misc NEWS,1.772,1.773

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Sat, 24 May 2003 18:45:14 -0700


Update of /cvsroot/python/python/dist/src/Misc
In directory sc8-pr-cvs1:/tmp/cvs-serv14651/Misc

Modified Files:
	NEWS 
Log Message:
SF 742860: WeakKeyDictionary __delitem__ uses iterkeys

Someone review this, please!  Final releases are getting close, Fred
(the weakref guy) won't be around until Tuesday, and the pre-patch
code can indeed raise spurious RuntimeErrors in the presence of
threads or mutating comparison functions.

See the bug report for my confusions:  I can't see any reason for why
__delitem__ iterated over the keys.  The new one-liner implementation
is much faster, can't raise RuntimeError, and should be better-behaved
in all respects wrt threads.

New tests test_weak_keyed_bad_delitem and
test_weak_keyed_cascading_deletes fail before this patch.

Bugfix candidate for 2.2.3 too, if someone else agrees with this patch.


Index: NEWS
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v
retrieving revision 1.772
retrieving revision 1.773
diff -C2 -d -r1.772 -r1.773
*** NEWS	24 May 2003 20:18:24 -0000	1.772
--- NEWS	25 May 2003 01:45:11 -0000	1.773
***************
*** 13,16 ****
--- 13,22 ----
  -----------------
  
+ - SF bug 742860: WeakKeyDictionary __delitem__ uses iterkeys.  This
+   wasn't as threadsafe as it should be, was very inefficient, and could
+   raise RuntimeError if another thread mutated the dict during
+   __delitem__, or if a comparison function mutated it.  A new
+   implementation of WeakKeyDictionary.__delitem__ repairs all that.
+ 
  - SF bug 705231:  builtin pow() no longer lets the platform C pow()
    raise -1.0 to integer powers, because (at least) glibc gets it wrong