cpython/Misc
Tim Peters 2f228e75e4 Get rid of the superstitious "~" in dict hashing's "i = (~hash) & mask".
The comment following used to say:
	/* We use ~hash instead of hash, as degenerate hash functions, such
	   as for ints <sigh>, can have lots of leading zeros. It's not
	   really a performance risk, but better safe than sorry.
	   12-Dec-00 tim:  so ~hash produces lots of leading ones instead --
	   what's the gain? */
That is, there was never a good reason for doing it.  And to the contrary,
as explained on Python-Dev last December, it tended to make the *sum*
(i + incr) & mask (which is the first table index examined in case of
collison) the same "too often" across distinct hashes.

Changing to the simpler "i = hash & mask" reduced the number of string-dict
collisions (== # number of times we go around the lookup for-loop) from about
6 million to 5 million during a full run of the test suite (these are
approximate because the test suite does some random stuff from run to run).
The number of collisions in non-string dicts also decreased, but not as
dramatically.

Note that this may, for a given dict, change the order (wrt previous
releases) of entries exposed by .keys(), .values() and .items().  A number
of std tests suffered bogus failures as a result.  For dicts keyed by
small ints, or (less so) by characters, the order is much more likely to be
in increasing order of key now; e.g.,

>>> d = {}
>>> for i in range(10):
...    d[i] = i
...
>>> d
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
>>>

Unfortunately. people may latch on to that in small examples and draw a
bogus conclusion.

test_support.py
    Moved test_extcall's sortdict() into test_support, made it stronger,
    and imported sortdict into other std tests that needed it.
test_unicode.py
    Excluced cp875 from the "roundtrip over range(128)" test, because
    cp875 doesn't have a well-defined inverse for unicode("?", "cp875").
    See Python-Dev for excruciating details.
Cookie.py
    Chaged various output functions to sort dicts before building
    strings from them.
test_extcall
    Fiddled the expected-result file.  This remains sensitive to native
    dict ordering, because, e.g., if there are multiple errors in a
    keyword-arg dict (and test_extcall sets up many cases like that), the
    specific error Python complains about first depends on native dict
    ordering.
2001-05-13 00:19:31 +00:00
..
RPM distutils setup files for Tkinter 2000-10-16 15:36:25 +00:00
ACKS SF bug 418296: WinMain.c should use WIN32_LEAN_AND_MEAN. 2001-04-24 05:16:29 +00:00
AIX-NOTES Rename Setup.in to Setup.dist, and assume that configure will create 2000-10-26 17:07:40 +00:00
BeOS-NOTES Completely revamped BeOS notes, by Donn Cave (SF patch 411834). 2001-04-10 21:51:29 +00:00
BeOS-setup.py This is for BeOS users who want to build all the modules. It's 2001-04-10 21:50:09 +00:00
BLURB Drop Capitalized Important Words. 1997-11-25 15:40:06 +00:00
BLURB.LUTZ Initial revision 1994-01-26 10:20:16 +00:00
BLURB.WINDOWS A nice blurb that Mark Hammond wrote, aimed at Windows users. 1997-11-05 17:15:02 +00:00
cheatsheet Very useful file! 1994-08-05 15:57:31 +00:00
comparisons A comparison with several other languages that also appears in the 1997-11-20 21:15:28 +00:00
editline-fix Added editline fix 1996-09-12 17:29:33 +00:00
faq2html.py /usr/local/bin/python -> /usr/bin/env python 1996-11-27 19:52:01 +00:00
find_recursionlimit.py script that reports a fairly safe recursionlimit for a specific platform 2000-08-31 19:24:17 +00:00
fixfuncptrs.sh Initial revision 1994-01-26 10:20:16 +00:00
gdbinit PyObject_Dump() -> _PyObject_Dump() 2001-01-24 04:18:13 +00:00
HISTORY Added release dates (in some cases detemined by looking at the mtime 2000-09-04 17:24:24 +00:00
HPUX-NOTES Added note about libpython1.5.a. 1997-07-19 20:44:33 +00:00
HYPE Initial revision 1994-04-14 13:02:35 +00:00
indent.pro Some new files... 1994-09-14 14:06:46 +00:00
Makefile.pre.in Get rid of weird @SET_CXX@ macro occurrence. 2001-01-23 01:53:41 +00:00
NEWS Get rid of the superstitious "~" in dict hashing's "i = (~hash) & mask". 2001-05-13 00:19:31 +00:00
NEXT-NOTES PS: use -O2, not -O3 1996-09-06 23:31:18 +00:00
Porting mini-faq on porting python 1998-08-10 16:36:48 +00:00
PURIFY.README Updated for Python 1.5, including my experiences with Purify on 1997-10-07 15:50:58 +00:00
python-mode.el (py-pdbtrack-track-stack-file): On Ken's suggestion, add "pdbtrack:" 2001-04-11 22:27:41 +00:00
python.man Mention pydoc in the man page 2001-04-05 14:50:40 +00:00
README Updated to include all files here. 2000-09-01 23:22:12 +00:00
renumber.py /usr/local/bin/python -> /usr/bin/env python 1996-11-27 19:52:01 +00:00
RFD Initial revision 1994-01-26 10:20:16 +00:00
setuid-prog.c correct bogus instructions 'ccoment out' -> 'uncomment' 1998-09-10 20:18:09 +00:00
unicode.txt Updated according to the changes made to the "s#" parser marker 2000-09-21 21:21:59 +00:00
vgrindefs New version from Neale... He promised it's the last. 1997-11-11 16:36:14 +00:00

Python Misc subdirectory
========================

This directory contains files that wouldn't fit in elsewhere, in
particular the UNIX manual page, an Emacs mode for Python source code,
and a list of Frequently Asked Questions (and their answers).  Some
documents are only of historic importance.

Files found here
----------------

ACKS		Acknowledgements
AIX-NOTES	Notes for building Python on AIX (all new!)
BLURB		A quick description of Python for newcomers
BLURB.LUTZ	A testimonial from a converted Tcl/Perl hacker :-)
BLURB.WINDOWS	First announcement of Python for Windows
HISTORY		News from previous releases -- oldest last
HPUX-NOTES	Notes about dynamic loading under HP-UX
HYPE		More hype about Python
Makefile	Used for administrative chores like cleaning up
Makefile.pre.in	Generic Makefile template for building extensions
NEWS		News for this release
NEXT-NOTES	Porting notes for NeXT
PURIFY.README	Information for Purify users
Porting		Mini-FAQ on porting to new platforms
README		The file you're reading now
RFD		Request For Discussion about a Python newsgroup
cheatsheet	Quick summary of Python by Ken Manheimer
comparisons	(Old) comparisons to some other languages
editline-fix	A news article on how to fix R$'s editline for Python
faq2html	FAQ to HTML converter by Ka-Ping Yee
find_recursionlimit.py  Script to find a value for sys.maxrecursionlimit
fixfuncptrs.sh	Shell script to fix function pointer initializers
indent.pro	GNU indent profile approximating my C style
python-mode.el	Emacs mode for editing Python programs
python.man	UNIX man page for the python interpreter
renumber.py	Script to renumber the sections in the FAQ
setuid-prog.c	C helper program for set-uid Python scripts
unicode.txt	Marc-Andre Lemburg's specification of the Unicode API
vgrindefs	Python configuration for vgrind (a generic pretty printer)