diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index d3dd048..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,4532 +0,0 @@
-Sat Oct  7 15:18:22 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/fcntlmodule.c: add BGN/END_SAVE macros around
-	fcntl/ioctl calls
-
-Sat Oct  7 15:14:01 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/pythonrun.c: keep exitfunc alive while calling it
-
-Sat Oct  7 15:08:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: better version sanity checks; get rid
-	of Widget.unbind_class()
-
-Fri Oct  6 11:31:30 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/formatter.py: added NullFormatter
-
-Fri Oct  6 11:30:57 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: strip <A> attribute values
-
-Fri Oct  6 11:30:28 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: typos in attrfind regex
-
-Fri Oct  6 11:26:52 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmlentitydefs.py: added lt, gt, amp back to entity
-	definitions
-
-Wed Oct  4 12:39:20 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/base64.py: Use binascii module (resulting in a 60-fold
-	speedup:-)
-
-Wed Oct  4 12:38:44 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Modules/binasciimodule.c: Added base64 support
-
-Wed Oct  4 12:36:53 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/uu.py: Fixed two minor errors.
-
-Tue Oct  3 10:41:15 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/binhex.py: Fixed hexbin handling
-
-Tue Oct  3 10:40:35 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/{Relnotes-1.3,ReadMeOrSuffer}: Clarified some things,
-	started adding mods since 1.3beta3
-
-Tue Oct  3 10:39:44 1995  Jack Jansen  <jack@cwi.nl>
-
-	* {Mac/macfs/macfsmodule.c, Modules/timemodule.c,
-        Python/{import.c,compile.c}}: Removed unused variables
-
-Sat Sep 30 13:05:26 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: new after options; text.search; new
-	image methods
-
-Sat Sep 30 13:01:49 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Makefile.pre.in: Move some stuff around so
-	customizations in Setup take precedence
-
-Sat Sep 30 13:01:02 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/newmodule.c: re-enable new.code(...) with new args
-
-Sat Sep 30 13:00:24 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/tkintermodule.c: clear quitMainLoop when we fall
-	through the main loop
-
-Sat Sep 30 12:51:50 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/ftplib.py: actualized example, catch EOFError, print
-	retrieved lines if debugging>2
-
-Sat Sep 30 12:50:46 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/httplib.py: actualized example/reference, fix bug w/
-	nonnumeric port
-
-Sat Sep 30 12:49:58 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/formatter.py: add flush_softspace() interface
-
-Sat Sep 30 12:49:36 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: allow _ in attr names (Netscape!)
-
-Sat Sep 30 12:48:54 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/{pstats.py,profile.py}: more robust coding, adapted for mac
-
-Sat Sep 30 12:10:43 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/rename2.h: delete PyNothing_Check, which does not
-	actually exist
-
-Wed Sep 27 12:22:17 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: entity definitions from HTML 2.0 std
-
-Sun Sep 24 17:08:22 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/ReadMeOrSuffer: Added some clarifications and fixed host
-	names.
-
-Sun Sep 24 17:06:50 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/MkPluginAliases.py: Load toolbox modules "by hand"
-	using imp, so this script should now work in a virgin
-	distribution.
-
-Sun Sep 24 17:05:24 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/mkapplet.py: Changed the way .rsrc and template
-	are copied: hopefully this will finally get the bundle stuff
-	right.
-
-Fri Sep 22 19:49:28 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/tkintermodule.c: Mac changes
-
-Thu Sep 21 20:55:50 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: added verbose option; added
-	ismap/align/width/height to handle_image args
-
-Thu Sep 21 20:54:32 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: fix <!...!> parsing; added verbose option;
-	don't lowercase entityrefs
-
-Thu Sep 21 20:52:38 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/nntplib.py: actualized example; added xover, xgtitle,
-	xpath, date methods by Kevan Heydon
-
-Thu Sep 21 16:36:34 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Parser/tokenizer.c: fix bogus resize length in nextc
-
-Wed Sep 20 16:31:51 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/traceback.py: add file parameter to all printing fns,
-	default stderr
-
-Mon Sep 18 18:00:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/irix5/panel.py: new exec syntax
-
-Mon Sep 18 17:54:35 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: added getitem/setitem to Image class;
-	changed call wrapping (again)
-
-Mon Sep 18 17:52:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/cgi.py: handle missing QUERY_STRING
-
-Mon Sep 18 17:50:43 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/SimpleHTTPServer.py: recognize a few more file types
-
-Mon Sep 18 17:49:24 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/{quopri.py,base64.py}: improved test/main program
-
-Mon Sep 18 17:44:04 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/compile.c: fix bug with missing default for last arg
-	(discovered by Tommy Burnette)
-
-Mon Sep 18 17:42:42 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/pythonrun.c: #undef argument, for the Mac
-
-Mon Sep 18 17:40:19 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/{getversion.c,getcopyright.c}: include Python.h
-
-Mon Sep 18 17:31:16 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/errors.c: remove unwanted fatal() from err_badcall()
-
-Mon Sep 18 17:29:36 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/{traceback.{c,h},ceval.c}: spell TraceBack with capital B
-
-Mon Sep 18 17:20:02 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/abstract.h: use Py_PROTO macro
-
-Mon Sep 18 17:17:59 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/abstract.c: adapted to K&R C
-
-Mon Sep 18 06:49:04 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Objects/classobject.c: Get ordering right for
-	TRACE_REFS/COUNT_ALLOCS combination (otherwise may get inc_count
-	sanity check abort).
-
-Wed Sep 13 14:39:47 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/socketmodule.c: plug some leaks
-
-Wed Sep 13 14:39:04 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Setup.in: added SITEPATH and DESTPATH variables
-
-Wed Sep 13 13:39:51 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/posixmodule.c: added 5th return item, clock time, to
-	posix.times()
-
-Wed Sep 13 13:39:06 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/stropmodule.c: added strop.translate(s, table)
-
-Wed Sep 13 13:38:35 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/timemodule.c: added time.strftime()
-
-Thu Sep  7 15:37:11 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/allobjects.h: removed redundant C++ hack
-
-Thu Sep  7 15:28:19 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/httplib.py: fixed the test program
-
-Thu Sep  7 15:22:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: move constants to Tkconstants; added
-	some; overridable error reporting; fix typo in propagate
-
-Fri Sep  1 18:55:11 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/mac/dbmac.py: add (dummy) mode arg to open()
-
-Fri Sep  1 18:53:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/mac/socket.py: added read/writelines, bufsize to makefile,
-	gethostbyaddr
-
-Fri Sep  1 16:36:47 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/FileDialog.py: Filter button should set
-	selection's directory, too
-
-Fri Sep  1 16:35:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: added OptionMenu class (tk_optionMenu
-	interface)
-
-Fri Sep  1 16:34:29 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: support value-less attributes, using
-	regex.group()
-
-Fri Sep  1 16:33:32 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: took out forms support (in favor a Grail
-	extension)
-
-Fri Sep  1 16:32:21 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/posixpath.py: rationalized os.path.split() so split "/a/"
-	yields "/a", ""
-
-Fri Sep  1 07:54:11 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/mkapplet.py: Slightly reorganized so it is useable
-	from another program, and put all print statements in 'if
-	DEBUG'.
-
-Fri Sep  1 07:53:17 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/binhextree.py: Fixed typo
-
-Fri Sep  1 07:50:53 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/Resources/bundle.rsrc.hqx: Minor fix
-
-Fri Sep  1 07:49:10 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/Relnotes-1.3: Updated 1.3 relnotes and added top-level
-	instructions
-
-Fri Sep  1 07:48:10 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macgetpath.c: Fixed to work on 68K (could be yet another
-	optimizer bug or something)
-
-Fri Sep  1 07:46:27 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Include/patchlevel.h: patchlevel set to 1.3b3
-
-Thu Aug 31 09:59:36 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/{pythonresources.h,macgetpath.c,macgetargv.c}: Python will
-	now attempt (again) to create at least a minimal preferences file
-	if it is missing.
-
-Thu Aug 31 09:58:28 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: Added List module
-
-Thu Aug 31 09:57:40 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/{macglue.c,macmain.c,mwerks/{mwfopenrf.c,malloc/malloc.c}}:
-        Removed unused variables
-
-Thu Aug 31 09:53:10 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/Resources/dialogs.rsrc.hqx: Added version resource Added
-	dialogs for initial preference file creation
-
-Thu Aug 31 09:53:09 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/Resources/bundle.rsrc.hqx: Added version resource Added
-	dialogs for initial preference file creation
-
-Thu Aug 31 09:51:58 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/mwerks/mwfopenrf.c: removed unused var
-
-Thu Aug 31 09:51:13 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/mwerks/malloc/malloc.c: Removed unused var
-
-Thu Aug 31 09:48:43 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/mkapplet.py: - Allow PythonApplet to be an alias -
-	Correctly set bundle and init bits
-
-Thu Aug 31 09:47:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/binhextree.py: Added functionality: locate CW
-	projects, copy them, empty them and binhex them.
-
-Thu Aug 31 09:46:13 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/RunLibScript.py: - imp seems to always want a file
-	object arg - continue if resource file not found (may be an
-	applet)
-
-Thu Aug 31 09:44:23 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Modules/binasciimodule.c: Obscure bugfix
-
-Thu Aug 31 09:40:03 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/macostools.py: copy() can now create destination path
-
-Thu Aug 31 09:38:01 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/FrameWork.py: Fixed dialog-window event handling
-
-Wed Aug 30 19:44:41 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Setup.in: fix typo in bsddb entry
-
-Wed Aug 30 08:19:30 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/uu.py: Changed arguments and added a lot of functionality
-	besides
-
-Tue Aug 29 15:25:11 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/mimetools.py: forget previous change (content-encoding)
-
-Tue Aug 29 15:19:51 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/mimetools.py: encoding can be content-transfer-encoding or
-	content-encoding
-
-Tue Aug 29 15:19:12 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/urllib.py: support overriding how to open unknown url
-	types
-
-Tue Aug 29 15:18:24 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/CGIHTTPServer.py: changed some commas into percent signs
-
-Tue Aug 29 05:18:14 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* {Python/sysmodule.c,Objects/object.c}: Implemented two new
-	functions in sys: getcounts() returns a list of counts of
-	allocations and deallocations for all different object
-	types. getobjects(n [, type ]) returns a list of recently
-	allocated and not-yet-freed objects of the given type (all objects
-	if no type given). Only the n most recent (all if n==0) objects
-	are returned. getcounts is only available if compiled with
-	-DCOUNT_ALLOCS, getobjects is only available if compiled with
-	-DTRACE_REFS. Note that everything must be compiled with these
-	options!
-
-Mon Aug 28 05:00:43 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Objects/classobject.c: Fixed calling of __del__ method with
-	TRACE_REFS defined.
-
-Sun Aug 27 22:59:06 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Setup.in: dbhash -> bsddb
-
-Sun Aug 27 22:58:31 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/dbmmodule.c: fix bug in close()
-
-Sun Aug 27 22:58:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/gdbmmodule.c: fix leaks in keys(); fix bug in close()
-
-Sun Aug 27 22:56:20 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/marshal.c: rd_object() with exception is fatal error
-
-Sun Aug 27 22:55:48 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/errors.c: err_badcall() is fatal error
-
-Sun Aug 27 22:54:01 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/irix5/flp.py: exec() -> exec
-
-Sun Aug 27 22:53:41 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/irix5/regen: add errno.h
-
-Thu Aug 17 10:18:20 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/FrameWork.py: Made separate window class (and
-	subclasses for special windows like dialogs). This is an
-	incompatible change.
-
-Thu Aug 17 10:17:39 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/binhex.py: Indent bug
-
-Tue Aug 15 07:33:39 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Lib/urllib.py: Removed addbase.__del__ because it can't work.
-	If code keeps a reference to self.fp or any of its methods, you
-	don't want to close self.fp just because no explicit reference
-	is kept to self.
-
-Mon Aug 14 08:41:20 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/binhex.py: Put debug output inside 'if DEBUG'.
-
-Mon Aug 14 08:39:54 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/FrameWork.py: Various fixes: missing imports, missing
-	calls to MacOS.HandleEvent. Also, prints are now inside 'if
-	DEBUG'.
-
-Mon Aug 14 08:36:37 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macglue.h: Added PyMac_PromptGetFile, removed stuff gone
-	to other sources.
-
-Mon Aug 14 08:35:10 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macglue.c: Lots of stuff moved to other files. Include
-	pythonresources.h.
-
-Mon Aug 14 08:33:48 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: Lots of stuff removed: gone to various other
-	files.
-
-Mon Aug 14 08:33:20 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macmain.c: This is completely different from the old
-	mainmain (which wasn't used anymore) and is the new main program
-	for MacPython. Built from bits and pieces of config.c, macglue.c
-	and pythonmain.c.
-
-Mon Aug 14 08:30:15 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macgetcompiler.c: Merged Jack's macgetcompiler.c and
-	Guido's maccompiler.c and named the result macgetcompiler.c
-	(after all, *I* did the merging:-)
-
-Mon Aug 14 08:24:05 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/Resources/dialogs.rsrc.hqx: Renumbered dialogs: 128-255
-	are for interpreter use 256-511 are for extension modules,
-	libraries, etc 512 and above are for applications
-
-Mon Aug 14 08:22:56 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macfs/macfsmodule.c: Added new call PromptGetFile (like
-	StandardGetFile, but accepts a prompt) and added optional prompt
-	to GetDirectory.
-
-Mon Aug 14 08:21:50 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/mwerks/mwfopenrf.c: Added missing initializer and extra
-	error check.
-
-Mon Aug 14 08:21:12 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/*: Added prompts to various
-	file-select dialogs Renumbered resources to above 512
-
-Mon Aug 14 08:20:22 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/scripts/MkPluginAliases.{py,as}: Added List.slb alias
-
-Mon Aug 14 08:17:57 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Modules/binasciimodule.c: Added missing 'leftchar'
-	initializer.
-
-Mon Aug 14 08:17:18 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Modules/stdwinmodule.c: Shuffled include's around (name
-	conflict on Mac wrt teclick())
-
-Mon Aug 14 03:49:51 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Lib/sunau.py: Temporary fix for access statement. Definition
-	of Error was missing.
-
-Fri Aug 11 10:24:47 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/test/test_exceptions.py: exec() -> exec
-
-Fri Aug 11 10:24:35 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/test/test_b2.py: test for specific bug in vars()
-
-Fri Aug 11 10:21:06 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: added select_present and select_range
-	to Entry widget
-
-Fri Aug 11 10:19:16 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/shelve.py: renamed DbShelf->DbfilenameShelf;added
-	BsdDbShelf (David Ely)
-
-Fri Aug 11 10:18:27 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/anydbm.py: change default flag to match dbm/gdbm
-
-Fri Aug 11 09:56:04 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rexec.py: make sure the path ends in a slash in reload()
-
-Thu Aug 10 15:46:50 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/profile.py: exec() -> exec
-
-Thu Aug 10 15:45:41 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/urlparse.py: remove file: from list of protocols taking
-	host
-
-Thu Aug 10 15:44:54 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/urllib.py: changed version :-)
-
-Thu Aug 10 15:43:53 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: added note about missing features
-
-Thu Aug 10 15:43:04 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tb.py: noted obsolescence; exec() -> exec
-
-Thu Aug 10 15:42:05 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/string.py: default tabsize to 8
-
-Thu Aug 10 15:40:39 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rexec.py: fix reload use of __filename__
-
-Thu Aug 10 15:38:36 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/posixfile.py: fix stupid typo: r->RDLK
-
-Thu Aug 10 15:34:50 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/ntpath.py: same thing as for dospath, plus
-	HOMEDRIVE/HOMEPATH support
-
-Thu Aug 10 15:32:22 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/linecache.py: don't print Cannot open/stat messages
-
-Thu Aug 10 15:31:20 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/importall.py: exec() -> exec
-
-Thu Aug 10 15:27:42 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/dospath.py: redefined normcase()
-
-Thu Aug 10 15:26:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/base64.py: upgdaded the test program
-
-Thu Aug 10 15:24:30 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/anydbm.py: revamped somewhat
-
-Thu Aug 10 15:23:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/aifc.py: temporarily disabled the access statements
-
-Thu Aug 10 14:09:16 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/macpath.py: added normpath() and splitdrive()
-
-Thu Aug 10 14:00:03 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/fmt.py: added note about obsolescence
-
-Thu Aug 10 14:00:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/Para.py: added note about obsolescence
-
-Wed Aug  9 11:17:23 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: re-enabled newmodule
-
-Tue Aug  8 22:33:38 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/audiodev.py: rather ugly temporary hacks to make it work
-	in grail & restricted mode
-
-Tue Aug  8 22:32:49 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/ihooks.py: fix bug in reload
-
-Tue Aug  8 22:32:08 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rexec.py: add module binascii; add r_unload/s_unload;
-	don't change 'rb' to 'r' in open
-
-Tue Aug  8 22:31:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: change blank line insertion at a few places
-	and fix recursion bug for </var>
-
-Tue Aug  8 10:18:12 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Makefile.pre.in: added MACHDEP back in
-
-Tue Aug  8 10:10:22 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Mac/macmodule.c: add xstat (extended stat, returns resource
-	fork size and creator/type)
-
-Tue Aug  8 10:09:33 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Mac/macstat.c: set some fields to zero for directories
-
-Mon Aug  7 16:19:27 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rexec.py: added sys.std files, read-only open, reload
-
-Mon Aug  7 16:17:55 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/posixpath.py: add splitdrive()
-
-Mon Aug  7 16:17:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/popen2.py: pass the command to sh -c
-
-Mon Aug  7 16:16:58 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/pickle.py: correct typo (persis*ent)
-
-Mon Aug  7 16:16:05 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/pdb.py: use new "single" compile option
-
-Mon Aug  7 16:15:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/os.py: make sure os.environ exists (maybe empty)
-
-Mon Aug  7 16:13:56 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/mimetools.py: add seekable option to __init__
-
-Mon Aug  7 16:13:02 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/httplib.py: use mimetools; add close()
-
-Mon Aug  7 16:12:09 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/cgi.py: added parse_qs(query_string)
-
-Mon Aug  7 16:07:44 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: new formatter module; redid htmllib module to
-	use it
-
-Mon Aug  7 10:37:38 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/uu.py: Use binascii module for inner loop
-
-Mon Aug  7 10:36:06 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macglue.c: Better error messages wrt missing resources and
-	preferences
-
-Mon Aug  7 10:35:24 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: Added binascii
-
-Mon Aug  7 10:34:15 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Modules/Setup.in: Helper module for uuencode and binhex coders
-
-Mon Aug  7 10:09:27 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/macpath.py: Added missing walk() function
-
-Mon Aug  7 10:04:10 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macfs/macfsmodule.c: Added interfaces to {Get,Set}FInfo
-	and accompanying objects
-
-Mon Aug  7 10:03:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.h: Mwerks now also has fopenrf
-
-Mon Aug  7 10:01:46 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/mwerks/mwerks_nonshared_config.h: Fix for cfm68k
-
-Fri Aug  4 00:39:30 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/ftplib.py: new sendport() interface; add test() program
-	call
-
-Fri Aug  4 00:30:30 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/traceback.py: added format_* functions (suggestion by Ken
-	M)
-
-Fri Aug  4 00:29:32 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/urlparse.py: subtle changes to relative url joins
-
-Fri Aug  4 00:29:05 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/urllib.py: use mimetools; add error handling and
-	authentication
-
-Fri Aug  4 00:23:30 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: major rewrite using different formatting
-	paradigm
-
-Fri Aug  4 00:22:39 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: changed comment parsing
-
-Fri Aug  4 00:20:45 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/{config.c.in,Setup.in,Makefile.pre.in}: split config.c
-	in 1000 parts; new main; new unfinished objective-C module
-
-Fri Aug  4 00:14:47 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/ceval.c: empty kw dict is ok for builtins
-
-Fri Aug  4 00:13:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/Makefile.in: split config.c in 1000 little files :-)
-
-Fri Aug  4 00:10:43 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/frozenmain.c: moved stuff around to resemble main.c
-
-Fri Aug  4 00:08:57 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/import.c: add imp.get_frozen_object()
-
-Fri Aug  4 00:07:45 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/bltinmodule.c: avoid resize of 0-length tuple
-
-Fri Aug  4 00:05:31 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/classobject.c: class objects are read-only in
-	restricted mode
-
-Fri Aug  4 00:05:10 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/tupleobject.c: better err checks in resizetuple
-
-Thu Aug  3 23:59:03 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rexec.py: new package support, import hooks, restricted
-	execution support
-
-Thu Aug  3 23:51:48 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: added some missing constants
-
-Thu Aug  3 23:50:29 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Tkinter.py: keyword arguments; redid Photo image
-	class; other goodies
-
-Thu Aug  3 23:49:39 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/Dialog.py: keyword parameter changes
-
-Sat Jul 29 09:55:06 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Python/pythonrun.c: mac CW-only fix for messy windows upon
-	exit
-
-Sat Jul 29 09:52:37 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macglue.c: Added code so you canset "command line options"
-	if you option-click/drag python. Needs a new dialog resource.
-
-Sat Jul 29 09:50:59 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macgetargv.c: Un-installing of AE handlers fixed (AE is
-	very picky that you specify the same UPP)
-
-Fri Jul 28 19:06:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/ceval.c: fix bogus DECREF in finally clause
-
-Fri Jul 28 12:44:53 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/newmodule.c: \temporary 'fix' for brokenness
-
-Fri Jul 28 07:44:29 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/chdir.c: Made more ppc-savvy
-
-Fri Jul 28 07:29:54 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: - Added getplatform() - (temporarily?) removed
-	newmodule reference
-
-Fri Jul 28 07:28:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Python/import.c: Undef 'argument' before including mac headers
-
-Wed Jul 26 14:16:42 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/ceval.c: changes for keyword args to built-in functions
-	and classes
-
-Wed Jul 26 14:13:27 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/import.c: never close the file in imp.load_...
-
-Wed Jul 26 14:07:32 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/methodobject.c: changes for keyword args to built-in
-	functions and classes
-
-Wed Jul 26 14:07:26 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/classobject.c: changes for keyword args to built-in
-	functions and classes
-
-Wed Jul 26 13:58:29 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/rename2.h: changes for keyword args to built-in
-	functions and classes
-
-Wed Jul 26 13:58:27 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/methodobject.h: changes for keyword args to built-in
-	functions and classes
-
-Wed Jul 26 13:58:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/classobject.h: changes for keyword args to built-in
-	functions and classes
-
-Wed Jul 26 13:53:29 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/object.h: add forgotten PyObject_SetAttrString
-
-Wed Jul 26 13:33:44 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/dbhashmodule.c: add locking where it exists
-
-Wed Jul 26 13:33:10 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/md5module.c: use newgetargs
-
-Wed Jul 26 13:31:41 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Setup.in: improved comments for curses, dbhash
-
-Wed Jul 26 13:29:45 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/tkintermodule.c: use getnewargs where it makes sense
-
-Wed Jul 26 12:26:31 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/bltinmodule.c: be more suspicious of getlocals()
-
-Wed Jul 26 12:14:30 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/frameobject.c: better policy regarding NULL locals
-
-Wed Jul 19 07:21:47 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Lib/py_compile.py: Get magic number from interpreter (using
-	module imp).
-
-Wed Jul 19 07:21:21 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Lib/StringIO.py: Added flush() method.
-
-Tue Jul 18 14:33:09 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/dbhashmodule.c: fixed arg checking for keys() and
-	close()
-
-Tue Jul 18 14:18:11 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Setup.in: added dbhash; Tk is now officially at 4.0
-
-Tue Jul 18 14:16:52 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/posixmodule.c: suppress . and .. in listdir return
-	value
-
-Tue Jul 18 10:51:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/*.c: keyword arguments and faster calls
-
-Tue Jul 18 10:40:09 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/importdl.c: NT specific change for nicer error message
-	(Mark H)
-
-Tue Jul 18 10:30:34 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/{Makefile.in,funcobject.c,frameobject.c,abstract.c}:
-	changes for keyword arguments and fast function call; added
-	abstract.c
-
-Tue Jul 18 10:21:06 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/*.h: keyword arguments and faster function
-	calls
-
-Tue Jul 18 10:07:52 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/allobjects.h: include abstract.h
-
-Mon Jul 17 09:25:15 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/FrameWork.py: Various toolbox routines have gotten new
-	names.
-
-Mon Jul 17 09:25:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/EasyDialogs.py: Various toolbox routines have gotten
-	new names.
-
-Mon Jul 17 07:36:01 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macosmodule.c: Added GetErrorString method (convert OSErr
-	number to string)
-
-Fri Jul 14 11:29:10 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/tkinter/{Tkinter.py,Dialog.py}: Tk 4.0 and Tcl 7.4 are now
-        standard
-
-Tue Jul 11 22:22:06 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/classobject.c: args to call_object must be tuple or
-	NULL
-
-Tue Jul 11 22:22:01 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/listobject.c: args to call_object must be tuple or
-	NULL
-
-Tue Jul 11 22:21:58 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/object.c: args to call_object must be tuple or NULL
-
-Mon Jul 10 19:32:26 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Objects/fileobject.c: fix read(0), readline(0); make tuple for
-	call_object args
-
-Mon Jul 10 09:52:21 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/bltinmodule.c: rename arglist to alist (conflict with
-	new grammar symbol)
-
-Fri Jul  7 18:53:21 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/compile.c: 3rd arg for raise; INCOMPLETE keyword
-	parameter passing (currently f(kw=value) is seen as f('kw',
-	value))
-
-Fri Jul  7 18:53:14 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/ceval.c: 3rd arg for raise; INCOMPLETE keyword
-	parameter passing (currently f(kw=value) is seen as f('kw',
-	value))
-
-Fri Jul  7 18:50:36 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/import.c: new MAGIC; some changes to default files for
-	imp.load_... functions
-
-Fri Jul  7 18:45:41 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/traceback.c: ignore control-l (parallelling change to
-	tokenizer.c)
-
-Fri Jul  7 18:45:02 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/sysmodule.c: added sys.platform
-
-Fri Jul  7 18:44:10 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/graminit.c: new grammar
-
-Fri Jul  7 18:43:42 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/bltinmodule.c: added locals() and globals();
-	[raw_]input() uses readline()
-
-Fri Jul  7 18:39:14 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/cgen.py: err() should be varargs -- and fix one call
-
-Fri Jul  7 18:38:14 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/config.c.in: added getpalatform()
-
-Fri Jul  7 18:37:11 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/gdbmmodule.c: normalized flag arg and made flag, mode
-	default args; minor cosmetics
-
-Fri Jul  7 18:37:09 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/dbmmodule.c: normalized flag arg and made flag, mode
-	default args; minor cosmetics
-
-Fri Jul  7 18:35:21 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Makefile.pre.in: pass $PLATFORM into config.c
-
-Fri Jul  7 18:32:10 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/opcode.h: new opcodes RAISE_VARARGS, CALL_FUNCTION
-
-Fri Jul  7 18:31:40 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/graminit.h: new grammar symbols arglist and argument
-
-Fri Jul  7 18:27:27 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Parser/tokenizer.c: ignore control-l in whitespace
-
-Fri Jul  7 18:26:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Grammar/Grammar: new grammar for 3rd raise arg and keyword
-	parameters
-
-Tue Jun 27 09:17:54 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/*: Initial port to CodeWarrior CFM68K support
-	(mainly by disabling unsupported features).
-
-Tue Jun 27 09:15:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Python/{importdl.c,errors.c}: Porting to CW CFM68K
-
-Tue Jun 27 09:12:09 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Include/{mymath.h,mymalloc.h,allobjects.h}: Changed ifdef
-	__CFM68K__ to ifdef SYMANTEC__CFM68K__: CW has its own unique set
-	of ideosyncracies:-(
-
-Thu Jun 22 15:06:57 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rfc822.py: added seekable option; save unix from lines;
-	speed up islast()
-
-Thu Jun 22 15:00:13 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/urllib.py: add User-agent hdr; read and close the file
-	upon http error
-
-Thu Jun 22 14:58:00 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/string.py: make split and splitfields, join and joinfields
-	synonyms
-
-Thu Jun 22 14:56:36 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/sgmllib.py: make reporting unbalanced tags an overridable
-	method
-
-Thu Jun 22 14:55:10 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/rexec.py: use imp.new_module(), not new.module(); and
-	/usr/local
-
-Thu Jun 22 14:52:35 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/profile.py: functions don't have a __name__ attribute
-
-Thu Jun 22 14:51:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/pickle.py: test other name variable
-
-Thu Jun 22 14:48:48 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/httplib.py: discard endrequest(); minor stuff; rfc822 no
-	seek flag
-
-Thu Jun 22 14:46:12 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/htmllib.py: support <HTML>, remove <HEADER>
-
-Thu Jun 22 14:45:04 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/StringIO.py: set softspace to 0 in __init__
-
-Tue Jun 20 13:21:42 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/ftplib.py: add bind(0,''); better way of guessing our
-	fully qualified hostname
-
-Sun Jun 18 16:06:44 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Python/import.c: Added PY_RESOURCE (mac only) to imp module
-
-Sun Jun 18 16:05:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macfs/macfsmodule.c: Added FindFolder interface
-
-Sun Jun 18 16:03:40 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macglue.c: Added code to obtain sys.path from a resource
-	Removed code to update the preferences file, use
-	EditPythonPrefs.py in stead (actually, code is still there if
-	you define USE_MAC_MODPREFS)
-
-Sun Jun 18 15:57:01 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: Obtain path from a resource (unless
-	USE_BUILTIN_PATH is #defined)
-
-Fri Jun 16 06:57:14 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/rfc822.py: Removed >From stuff
-
-Wed Jun 14 18:54:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/posixmodule.c: sys/wait.h; NeXT changes (no unistd,
-	utime; getcwd?)
-
-Wed Jun 14 18:52:06 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/makesetup: fix NL for Linux bash bug; special
-	processing for -u options
-
-Wed Jun 14 18:49:20 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/soundex.c: edited RCS cruft
-
-Wed Jun 14 18:31:38 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/Setup.in: new modules soundex.c and environment.c
-
-Wed Jun 14 18:28:08 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/socketmodule.c: add setblocking(); NT changes;
-	null-terminate Unix path
-
-Wed Jun 14 18:23:17 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/timingmodule.c: removed rcs cruft
-
-Wed Jun 14 18:17:37 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/mathmodule.c: NeXT doesn't like me to declare
-	hypot(double, double)
-
-Wed Jun 14 18:07:26 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Python/importdl.c: re-enabled NeXT dynamic linking (#ifdef
-	NeXT)
-
-Wed Jun 14 14:26:02 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Parser/tokenizer.c: replace "\r\n" with "\n" at line end (Jim
-	Ahlstrom)
-
-Wed Jun 14 10:54:25 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Python/importdl.c: Mac dynloading is now enabled by
-	USE_MAC_DYNAMIC_LOADING. Mac dynloading changed to allow
-	multiple modules to live in with each other in the same file.
-
-Wed Jun 14 10:47:21 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: Added USE_* ifdefs for a couple of optional
-	modules.
-
-Wed Jun 14 10:44:17 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macshlglue.c: Ported to CW6
-
-Wed Jun 14 10:43:41 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/mwerks/mwerks_{,no}shared_config.h: Split shared-library
-	support and dynamic-loading support (they were both enabled with
-	USE_SHARED_LIBRARY, now there's also USE_MAC_DYNAMIC_LOADING).
-	Added a few other USE_ defines for optional modules to nonshared
-	config (they're not included in the base shared library)
-
-Tue Jun 13 07:19:48 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/rfc822.py: Skip old-style 'From name time' lines at
-	beginning of message.
-
-Mon Jun 12 11:51:34 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Python/importdl.{h,c}: Check if we've already loaded a dynamic
-	module under a different name.
-
-Mon Jun 12 11:51:29 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Python/import.c: Check if we've already loaded a dynamic
-	module under a different name.
-
-Fri Jun  9 16:39:24 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/{mactcp/macdnrmodule.c,macstat.h,macmodule.c}: Ported to
-        CodeWarrior 6
-
-Sat Jun  3 17:16:40 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/config.c: Added img stuff (within #ifdef, so they're easy
-	to remove)
-
-Sat Jun  3 17:15:50 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macfs/macfsmodule.c: StandardGetFile without args now
-	shows all files (in stead of none)
-
-Wed May 17 07:18:20 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Lib/irix5/CL.py: Backward compatibity module for constants
-	from cl.h include file. The values are gotten from the cl
-	module. CL_old is there in case cl doesn't exist.
-
-Wed May 17 07:16:52 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Modules/clmodule.c: Make constants from cl.h include file
-	available as module variables. Also added Irix 5.3 constants.
-
-Fri May  5 11:54:14 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Lib/ftplib.py: don't show print passwords in debug output
-
-Thu May  4 11:02:18 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/ftplib.py: For anonymous ftp, make sure local hostname is
-	fully qualified.
-
-Wed May  3 13:40:23 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Modules/stropmodule.c: unified join(fields), split(fields)
-
-Fri Apr 28 17:28:02 1995  Guido van Rossum  <guido@cnri.reston.va.us>
-
-	* Include/rename2.h: removed duplicate defs for None, False,
-	True
-
-Tue Apr 25 07:53:24 1995  Sjoerd Mullender  <sjoerd@cwi.nl>
-
-	* Include/{object.h,tupleobject.h}: DL_IMPORT needs an argument.
-
-Mon Apr 24 08:41:41 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Mac/macglue.c: - The prefs file wasn't updated correctly if it
-	already existed. - Guido's r1.23 fix wrt PyMac_DoYieldEnabled
-	had somehow gotten lost.
-
-Sun Apr 23 18:12:47 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Objects/fileobject.c: MW does not always set errno on failing
-	fopen()
-
-Sun Apr 23 18:10:18 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/mac/dbmac.py: Removed seeks beyond eof (MW doesn't support
-	them)
-
-Sun Apr 23 18:06:57 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Lib/py_compile.py: Mac-specific code for setting filetype was
-	outdated.
-
-Sun Apr 23 18:06:05 1995  Jack Jansen  <jack@cwi.nl>
-
-	* Include/{object.h,tupleobject.h}: DL_IMPORT macro was called in
-	a funny way (and MW barfed on it)
-
-=================================
-==> Release 1.2 (10 Apr 1995) <==
-=================================
-
-Thu Apr  6 16:34:28 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/classobject.c (instancemethod_compare): change the way
-	instance methods are compared -- don't apply cmpobject() to
-	im_self but do a simple pointer compare
-
-	* Objects/object.c: move counting of free'd objects (#ifdef
-	COUNT_ALLOCS) from DELREF() to UNREF()
-
-	* Include/object.h (_Py_ForgetReference()): add counting of free'd
-	objects (#ifdef COUNT_ALLOCS)
-
-Tue Apr  4 13:53:47 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/frameobject.c (newframeobject): changed dictlookup()
-	with constant C string arg to mappinglookup() with static Python
-	string (Sjoerd)
-
-Fri Mar 31 12:26:03 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* irix5/tmp/lib/python/lib/frozenmain.c: carried through renaming
-	phase 3
-
-Thu Mar 30 11:44:23 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* README: added warning about bash bug in certain Slackware Linux
-	version
-
-	* Doc/lib*.tex: reorganized into more subject-related chapters;
-	rewritten abstract and introduction
-
-	* Doc/myformat.sty: define \dfn{} as \em instead of \sl
-
-	* Modules/config.c.in: moved decl of realmain() out of #ifdef
-
-	* Python/pythonrun.c (print_error): added fflush(stdout) to
-	print_error() so output doesn't get mangled when stdout and stderr
-	are redirected to the same file
-
-	* Modules/selectmodule.c: fix subtle refcnt bugs with fd2obj
-	arrays (R Lindsay Todd)
-
-	* Include/object.h, Object/{tupleobject.c,stringobject.c},
-	Python/ceval.c: fix ref-count debugging (R Lindsay Todd)
-
-	* Python/sysmodule.c (sys_checkinterval): initialize to 10 as
-	before (major speed up!)
-
-	* Modules/cdmodule.c: use newgetargs; removed sbtoa() and
-	timetoa(); added msftoframe(); added constants that used to be in
-	standard module CD (Sjoerd)
-
-	* Modules/posixmodule.c: added WNOHANG constant
-
-Fri Mar 24 14:55:48 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/nntplib.py: rename debug() to set_debuglevel() as for
-	ftplib.py
-
-Thu Mar 23 11:10:24 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/posixfile.py (open): make mode default to 'r' and add
-	optional bufsize
-
-========================================
-==> Release 1.2 BETA 4 (21 Mar 1995) <==
-========================================
-
-Tue Mar 21 13:28:32 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/ceval.c (call_object): removed #ifdef'ed out code
-
-Mon Mar 20 17:14:14 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/copy.py (_copy_dispatch): fix typo in hasattr() exprs
-
-Sat Mar 18 00:04:14 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Makefile.in: change -f Makefile.in to -f $(srcdir)/Makefile.in
-
-Fri Mar 17 10:52:07 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/tkinter/Tkinter.py: add TkVersion and TclVersion variables;
-	handle crash in callback different (don't drop into debugger); add
-	_getdoubles() and streamline _getints()
-
-	* Doc/lib*.tex: mass update
-
-	* Doc/partparse.py: fix several small things so it doesn't crash
-	so easily
-
-	* Modules/threadmodule.c: change exit_thread so it raises
-	SystemExit -- this allow proper cleanup in t_bootstrap
-
-	* Makefile.in (distclean): add -f Makefile.in (John Interrante)
-
-Thu Mar 16 13:35:25 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Doc/ref*.tex: made palatable to latex2html -- basically rewrote
-	all math using \code{} and \var{} (and pow() and some integer
-	literals), and added braces to some \item[]s containing \tt
-
-	* Modules/socketmodule.c: fixed up comments describing interface
-
-	* Lib/test/test_signal.py: new module to test signal module
-
-Wed Mar 15 11:07:43 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Modules/signalmodule.c (PySignal_Signal): use PyCallable_Check
-	where suitable; split some lines
-
-	* Lib/posixfile.py (open) defaults mode='r', bufsize=-1
-
-Tue Mar 14 10:42:39 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/copy.py: rename copy.Error to copy.error
-
-	* Lib/cgi.py: correct some typos that broke escape() and print_form()
-
-	* Lib/string.py: add (unsupported) optional base argument to
-	atoi() and atol(); be more careful about very negative start
-	indices in [r]find() and count()
-
-	* Modules/timemodule.c: tiny additions for Windows 3.1
-
-	* Modules/gdbmmodule.c: plugged some memory leaks (Steve Clift)
-
-	* Modules/socketmodule.c (makefile): made mode optional and added
-	optional buffer size, like built-in open()
-
-Mon Mar 13 11:26:20 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/pickle.py: added ability to pickle classes (could be used
-	for exceptions in RPC); made format_version non-hidden variable,
-	added compatible_formats variable, added shorthand functions
-	dump(), load(), dumps() and loads() -- similar to marshal
-
-	* Python/pythonrun.c (fatal): In NT, write msg to debugging device
-
-	* Doc/lib*.tex: small changes by Soren Larsen
-
-Thu Mar  9 15:06:02 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/pickle.py: added explicit exception for unpicklable object
-	type: PicklingError; raise EOFError when end of file read
-
-	* Lib/profile.py: runcall(): return the function's return value
-
-	* Lib/rexec.py: support calling __import__ with 4 args
-
-	* Lib/shelve.py: fix typo in close() (self.db should be self.dict)
-
-	* Python/{ceval.c,marshal.c}: optimized many calls to get/set
-	tuple items
-
-	* Include/{tupleobject.h,rename2.h}: added SETTUPLEITEM macro and
-	added cast to GETTUPLEITEM
-
-	* Objects/{stringobject.c,mappingobject.c}: a few peephole
-	optimizations
-
-	* configure(.in): added test for CC value not matching cache
-
-	* Modules/tkintermodule.c: add casts to malloc() calls in
-	tkintermodule.c
-
-	* Moved Demo/bgen, Demo/freeze, Demo/modulator and most of
-	Demo/script to new Tools/ directory
-
-	* Doc/ext.tex: revised for new naming; added new section on
-	reference counting
-
-	* Doc/lib*.tex: revised much of the library documentation
-
-	* Doc/ref*.tex: corrected typos and other small errors in the
-	reference manual
-
-	* Doc/tut.tex: corrected typos and small errors, and added a
-	chapter on new features in release 1.2
-
-	* Extensions/X11: MANY (incompatible) changes by Sjoerd
-
-	* Most header files, Include/allobjects.h: changed the way
-	DL_IMPORT is used -- it now has the object's type as a parameter
-	(this is done for Borland C)
-
-	* Many places: small changes for MPW and CFM-68K on the Mac
-
-	* Include/mymath.h: new header to be used instead of <math.h>
-
-	* Include/pythonrun.h: added decl for Py_FatalError()
-
-	* Include/rename2.h: added PyImport_ExecCodeModule
-
-	* Lib/cgi.py: general cleanup; translate & to "&amp;"
-
-	* Lib/{compileall.py,tb.py,traceback.py}: don't break on class
-        exceptions
-
-	* Lib/types.py: added DictType as alias for DictionaryType
-
-	* Lib/cddb.py: write track artist info if given
-
-	* Lib/{pdb.py,wdb.py,stdwin/wdbframewin.py}: don't break on class
-	exceptions; added runeval(), generalized run to allow optional
-	context; deprecate runctx()
-
-	* Lib/test/{test_b1.py,test_grammar.py}: cope with 'math' not
-        existing; don't fail if overflow check doesn't work
-
-	* Mac/*: too many changes to log; we now support about 5 compilers
-	(Think C, MPW, MPW with Symantec C, CodeWarrior 68K, CodeWarrior
-	PPC)
-
-	* Misc/python-mode.el: cope with triple-quoted strings (sez Barry)
-
-	* Modules/Makefile.pre.in: don't exit Make if 'sharedmods' for
-        loop fails
-
-	* Modules/Setup.in: move posix, signal, thread and gl permanently
-	ahead of #*noconfig*, to avoid confusion
-
-Mon Feb 20 13:48:50 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/stringobject.c (formatstring): allow string without
-	formats and dictionary argument
-
-Fri Feb 17 12:00:29 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/bltinmodule.c (do_pow): fixed bogus test for negative
-	number to the float power
-
-	* Python/ceval.c (eval_code): fix SystemError in try-finally when
-	a class exception was raised
-
-	* Demo/stdwin/python.py, Lib/stdwin/wdbframewin.py, Lib/pdb.py,
-	Lib/tb.py, Lib/traceback.py: cope with class exceptions when
-	printing or formatting them (R Lindsay Todd)
-
-Thu Feb 16 11:21:45 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Doc/libshelve.tex: added/reorganized list of restrictions
-
-	* Doc/libsocket.tex: added quick list of new exported symbols
-
-	* Demo/sockets/{mcast.py,broadcast.py}: don't use modules SOCKET
-	or IN -- all symbols are now exported by the socket module itself
-
-	* Modules/socketmodule.c (initsocket): added INADDR_* symbols
-
-	* Include/object.h: added missing decls for PyObject_IsTrue() and
-	PyCallable_Check()
-
-Wed Feb 15 14:43:24 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/compile.c (com_addopname): use = instead of == for
-        assignment
-
-	* Modules/config.c.in (COMPILER): removed bogus ## in front of
-	__VERSION__
-
-	* Doc/{lib.tex,libpickle.tex,libcopy.tex,libshelve.tex}:
-	documented some new modules (cheaply -- by slightly reformatting
-	their __doc__ strings)
-
-	* Lib/builtin.py: got rid of it
-
-	* Doc/tut.tex: added sections on new stuff in release 1.2
-
-	* Doc/libsignal.tex: added a lot more details about how this
-	works.
-
-Tue Feb 14 13:57:28 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/marshal.c (w_object): change long i, n to int -- should
-	solve GCC problems on DEC Alpha (Paul Sijben)
-
-	* Python/{ceval.c,bltinmodule.c}: call __import__ with 4
-	arguments: modulename, globals, locals, list_of_from_names_or_None
-	(for Ken Manheimer)
-
-	* Python/ceval.c (eval_code): call locals_2_fast before doing
-	import from (Jim Roskind)
-
-========================================
-==> Release 1.2 BETA 3 (13 Feb 1995) <==
-========================================
-
-Mon Feb 13 12:39:16 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* README: removed remark on NeXT and -posix since this is now done
-	by configure
-
-	* Mac/config.c, Modules/config.c.in (getversion): tack compiler
-        name and version (where known) onto version string
-
-	* Objects/floatobject.c: work-around for NeXT Sparc 3.3 prerelease
-	(Barry Warsaw)
-
-Fri Feb 10 17:08:35 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/object.c (newvarobject), Include/objimpl.h: make size
-        argument signed
-
-	* Include/allobjects.h, several other files: introduce
-	Py_CHARMASK(c) which expands to c&0xff, or just c if characters
-	are unsigned.  This should fix problems with passing negative
-	values to isspace() and friends for characters > 0x7f on systems
-	where 'char' is signed
-
-Thu Feb  9 10:26:21 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/copy.py: added __doc__ strings
-
-	* Lib/shelve.py: added __doc__ strings
-
-	* Lib/anydbm.py: added __doc__ strings and test for gdbm
-
-	* Include/longintrepr.h: remove untrue comment about
-	signed/unsigned ob_size
-
-	* Modules/mpzmodule.c (mpz_div_and_mod): add proper casts (Jim
-	Fulton)
-
-Wed Feb  8 15:48:24 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/bltinmodule.c (do_pow), Objects/floatobject.c
-	(float_pow): move check for negative float to the float power to
-	the pow() function, so negative float to the integer power can be
-	implemented correctly (after coercion to float)
-
-Tue Feb  7 10:14:34 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/import.c (init_frozen): make it non-static, so
-	frozenmain.c can use it.  Also remove the reference to
-	frozenmain.o from Python/Makefile.in
-
-	* Doc/{ref6.tex,ref7.tex} (raise, except): describe classes and
-	instances used as exceptions (R Lindsay Todd)
-
-	* Lib/test/test_exceptions.py: added tests for raising classes (R
-        Lindsay Todd)
-
-	* Python/ceval.c (exec_statement): DECREF result of run_string
-	(Mark Lutz)
-
-	* Modules/cursesmodule.c: patches to clear errors between failing
-	calls to Arg_Parse (Steve Clift)
-
-Fri Feb  3 13:48:12 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Lib/bdb.py (format_stack_entry): append () to function name if
-        no __args__
-
-	* Lib/pdb.py (print_stack_entry): default prompt_prefix is
-        line_prefix, and use the default everywhere
-
-Thu Feb  2 15:27:15 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/pythonrun.c (print_error): print class name for
-	exceptions that are classes (R Lindsay Todd)
-
-	* Modules/tkintermodule.c: use PyCallable_Check instead of
-	manually checking for some callable types for callbacks; export
-	TK_VERSION and TCL_VERSION strings; a few Tk 4.0 specific changes
-
-	* Modules/socketmodule.c (initsocket): added a long list of socket
-	related constants -- better here than in a separate python module,
-	because the values change per system (R Lindsay Todd)
-
-	* Doc/{lib.tex,libsignal.tex}: added documentation for signal
-	module (Andrew Kuchling)
-
-Tue Jan 31 13:06:59 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Include/pythonrun.h: remove declaration of (now static)
-	run_pyc_file
-
-	* Modules/posixmodule.c (posix_utime): correct typo in utime()
-	stub
-
-Tue Jan 31 11:02:00 1995  Guido van Rossum  <guido@guppie.cwi.nl>
-
-	* Modules/{pwdmodule.c,grpmodule.c} (mkpwent, mkgrent): NeXT
-	specific patch for little endian machines where the uid and gid
-	are in the wrong place in the structure (Mike Carlton)
-
-Mon Jan 30 16:17:33 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* configure.in: add -posix to definition of CC when detecting Next
-
-Mon Jan 30 13:32:07 1995  Guido van Rossum  <guido@guppie.cwi.nl>
-
-	* Mac/*: not clearly logged are lots of changes to the Mac
-	specific modules, e.g. reworking of the interrupt detection code
-	and general reorganization of macglue.[ch], as well as support for
-	modules generated by "bgen" (see Demo/bgen), and subsequent
-	removal of the resource and sound interfaces from MacOS (since
-	they now have their own, complete, generated interface), and also
-	lots of development on the mactcp and macfs front
-
-	* Modules/stdwinmodule.c (initstdwin): disable python's own event
-	processing on the mac as soon as stdwin is imported; removed some
-	unused variables
-
-	* Parser/intrcheck.c: moved all mac specific stuff to
-	Mac/macglue.c
-
-	* Python/pythonrun.c (goaway): Think C mod to suppress pausing at
-        normal exit
-
-	* Python/import.c (imp_get_magic): fix glaring indexing bug
-
-	* Modules/dbmmodule.c (dbm_keys): fix memory leak and tighten
-	error checking (and redo lay-out)
-
-Fri Jan 27 00:00:17 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Objects/listobject.c: round up item count on resize to improve
-	realloc performance (dramatic effect in the Mac with Think C!)
-
-	* Include/{rename2.h,methodobject.h}, Objects/methodobject.c:
-	added support for chaining method lists: Py_FindMethodInChain
-
-Thu Jan 26 12:59:51 1995  Guido van Rossum  <guido@guppie.cwi.nl>
-
-	* Python/Makefile.in: removed frozenmain.o from OBJS -- it has no
-	business being in libPython.a.  (Still build it though.)
-
-Thu Jan 26 00:42:29 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Lib/mhlib.py: fix bogus test for matching regex
-
-	* stdwinmodule.c: (re)move some unused variables
-
-	* Python/pythonrun.c (run_pyc_file): made static
-	(fatal): loop forever on Mac, so error message remains visible
-
-	* Python/import.c (doneimport): no need to dictclear() the
-	module's dictionary (that's done automatically when the module is
-	actually deleted)
-
-	* Objects/classobject.c (instancebinop): removed unused variables
-
-	* Objects/moduleobject.c (module_dealloc): explicitly erase a
-	module's dictionary when the module object disappears -- this was
-	formerly done in import's doneimport()
-
-	* Objects/object.c, Python/bltinmodule.c: moved callable() to
-	object.c (from static in bltinmodule.c) since it is generally
-	useful (and I needed it :-); removed some unused vars
-
-Wed Jan 25 13:20:52 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Modules/posixmodule.c (posix_utime): Be more robust in the light
-	of unusual types for uname struct members and 64-bit longs
-
-	* Python/ceval.c (eval_code): mods to allow using classes as
-        exceptions (R Lindsay Todd)
-
-Mon Jan 23 20:48:16 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* configure.in (LDSHARED): add case for OSF/1 (Bob Kras);
-	(socket libraries): add conditional for IRIX 5, where -lsocket
-	exists but doesn't seem to work properly
-
-	* Python/compile.c (get_docstring): add missing case for
-	file_input, so __doc__ strings in modules work
-
-Sun Jan 22 20:45:40 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Modules/regexmodule.c (reg_dealloc): free the compiled pattern
-	buffer -- plugs a memory leak
-
-Sun Jan 22 01:44:01 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Modules/signalmodule.c (sigcheck): renamed to PyErr_CheckSignals
-	-- signal checking was broken because of this!
-
-Sat Jan 21 15:10:08 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Python/getargs.c (seterror): don't overwrite error if one is
-	already set (e.g. by O& handler)
-	(convertsimple1): return "(unspecified)" instead of empty string
-	for type description of "O&" object
-
-Fri Jan 20 15:27:51 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Modules/Makefile.pre.in (sharedinstall): add command to make the
-	$(DESTSHARED) directory
-
-	* README: change NeXT hint to add -posix to C compiler flags
-
-	* Python/import.c: document the fact that almost all functions
-	returning a module object (except add_module()) increment its
-	reference count, and add missing INCREF calls here and there
-
-	* Python/bltinmodule.c (builtin___import__): don't INCREF the
-	module -- import_module() has already done that
-
-	* Python/ceval.c (eval_code, RAISE_EXCEPTION): add missing INCREF
-	after gettupleitem() call (R Lindsay Todd)
-
-	* configure.in: added check for working getopt (R Lindsay Todd);
-	modernize all tests to use cache and report outcome (John
-	Interrante)
-
-	* Include/{classobject.h,listobject.h}: corrected two unconverted
-	names (found by John Interrante)
-
-Thu Jan 19 01:31:46 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* configure.in (LDSHARED): added case for Sequent DYNIX (Jaap
-	Vermeulen)
-
-	* Mac/macglue.c (Pstring): truncate string to 255 bytes
-
-	* Objects/listobject.c (list_dealloc): Fix NULL dereference in
-	case of out-of-memory condition (Jack)
-
-	* Parser/intrcheck.c (intrpeek): new Mac specific routine to test
-	for interrupt without clearing the interrupt flag (Jack)
-
-	* Python/errors.c (strerror): #undef it first on the Mac (Jack)
-
-	* Lib/ftplib.py: don't break if os.environ doesn't exist (Jack)
-
-	* Modules/timemodule.c (inittime): fix memory leaks (should decref
-	new objects passed to dictinsert)
-
-	* Python/compile.c (optimize): fix memory leak (forgot to decref
-        localmap)
-
-	* Objects/funcobject.c (func_dealloc): fix memory leak (forgot to
-	decref func_name)
-
-	* Python/importdl.c: added changes for NetBSD dynamic linking
-	(David Hobley); removed shared linking for NeXT (incompatible with
-	the -posix flag)
-
-	* Modules/mathmodule.c: removed empty #ifdef macintosh...#endif
-
-	* Parser/parsetok.c (parsetok): avoid uninitialized memory read
-
-	* Mac: various stuff to port Jack's mods back to THINK C, as well
-	as my own changes for apple events
-
-	* Python/modsupport.c: support "O&" taking an object constructor
-	and a void* (sort of inverse of O& in getargs)
-
-	* configure.in, Makefile.in: mods to define and use
-	INSTALL_PROGRAM and INSTALL_DATA as well as INSTALL (John
-	Interrante)
-
-Wed Jan 18 12:01:20 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Mac: lots of new stuff checked in by jack
-
-	* configure.in: added test for genuine getopt (R Lindsay Todd)
-
-	* Python/Makefile.in: removed getopt.o from OBJS (but left in
-	getopt.o: getopt.c rule)
-
-	* Python/getopt.c: don't use function prototypes (Anthony Baxter)
-
-	* Modules/arraymodule.c: make the routines static now that their
-	forward declarations are! (Anthony Baxter)
-
-========================================
-==> Release 1.2 BETA 2 (17 Jan 1995) <==
-========================================
-
-Tue Jan 17 11:24:23 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Include/patchlevel.h: set version to 1.2-beta-2
-
-	* Python/Makefile.in: added getopt to list of objects
-
-	* Makefile.pre.in: be more careful about building 
-	Modules/Makefile.pre
-
-	* Objects/floatobject.c: test for __STDC__ instead of macintosh de
-	decide whether to declare fmod() and pow() -- this works in
-	mathomodule.c so why not here...
-
-	* Objects/rangeobject.c: made a few things static
-
-	* Objects/longobject.c, Include/{longobject.h,rename2.h}:
-	long_scan is now a macro that calls long_escan; long_scan no
-	longer exists
-
-	* Objects/object.c (strobject): use tp_str and only try __str__ if
-	it's an instance
-
-	* configure.in: hopefully final changes for Sequent's -linet
-
-	* README: add hint for NeXT users to use --without-gcc
-
-	* Python/{bltinmodule.c,ceval.c}, Objects/frameobject.c:
-	initialize __builtins__ from built-in *module* instead of *dict*,
-	to prevent interactive vars() call to loop recursively
-
-	* Python/bltinmodule.c: fix Alpha bug in range and xrange --
-	sizeof(int) != sizeof(long)
-
-	* Python/mystrtoul.c: include rename2.h
-
-	* Modules/*: made things static and general clean-up for new
-	naming scheme
-
-	* Include/*.h: new names for lots of new functions
-
-	* Lib/rexec.py: no need for distrusting dir() or vars(), changed
-	open() to allow everything (for reading) except /etc/*
-
-	* Mac/macmain.c: include rename2.h
-
-	* */Makefile*in: added harmless $& to $(LIB) target for Sequent
-	parallel make
-
-	* Parser/tokenizer.c: fix loop on unterminated triple quotes
-
-	* Parser/intrcheck.c: made 'interrupted' flag static again
-
-	* Objects/listobject.c (list_ass_slice): free recycling bin when
-	making early exit due to memory error
-
-	* Objects/listobject.c, Include/{listobject.h,rename2.h}: added
-	reverselist, C interface to list.reverse().
-
-	* Object/listobject.c (list_ass_slice): fixed re-entrancy bug
-	(noticed by Jim Roskind) 
-
-Sat Jan 14 11:21:29 1995  Guido van Rossum  <guido@zeus.cwi.nl>
-
-	* Python/modsupport.c (PyEval_CallMethod): changed method argument
-	name to methodname -- since method is also a typedef and some
-	compiler choke on this (e.g. HP) (Andrew Kuchling)
-
-	* Python/thread.c: added #include thread_nt.h (Mark Hammond)
-
-	* Demo/scripts/h2py.py: support $include or $INCLUDE path instead
-	of only using /usr/include (Mark Hammond)
-
-	* Python/ceval.c (eval_code/PRINT_EXPR): fix messed output when
-	x.__repr__() prints something and repr(x) is called at the prompt
-
-========================================
-==> Release 1.2 BETA 1 (12 Jan 1995) <==
-========================================
-
-Thu Jan 12 12:27:23 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/pythonrun.c (initmain), Python/import.c
-	(exec_code_module): use getbuiltins(), not getbuiltindict() to
-	initialize new modules
-
-	* Python/ceval.c (getbuiltins): return getbuiltindict() instead of
-	NULL if no current frame
-
-	* Modules/cryptmodule.c: removed redundant include of modsupport.h
-
-	* Modules/signalmodule.c: remove unwanted trigraph from comment
-
-	* Modules/Setup.in: clarify status of dlmodule.c
-
-	* Objects/object.c (cmpobject): properly implement cmp() for class
-        instances
-
-Wed Jan 11 10:56:12 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* README: removed references to --with-svr4; added docs for
-	--without-gcc
-
-	* Modules/mathmodule.c: rearrange declarations somewhat
-
-Tue Jan 10 11:34:23 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Include/*.h, Python/getmtime.c, Modules/<several>.c: THE GREAT
-        RENAMING (inspired by Jun Hamano).  One now either includes
-	"Python.h" and then uses new names only, or one includes
-	"allobjects.h" and uses old names.  "rename1.h" no longer exists;
-	instead, "rename2.h" performs the reverse mapping.
-
-	* Python/bltinmodule.c (builtin_filter): fix subtle refcount big
-	in filter() (Tim MacKenzie)
-
-	* Include/mymalloc.h, Modules/{Makefile.pre.in,config.c.in}:
-	change to make things palatable for C++ (Tim MacKenzie)
-
-	* Modules/socketmodule.c: only call hstrerror() if it exists
-
-	* Modules/tkintermodule.c: added interface to Tk_DoOneEvent() (R
-	Lindsay Todd)
-
-	* Objects/longobject.c (long_pow): some defensive programming
-	(Eric Siegerman)
-
-	* Objects/intobject.c (int_pow): fix memory leak in ternary pow()
-	(Eric Siegerman)
-
-	* Modules/posixmodule.c (posix_fdopen, posix_popen): add optional
-	argument to specify buffer size as for __builtin__.open(); also
-	make mode argument optional (default "r")
-
-	* Objects/classobject.c (instance_coerce): implement coercions
-	involving instances properly
-
-	* Objects/object.c, Python/bltinmodule.c: moved coerce() to
-	objects.c, where it belongs
-
-	* Doc/libfuncs.tex: added execfile(); reformulated eval() somewhat
-
-	* Python/bltinmodule.c (builtin_{execfile,eval}): fix
-	globals/locals defaults to match the manual again; also allow None
-	to mean the same as the default
-
-	* Lib/nntplib.py: fix comments for list command (should be last,
-	first instead of first, last)
-
-	* Lib/test/test_grammar.py: fix exec test so presence of
-	__builtins__ doesn't break it
-
-Mon Jan  9 14:20:16 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/{funcobject.c,methodobject.c,classobject.c}: don't
-	expose certain internals (e.g. __dict__) in restricted mode.
-
-	* Python/thread_pthread.h: Alpha OSF/1 fix
-
-	* Python/importdl.c (load_dynamic_module): removed bogus check for
-	reloading of dynamically loaded modules (tested uninitialized
-	local variable)
-
-	* Include/{frameobject.h,ceval.h,bltinmodule.h,rename1},
-	Python/{ceval.c,import.c,pythonrun.c,bltinmodule.c},
-	Object/frameobject.c: changed handling of builtins.  Each frame
-	now has a pointer to the dictionary of builtins to be used in that
-	frame, initialized from __builtins__ in the globals passed to the
-	frame.  Only run_node() and exec_code_module() initialize
-	__builtins__ to the dictionary of the real __builtin__ module.
-	Furthermore, a frame is in "restricted" mode if its builtins are
-	not the real __builtin__ module.  In restricted mode, some other
-	modules and object types restrict their interfaces.  Subtle
-	change: eval_code() no longer automatically fills in the default
-	globals; this must be done by the caller (who can then also
-	explicitly stick in the builtins if needed).  bltinmodule.c no
-	longer exports {get,set}builtin() but instead exports
-	getbuiltindict().  ceval.c export getbuiltins() and
-	getrestricted() in analogy of getglobals().
-
-	* Include/sysmodule.h, Python/{sysmodule.c,ceval.c},
-	Doc/libsys.tex: change sys.check_interval Python variable into
-	Python function sys.setcheckinterval(interval) and C variable
-	sys_checkinterval
-
-	* Mac/macosmodule.c: use new getargs interface; add
-	{Get,Set}FileInfo
-
-Sat Jan  7 09:40:24 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/compile.c: support import A.B...Z; added doc strings to
-	modules, classes and function
-
-	* Python/ceval.c: use new instancebinop interface
-
-	* Python/bltinmodule.c: restructured coerce(), divmod(), pow() to
-	use new instancebinop interface
-
-	* Objects/classobject.c: added 5th (function) parameter to
-	instancebinop, to support things like Rational * float; added
-	documentation strings to classes and methods
-
-	* Objects/methodobject.c: changed drastically, the object now
-	contains a pointer to the struct methodlist (which must be
-	static); added attributes __name__, __doc__ and __self__
-
-	* Objects/funcobject.c: added __doc__ attribute (alias func_doc),
-	initialized from first constand in code object if it is a string,
-	else to None
-
-	* Objects/moduleobject.c: initialize __doc__ to None
-
-	* Objects/typeobject.c: added getattr(), supporting __doc__ and
-	__name__
-
-	* Objects/object.c: raise AttributeError, not TypeError for object
-	without attributes
-
-	* Python/modsupport.c, Include/modsupport.h: add doc string
-        parameter to initmodule3 (renamed from initmodule2); new
-	newmethodobject() interface
-
-	* Modules/signalmodule.c (initsignal): don't call
-	newmethodobject() directly -- rely on initmodule()
-
-	* Modules/newmodule.c: rationalize argument checking, redo
-	lay-out, add __doc__ strings
-
-	* Include/object.h: added tp_str (to implement str()), tp_doc, and
-	some dummy fields
-
-	* Include/methodobject.h: added ml_doc member to struct methodlist
-	and renamed ml_varargs to ml_flags; changed newmethodobject() to
-	take a struct methodlist * argument instead of individual parts;
-	got rid of ML_FREENAME again
-
-	* Include/funcobject.h: added func_doc struct member
-
-	* Include/classobject.h: added 5th (function) parameter to
-	instancebinop, to support things like Rational * float
-
-	* Grammar/Grammar: changed import to support NAME.NAME...NAME
-
-	* Python/importdl.c (load_dynamic_module): NT dlls have extension
-	.pyd, not .dll
-
-Thu Jan  5 11:00:13 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Demo/scripts/mboxconvert.py: invent Message-ID if none present
-
-Wed Jan  4 18:23:09 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/modsupport.c (initmodule2), Include/methodobject.h,
-	Objects/methodobject.c: introduced METH_FREENAME bit passed to
-	newmethodobject to indicate that if the object is freed the name
-	pointer must also be freed (this saves a long standing memory leak
-	in initmodule2)
-
-	* Modules/structmodule.c (struct_pack, struct_unpack): use memcpy
-	instead of double precision assignment (since a string isn't
-	always double-aligned, e.g. when debug fields are present in the
-	object header)
-
-	* Objects/floatobject.c (float_hash): changed a constant to avoid
-	float->long conversion overflow
-
-	* Python/bltinmodule.c (builtin_pow): fix coerce() ref count
-	nightmare (core dumps on Linux)
-
-	* Python/pythonrun.c: call flushline() in print_error(), after
-	fetching the exception info, since flushline() can mask an
-	exception; move flushline() calls around so they are not between
-	the detection and printing of the exception
-
-Tue Jan  3 12:55:28 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Modules/config.c.in (getcopyright): Change copyright to include
-	1995
-
-Mon Jan  2 20:15:39 1995  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/mappingobject.c (mappingremove): don't call
-	lookmapping() for empty dictionary
-
-	* Doc/libsocket.tex (section{Built-in Module \sectcode{socket}}):
-	documented gethostbyaddr()
-
-	* Modules/mpzmodule.c (mpz_power): made it ternary
-
-	* Modules/mathmodule.c: only use hypot() if it exists
-
-	* Modules/Makefile.pre.in (sharedinstall): fix bug (sh can't loop
-	over empty list) when $(SHAREDMODS) is empty
-
-	* Python/errors.c: added hook for better mac error messages
-
-	* Python/pythonrun.c (run_script): removed extraneous fclose() in
-        case of .pyc file argument
-
-	* Include/{object.h,stringobject.h}: changed refcnt and sizes from
-        unsigned to int (i.e. signed)
-
-	* Objects/fileobject.c (newfileobject): use HAVE_FOPENRF instead
-	of USE_FOPENRF
-
-	* Lib/test/test_b1.py: test eval() and execfile() with globals,
-	locals arguments
-
-	* Lib/mhlib.py: added movemessage(), copymessage(), added copy
-	fallback for refilemessages(), and updated the docs
-
-Fri Dec 30 16:19:17 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Parser/tokenizer.c (tok_nextc): zap tok->buf after freeing
-
-	* Include/traceback.h: added struct _frame declaration for ANSI C
-
-	* Include/bitset.h: move definition of testbit() around
-
-Thu Dec 29 10:09:25 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/mappingobject.c (mapping_has_key): don't call
-	lookmapping() for empty dictionary
-
-	* Modules/Makefile.pre.in: use new style @prefix@ substitution
-	(sharedinstall): fix case of loop over empty $(SHAREDMODS)
-
-	* Several files: removed redundant variables etc. (Sam Leffler)
-
-Wed Dec 28 12:09:10 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Modules/threadmodule.c (t_bootstrap): XDECREF the return value;
-        (thread_exit_thread): DECREF the frame returned by save_thread()
-
-	* Modules/md5module.c, Doc/libmd5.tex: renamed md5.md5() to md5.new()
-
-Wed Dec 21 13:30:47 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/ceval.c (build_class): add hook for Donald Beaudry
-
-Mon Dec 19 17:35:13 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Doc/libposixfile.tex: the fileopen function was erroneously
-	documented as openfile
-
-Tue Dec 13 11:46:03 1994  Guido Van Rossum  <guido@tesla>
-
-	* config.h.in, configure: rewritten *by* autoconf 2.0
-
-	* configure.in: parts rewritten for autoconf 2.0; strip spaces
-	from uname output for QNX; test for some new things like
-	ftruncate, truncate and va_list as array
-
-	* acconfig.h: some reordering to get things in alphabetical order;
-	added GETTIMEOFDAY_NO_TZ and VA_LIST_IS_ARRAY
-
-	* README: Added SCO notes
-
-	* Python/thread_solaris.h (start_new_thread): create new threads
-	with THR_DETACHED option instead of THR_NEW_LWP -- else there's a
-	limit to the number of threads you can create in total, ever, per
-	process
-
-	* Python/traceback.c (tb_print): don't store in sys.last_traceback
-	(that's done in pythonrun.c:print_error() now)
-
-	* Python/pythonrun.c (print_error): use fatal() instead of
-	abort(); use err_fetch() instead of err_get(); call tb_print()
-	instead of going through ceval.c:printtraceback()
-
-	* Python/modsupport.c: fix vmkvalue() for systems where va_list is
-	an array; add support for creating lists and dictionaries; added
-	convenience functions for calling functions/methods with format
-	and argument list
-
-	* Python/marshal.c (rd[s]_object): add trap for calls while an
-	exception condition is still set
-
-	* Python/{import.c,importdl.c}: completely restructured: moved
-	all dynamic loading stuff to importdl.c; added public interface
-	to the functionality through module 'imp' (for __import__ hack)
-
-	* Modules/threadmodule.c (t_bootstrap): fix leak of result value
-	(still a massive leak left I think)
-
-	* Python/errors.c: don't declare strerror on NT
-
-	* Python/getargs.c (vgetargs[1]): fix for systems where va_list
-	is an array
-
-	* Python/compile.c: use fatal() instead of abort(); use
-	err_{fetch,restore}
-
-	* Python/ceval.c: move some (X)DECREF's around for improved
-	re-entrancy; call built-in __import__ to implement IMPORT_NAME;
-	use err_{fetch,restore}; fix call to __rshift__ in __lshift__;
-	check for string left arg before anything else in rem()
-
-	* Python/ceval.c, Include/ceval.h: get rid of printtraceback
-
-	* Python/bltinmodule.c: added __import__ built-in function;
-	restructured argument parsing of most built-ins to use
-	newgetargs()
-
-	* Python/Makefile.in: add importdl.o to OBJS; special-case
-	compilation of importdl.c instead of import.c
-
-	* Parser/{pgen.c,parser.c,grammar.c}: use fatal() instead of abort()
-
-	* Objects/object.c: use fatal() instead of abort()
-
-	* Objects/mappingobject.c: fix re-entrancy bugs (allow ma_table
-	and ma_size to be 0)
-
-	* Objects/listobject.c: fix some re-entrancy bugs (not complete)
-
-	* Objects/frameobject.c: use err_{fetch,restore} everywhere; use
-	fatal() instead of abort()
-
-	* Objects/fileobject.c (file_truncate): new method (only of
-	ftruncate() is in libc)
-
-	* Objects/classobject.c (instance_getattr): add err_clear() when
-	retrying after failing instance_getattr1() call; use
-	err_{fetch,restore} everywhere
-
-	* Modules/tkintermodule.c: use PyErr_{Fetch,Restore} instead of
-	{GetAndClear,SetObject}; fix NULL dereference in TimerHandler
-
-	* configure.in, Modules/timemodule.c: on some systems,
-	gettimeofday() has no second argument
-
-	* Modules/socketmodule.c: if O_NDELAY undefined, use O_NONBLOCK
-	(for QNX); use gethostbyname_r if it exists (since it is
-	re-entrant); use h_error and hstrerror when they exist; other
-	changes for re-entrancy; make printable representation more
-	useful; cosmetic changes in argument lists; add gethostbyaddr()
-
-	* Modules/signalmodule.c: if NSIG undefined, use _SIGMAX + 1
-
-	* Modules/posixmodule.c: changes for direct/dirent dictated by
-	autoconf 2.0
-
-	* Modules/config.c.in: added standard built-in module "imp"
-
-	* Modules/{Makefile.pre.in,makesetup}: change @...@ to _..._
-
-	* Makefile.in: adapted to autoconf 2.0; treat prefix in a standard
-	way, remove config caches in distclean target
-
-	* Lib/tkinter/Tkinter.py (Pack.propagate): fix calling convention
-
-	* Lib/test/test_b2.py: test reload() of built-in module (marshal)
-
-	* Lib/test/{test_b1.py,testall.out}: added test for __import__
-
-	* Include/rename1.h: change HEAD_INIT to macro with argument
-
-	* Include/import.h: added decl for get_pyc_magic()
-
-	* Include/{rename1.h,errors.h}, Python/errors.c: added err_fetch()
-	and err_restore(), get rid of err_get()
-
-	* Include/bltinmodule.h, Python/bltinmodule.c (getbuiltins): new
-	like getbuiltin() buit takes char * instead of stringobject *
-	argument (for __import__ hack)
-
-	* Doc/tut.tex: use spam, bacon and eggs instead of foo, bar, bletch
-
-	* Doc/libtypes.tex (File Objects): add footnote
-	explaining why readline() leaves the trailing newline in
-
-Sat Nov 19 15:14:02 1994  Guido Van Rossum  <guido@tesla>
-
-	* Objects/mappingobject.c: ma_table may now be NULL (when ma_size
-	== ); changes to avoid re-entering the interpreter via DECREF
-	while the mapping object is being modified
-
-	* Several other places: similar
-
-	* errors.[ch]: new functions err_fetch and err_restore
-	fetch and restore all three exception related values (plus places
-	using these)
-
-	* Makefile.in (TESTPATH): Added ./Modules to test path so
-	dynamically loaded modules are found even if not yet installed
-
-Wed Nov 16 14:19:01 1994  Guido Van Rossum  <guido@tesla>
-
-	* Python/sysmodule.c (list_builtin_module_names): stop a leak
-
-Mon Nov 14 13:21:45 1994  Guido van Rossum  <guido@tesla>
-
-	* Doc/ref[467].tex: don't use \verb{...} in footnotes; rewritten
-	using {\tt ...}
-
-	* Lib/urlparse.py (urljoin): safe version of Andy Bensky's fix to
-	urllib.py
-
-	* Lib/urllib.py (basejoin): (Andy Bensky) fix case where url has a
-	type and a path but no host -- the host from the base should be
-	inserted
-
-	* Parser/grammar.c: (Don Beaudry) initialize accelerators print
-	"Translating labels" header only if debugging
-
-	* Doc/ref[36].tex: some typos
-
-	* Doc/ref[35].tex: clarify reverse/backward quotes, add them to
-	the index
-
-===================================
-==> Release 1.1.1 (10 Nov 1994) <==
-===================================
-
-Thu Nov 10 13:09:26 1994  Guido van Rossum  <guido@tesla>
-
-	* Objects/classobject.c (instance_compare): don't ever raise an
-	exception or return -2
-
-	* Python/compile.c: stick "<lambda>" in function name instead of
-	NULL or None
-
-	* Doc/tut.tex: corrected a few typos
-
-	* Modules/tkintermodule.c: added timer and file handler interfaces
-	and made mainloop/quit global functions (as well still being tk
-	methods)
-
-	* Modules/newmodule.c: made it compile on SunOS4.1.3 (there were
-	continuation backslashes on non-cpp lines :-)
-
-	* Modules/gdbmmodule.c: fix some bugs (freed the wrong objects)
-
-	* Modules/Setup.in: clarified some things a little in the comments
-
-	* Modules/Makefile.pre.in (sharedinstall): don't fail if there
-	aren't any shared modules
-
-	* Include/structmember.h: include stddef.h (for offsetof)
-
-	* Include/rename1.h: added PyArg_ParseTuple for newgetargs
-
-	* Python/bltinmodule.c: fix core dump in pow() (should be declared
-	varargs in methodlist array)
-
-	* Python/ceval.c: replace abort() calls with fatal() calls
-
-	* Python/errors.c (err_setval): call err_clear() to clear existing
-	error instead of calling XDECREF
-
-	* Python/getargs.c: fix core dump when old style call expecting
-	some arguments receives none
-
-	* Lib/test/{test_b[12].py,testall.out}: added more tests (now all
-	built-ins are covered again)
-
-Thu Oct 20 08:31:02 1994  Guido van Rossum  <guido@tesla>
-
-	* Modules/makesetup: should use $cc not cc
-
-	* configure.in, configure, config.h.in: test for presence of
-        stddef.h
-
-	* Include/structmember.h: include <stddef.h> if it exists
-
-Wed Oct 19 11:45:35 1994  Guido Van Rossum  <guido@tesla>
-
-	* Makefile.in: patch by Wolf-D. Ihlenfeld to use BINDIR etc
-
-	* Lib/tkinter/Tkinter.py: added option_{add,clear,get,readfile} to
-	Misc class
-
-	* Lib/poly.py: fix bug in minus()
-
-	* Modules/Setup.in: clarified optional SGI modules and improved
-	template for using *noconfig*
-
-	* Doc/Makefile: don't assum '.' is in $PATH
-
-	* Modules/mathmodule.c, Doc/libmath.tex: add hypot()
-
-	* Makefile.in: on libinstall, automatically run sharedinstall in
-	Modules
-
-	* Modules/Makefile.pre.in: always make sharedmods
-
-	* Modules/makesetup: quote $ in two places
-
-	* configure.in, acconfig.h.in, config.h.in, configure,
-	Modules/posixmodule.c: separate arg requirements for getpgrp() and
-	setpgrp()
-
-	* Nt/Python/makefile.nt.mak: added getargs()
-
-Thu Oct 13 07:51:03 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* README: removed misleading comment about example Setup.* files
-
-=================================
-==> Release 1.1 (11 Oct 1994) <==
-=================================
-
-Tue Oct 11 16:24:42 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* last-minute changes for SunOS 4.1.3: test for volatile in
-	configure; add getargs.o dependency to Modules/Makefile.in; some
-	things in README and Misc/NEWS; change pathnames in
-	Demo/tkinter/guido/*.py; new date in Doc
-
-Mon Oct 10 19:00:34 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Makefile.in: apply ranlib to installed libraries
-
-	* Modules/socketmodule.c: new style
-
-	* Doc/ref3.tex: some stuff about __getattr__ etc.
-
-Thu Oct  6 16:40:05 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Got rid of Modules/imgformat.c (will be distributed with Jack's
-	img package)
-
-	* Doc/*.tex: moved title boilerplate to separate file, added
-	copyright notice (separate file)
-
-Wed Oct  5 11:13:13 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Modules/config.c.in: don't include frozen.c when frozen (the new
-	freeze script compiles it separately)
-
-	* Lib/os.py: add dummy import posixpath, for freeze script
-
-	* Python/marshal.c (r_object): plugged memory leak in reading of
-	code objects
-
-	* Modules/config.c.in (getpythonpath): always return malloc'ed
-	memory -- save a static pointer to free next time (prevents leaks)
-
-Thu Sep 29 10:35:28 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Grammar/Grammar: got rid of history; changed some diagram
-	commands
-
-	* Lib/types.py: cosmetic changes
-
-	* Mac/{config.c,macosmodule.c}: new interface to (a few bits of)
-	the Mac OS
-
-	* Modules/xxmodule.c: integrated with xxobject.c by Jack
-
-	* Modules/(posix,socket}module.c: more NT changes
-
-	* Python/traceback.c: security fix -- check for buffer oveflow
-	before concatenating sys.path item and module name
-
-	* Python/ceval.c, Include/ceval.h: promote MakePendingCalls to
-	global: Py_MakePendingCalls.  Also guard against recursive calls
-
-	* Python/pythonmain.c: fatal error if can't alloc mem for -c
-	string
-
-	* Python/pythonrun.c: add string "Python" to fatal error message
-
-Wed Sep 28 16:39:09 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Objects/longobject.c: change ValueError to OverflowError when
-	converting to int
-
-	* Objects/xxobject.c: changed to use new style (not finished?)
-
-	* Objects/stringobject.c: use HAVE_LIMITS instead of __STDC__
-
-	* Objects/rangeobject.c: modernized
-
-	* Objects/floatobject.c: add overflow check when converting float
-	to int and implement truncation towards zero using ceil/float
-
-	* Parser/intrcheck.c: make 'interrupted' global (forgot for
-	whom...)
-
-	* Include/rename1.h: don't even define Py_FPROTO
-
-	* Python/{modsupport.c,getargs.c,Makefile.in},
-	Include/modsupport.h: moved getargs() to its own file and
-	re-implemented it entirely to support optional arguments, multiple
-	arguments without surrounding parentheses
-	(when called as newgetargs()), and better error messages
-
-	* Include/classobject.h, Objects/classobject.c,
-	Python/{ceval.c,bltinmodule.c}: entirely redone operator
-	overloading.  The rules for class instances are now much more
-	relaxed than for other built-in types
-	(whose coerce must still return two objects of the same type)
-
-Sun Sep 18 07:26:39 1994  Guido van Rossum  <guido@cayenne.cwi.nl>
-
-	* Python/pythonrun.c (print_error): print only last line of
-	multi-line source line
-
-	* Parser/tokenizer.c (tok_nextc): count line numbers when parsing
-        strings
-
-Fri Sep 16 15:54:56 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Python/modsupport.c (do_arg): added error message if "O!" fails;
-	change type of converter for "O&" to function returning int taking
-	an object* and a void* parameter; it should return 1 for success
-	or return 0 and set an exception for failure to convert
-
-Wed Sep 14 14:08:44 1994  Guido van Rossum  <guido@voorn.cwi.nl>
-
-	* Include/Python.h: new header file for new naming scheme
-
-	* various modules: #include "Python.h" and remove most remporary
-	renaming hacks
-
-	* Lib/whrandom.py: if seed is (0,0,0), initialize from current
-	time; default seed's arguments to (0,0,0)
-
-	* Python/ceval.c (eval_code), Include/ceval.h: added registry of
-        pending functions (to be used by functions that are called
-        asynchronously, like UNIX signal handlers or Mac I/O completion
-        routines)
-
-Wed Sep 14 11:05:36 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libsys.tex (section{Built-in Module \sectcode{sys}}):
-	documented sys.check_interval
-
-Tue Sep 13 21:35:19 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Import/pythonrun.h, Python/{import,pythonrun}.c,
-	mac/macsetfiletype.c: changes by Jack to execute .pyc file passed
-	as command line argument.  On the Mac .pyc files are given a
-	special type so they can be double-clicked
-
-	* Modules/stropmodule.c (strop_[r]find): change index range check
-	-- don't raise ValueError buit silently clip when it's out of
-	range (this is compatible with slicing)
-
-Mon Sep 12 12:53:07 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Extensions/X11/Xmmodule.c: (Sjoerd): Implemented
-	Xm.OptionButtonGadget and Xm.OptionLabelGadget
-
-	* Modules/Setup.in: define PYTHONPATH using COREPYTHONPATH for
-	extensions; add -lm to math module definition
-
-	* Modules/Makefile.pre.in: remove *.so and so_locations on clobber
-
-	* Modules/makesetup: (Sjoerd): treat words beginning with a dollar
-	and not ending in a well-known extension as linker arguments
-
-	* Lib/urlparse.py: URL parser according to the latest Internet
-	draft
-
-	* README: added note about HP-UX
-
-Sun Sep 11 12:12:28 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Misc/indent.pro: Steen's approximation of my C style as a GNU
-	indent profile
-
-	* Modules/{Setup.in,termios.c}: add Steen's termios; also
-	Lib/[pt]ty.py, Demo/scripts/script.py, Lib/irix5/TERMIOS.py
-
-	* Demo/scripts/h2py.py: merged in Steen Lumholt's changes to
-	handle #include.  Now also handles one-argument macros.
-
-	* configure.in: use uname to decide how to create / link shared
-	libraries and to set $(MACHDEP) (machine dependent subdirectory of
-	Lib)
-
-	* Makefile.in: shared library support; added target sharedinstall
-	which move shared libraries into Lib/$(MACHDEP)
-
-	* Modules/{Makefile.pre.in,Setup.in,makesetup}: support shared
-	libraries.  Had to re-engineer rule production in makesetup
-	because sed was dumping core on the script fed to it -- now the
-	rules are always appended to the end of the Makefile.
-
-Fri Sep  9 11:35:28 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/uu.py: new module, does uuencode/uudecode (thanks to Lance)
-
-	* Grammar/Grammar: fewer #diagram:break hacks needed; removed
-	history from file
-
-Thu Sep  8 10:24:41 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/grammar1.c (finddfa): massive speed up by using direct
-	addressing instead of searching
-
-Wed Sep  7 08:49:37 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Include/rename1.h: added PyArg_GetInt
-
-	* pythonrun.h: added Py_AtExit
-
-	* Doc/libsocket.tex, Modules/socketmodule.c: added Tommy
-	Burnette's setblocking() method
-
-	* Modules/signalmodule.c: adapted to new module style (Lance);
-	added {BGN,END}_SAVE around pause() call
-
-	* Objects/object.c (DELREF): must zap type pointer *before*
-	calling free() (or other destructor)
-
-Sat Sep  3 14:12:38 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/{Setup.in,tkintermodule.c,tkappinit.c}: moved tkinter
-	into the main Modules directory, and its Lib and Demo
-	subdirectories into the main Lib and Demo directories.  Moved
-	definition of STDWIN component and TK component of PYTHONPATH to
-	their respective sections so it's easier to remember to enable
-	them.
-
-	* Python/pythonrun.c (cleanup), Include/pythonrun.h: added
-	Py_AtExit() -- register cleanup functions for C modules
-
-Tue Aug 30 10:53:50 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/getmtime.c: Remove mac specifics (Mac subdirectory has
-	its own version now)
-
-	* Modules/Setup.in: uses .c instead of .o now; added curses
-
-	* Modules/{rotormodule,syslogmodule}.c: new naming conventions
-
-	* Modules/cursesmodule.c: new, interface to curses
-
-	* Modules/makesetup: bugfix: add objects from sources to OBJS
-
-	* Modules/cursesmodule.c: new contribution from Lance
-
-	* Python/bltinmodule.c (builtin_tuple): use pre-existing
-	listtuple(v) for lists
-
-Mon Aug 29 15:41:02 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Various places: merged THINK C 6.0 and MPW 3.2 mods: Python 1.1
-	should build flawlessly on the Mac using either compiler
-
-Fri Aug 26 10:18:05 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/tut.tex (subsection{Lambda Forms}): fix typo in lambda
-	example
-
-Thu Aug 25 12:30:11 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/importall.py: obsolete.
-
-	* Lib/{compileall,py_compile}.py: new modules for compiling .py
-	files.
-
-	* Modules/timemodule.c (floattime), Objects/longobject.c
-	(dgetlongvalue): add (double) casts for the benefit of the SCO C
-	compiler
-
-Tue Aug 23 00:52:32 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/Setup.*: removed all except Setup.in (huh?  I thought
-	I'd done that already?!); disable gdbm by default
-
-	* Modules/makesetup: support C++ files now; these should be given
-	as file.C or file.cc or file.c++; C files can be given as file.c
-	(instead of file.o, which is still supported)
-
-	* configure.in, */Makefile*.in: OPT can now be specified in the
-	env at configure time and will then be put in all Makefiles as
-	default
-
-	* Modules/config.c.in: change mac specific things
-
-	* Python/import.c: add lost NT-specific code back in
-
-	* Parser/tokenizer.c: backup over illegal newline in string
-	literal (for "completeness" test)
-
-	* Include/node.h: make some fields short to save space during
-	parsing
-
-	* Modules/posixmodule.c: some more NT changes
-
-	* Doc/libtime.tex: get rid of references to millitime() and
-	millisleep(); document clock()
-
-Mon Aug 22 10:53:59 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/linecache.py: don't crash on empty filename
-
-	* Lib/macpath.py: don't return trailing colon for dirname()
-	(XXX won't do for volume names -- but otherwise glob(':*:*.py')
-	loops forever)
-
-	* Lib/traceback.py: print SyntaxError correctly
-
-	* Modules/signalmodule.c: added pause().
-
-	* Python/pythonrun.c (print_error): added INCREF/DECREF pair --
-	the exception returned by a syntax error (when reported) would
-	contain an object with refcnt zero!
-
-Fri Aug 19 15:35:44 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* */Makefile*.in: remove lib*.a before adding to it
-
-	* Lib/urllib.py: fix caching bug (by disabling the cache)
-
-	* Lib/sgi/flp.py: fix caching bug (always write the whole file to
-	the cache!)
-
-	* Doc/ref6.tex (section{Assignment statements}): added warning
-	about overlaps in lhs of assignment (e.g. "i, x[i] = 1, 2")
-
-	* Python/errors.c (err_clear): clear interpreter stack trace
-
-Wed Aug 17 16:10:07 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Moved patchlevel.h from Python/ to Include/, moved all code from
-	version.c to config.c and removed version.c, and changed
-	Modules/Makefile(.pre.in) to add dependencies on $(MYLIBS) for
-	config.c (so the date in the version is always current).  Also
-	changed the format of PATCHLEVEL: it is now a string containing
-	the complete version number, e.g. "1.1".
-
-	* Grammar/Grammar: Added #diagram:... comments for Kees Blom's
-	railroad diagram generator
-
-	* Doc/libstring.tex (section{Standard Module \sectcode{string}}):
-	removed references to {ato{f,i,l},index}_error
-
-	* Lib/string.py: find/rfind is now the main implementation and
-	index/rindex is a wrapper that raises index_error (which is now
-	always ValueError)
-
-	* Modules/stropmodule.c: implement find/rfind instead of
-	index/rindex (raising and catching an exception is much more
-	expensive than returning and testing -1)
-
-	* Lib/os.py: do fake "import posix" for freeze.py script
-
-Tue Aug 16 23:58:30 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/parsetok.c (parsetok): don't call strncpy(str, NULL, 0)
-
-	* Doc/libfuncs.tex (section{Built-in Functions}): added docs for
-	delattr()
-
-	* Python/bltinmodule.c: added delattr(x, 'attr'), equivalent to
-	del x.attr
-
-Fri Aug 12 15:00:20 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libfuncs.tex: don't use $math$ in description of pow(x,y,z);
-	describe tuple()
-
-	* Doc/libposixfile.tex: use tableiii instead of tableii, so
-	partparse will work again (I know, chicken!)
-
-	* Doc/libthread.tex: Added get_ident(); updated text on module
-	availability
-
-	* Doc/myformat.perl: Added sub do_cmd_Cpp
-
-	* Python/compile.c (com_argdefs, com_arglist): avoid referencing
-	CHILD(n,i) for i >= NCH(n)
-
-	* Python/bltinmodule.c: added tuple() builtin
-
-Thu Aug 11 16:41:14 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Objects/classobject.c, Include/classobject.h: added __getattr__
-	and __setattr__ support to override getattr(x, name) and
-	setattr(x, name, value) for class instances.  This uses a special
-	hack whereby the class is supposed to be static: the __getattr__
-	and __setattr__ methods are looked up only once and saved in the
-	instance structure for speed.
-	(Later rewritten to also support __delattr__ and to store the
-	routines in the class instead of in the instance)
-
-Wed Aug 10 13:42:29 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in, Makefile.in: remove the AC_PREFIX() call -- it's
-	more trouble than it's worth at CWI and most other people seem to
-	install Python in the default (/usr/local) anway.  Changed comment
-	describing --prefix in Makefile.in
-
-	* Lib/urllib.py (ftpcache): remove debug print statement
-
-Tue Aug  9 14:32:45 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Objects/{int,long,float}object.c, Include/object.h,
-	Python/bltinmodule.c: mods by Andrew Kuchling to implement
-	pow(x,y,z) == pow(x,y)%z, but without incurring overflow
-
-	* Python/import.c: if initializing a module did not enter the
-	module into sys.modules, it may have raised an exception -- don't
-	override this exception.
-
-	* Include/rename1.h: added PyMethodDef and PyObject
-
-Mon Aug  8 09:51:08 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/{Makefile,*.tex}: Changes by Andrew Kuchling:
-	  * Added dependencies to the Makefile
-	  * Added \optional{} commands all over the place (possibly not
-	    finished yet)
-	  * Defined \optional and \Cpp in myformat.sty
-	  * Changed all occurrences of C++ to \Cpp{}, for nicely
-	    formatting the + signs.
-	  * Fixed typos, sentence structure in lots of places
-	  * Added documentation for the rotor module
-	  * Added a commented-out paragraph to libcrypto.tex that can be
-	    added once the Python Cryptography Kit is released.
-	  * Altered the table in libposixfile.tex a bit.
-	  * Documented socket.gethostname()
-	  * Started completely rewriting the Extending manual.
-
-	* Modules/{Setup.in, gdbmmodule.c}, Doc/{lib,libgdbm}.tex: added
-	Anthony Baxter's gdbm module (derived from Jack's dbm module)
-
-Fri Aug  5 11:43:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* BUGS: new file (merger of unofficial BUGS1.0.x files)
-
-	* Modules/{Setup.in,Makefile.pre.in}: renamed some modules to
-	shorter names (dropped the "module" from the name): sunaudiodev,
-	imgformat, audioop, imageop, imgfile
-
-	* Python/import.c: support *.o/*.so as alternative for
-	*module.o/*module.so
-
-	* Modules/stropmodule.c (strop_rindex): make rindex('abc', '') do
-	the right thing (i.e. return 3 instead of 0)
-
-	* Python/bltinmodule.c (builtin_vars): correct typo in error msg
-
-	* Doc/libsocket.tex (subsection{Socket Object Methods}):
-	documented gethostname() and a few misc things
-
-	* Modules/socketmodule.c: disabled allowbroadcast() socket method
-
-Mon Aug  1 01:28:29 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Makefile.in (TAGS): Call etags w/o -t option
-
-	* Lib/rfc822.py: fix two bugs: error in readheaders interpreting
-	regex.match() result, and wrong logic in getfirstmatchingheader()
-	when the same header occurs twice consecutively
-
-	* Lib/test/test_types.py (6.4.1): test for particular bug in
-	integer multiply
-
-Sat Jul 30 13:31:40 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libsocket.tex, Modules/socketmodule.c: send() and sendto()
-	now return actual byte count (useful for sockets in non-blocking
-	mode)
-
-Tue Jul 26 14:21:17 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in: check for <limits.h>
-
-	* Objects/longobject.c (newlongobject): fix long(0x80000000) and
-	add warning that it isn't actually correct on 64-bit machines;
-	include <limits.h> if HAVE_LIMITS_H is defined
-
-	* Objects/intobject.c (int_mul): check int*int overflow without
-	resorting to double precision (many thanks to John Tromp)
-
-	* Modules/signalmodule.c (signal_alarm): interface to Posix alarm()
-
-	* Python/ceval.c (call_object): print message before abort()
-
-Mon Jul 25 11:30:56 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libstring.tex (section{Standard Module \sectcode{string}}):
-	documented string.count()
-
-	* Lib/string.py: added count(s, sub, i=0), returns number of
-	occurrences of sub in s[i:]
-
-	* Doc/keywords.py: program to sort table of keywords in ref2.tex
-
-	* Doc/ref2.tex (subsection{Keywords}): add 'access' and 'lambda'
-	to list of reserved words
-
-Thu Jul 14 15:26:14 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* README, Misc/NEWS, Python/patchlevel.h,
-	Doc/{lib,ext,tut,ref}.tex: bump version to 1.0.3; in README, fewer
-	references to it elsewhere, nor to IP numbers.
-
-Wed Jul 13 18:51:36 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/mhlib.py (removefromallsequences): call putsequences with
-	proper argument
-
-Mon Jul 11 13:00:36 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/selectmodule.c: don't accept negative file descriptors;
-	changed error messages slightly
-
-Thu Jul  7 12:20:10 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/syslogmodule.c: new module by Lance
-
-	* configure.in: don't check for strtod!
-
-	* Python/import.c: undo Mac DL mods (temporarily) and install NeXT
-	dl mods by William Lewis instead.
-
-	* Modules/posixmodule.c (posix_popen): substitute pclose for
-	fclose (how did fclose ever creep into this?)
-
-Wed Jul  6 21:45:54 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/{bdb,cmd,pdb}.py: Mods by Rickard Westman: No longer barfs
-	on lambda:s (outputs "<lambda>" as the function name); "a(rgs)" in
-	pdb now works; help messages added to pdb (lifted from pdb.doc).
-	Also, "h pdb" calls pdb.help().  cmd.do_help() displays topics on
-	a nicer way (I think).  Also, topics for which there is a help_
-	method, but no do_method (like "pdb" above) are displayed in a
-	special way.  My own mod: fix break on function to also support
-	methods.
-
-Tue Jul  5 23:18:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/stropmodule.c (strop_rindex): change semantics of third
-	argument -- as in the original string.rindex, search to its right,
-	not to its left.  (Maybe both index and rindex need a 4th
-	parameter to restrict the search on the other end?
-
-Mon Jul  4 23:01:36 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/timemodule.c (sleep, floatsleep): don't use setjmp or
-	signal, rely on err_errno() or sigcheck() instead.
-
-	* Dos/{pcmodule,dosmodule}.c, Modules/posixmodule.c: don't include
-	<setjmp.h>
-
-Sat Jul  2 00:42:47 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/urllib.py: implemented new quoting rules; added splituser,
-	splitpasswd, splitattr, splitvalue; new ftp syntax (user:passwd,
-	cwd to each subdir, type={a,i,d})
-
-Fri Jul  1 17:32:51 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/traceback.c: add function name to traceback info
-
-	* Object/listobject.c, Modules/{array,mpz}module.c: include
-	<sys/types.h> for size_t
-
-Fri Jul  1 12:47:05 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Makefile.in (Makefile): add dependency on config.status
-
-	* configure.in: support --with-gcc[=value], --without-gcc
-
-	* configure.in, acconfig.h, config.h.in: check for clock_t
-
-	* Modules/{arraymodule,mpzmodule}.c: Include sys/types.h, for size_t
-
-	* Lib/test/test_types.py (6.5.1 Strings): test for nasty string
-	formatting bug
-
-	* Objects/stringobject.c (formatstring): fix nasty bug in resizing
-
-Wed Jun 29 10:01:17 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ref3.tex (section{The standard type hierarchy}
-	\label{types}): fix typo
-
-	* Lib/packmail.py: applied patch from Lance to remove '.' and '..'
-
-Tue Jun 28 00:57:35 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ref1.tex: grammar notation can use single or double quotes now
-
-	* configure.in (termcap): hack around conflict about clear() on
-	IRIX 5 in shared libraries gl and termcap
-
-	* Python/bltinmodule.c: added callable() predicate
-
-Wed May 18 15:01:13 1994  Donald Beaudry  (don@zippy.vicorp.com)
-
-	* modsupport.c (do_arg): Changed all of the int getting things to
-	just try to get and int, instead of explicitly checking for an int
-	first.
-
-	(do_arg): Added the "O&" option to allow using a user supplied
-	conversion function. 
-
-Wed May 18 14:10:49 1994  Donald Beaudry  (don@zippy.vicorp.com)
-
-	* intobject.c (getintvalue): Changed to allow automatic conversion
-	from any type that supports the nb_int method.
-
-	* floatobject.c (getfloatvalue): Changed to allow automatic
-	conversion from any numeric type that supports the nb_float
-	method.
-
-Wed May  4 22:56:15 1994  Donald Beaudry  (don@scooter.vicorp.com)
-
-	* object.h -- Added tp_call member to the typeobject struct
-	This along with a minor change to the ceval.c allows overloading
-	of the function call operator for any class.
-
-Wed May  4 22:23:48 1994  Donald Beaudry  (don@scooter.vicorp.com)
-
-	* modsupport.c -- replace the part of getargs that processes "O!",
-	it had a minor problem with comparing the types.
-
-	* ceval.c -- changed call_object to make use of the tp_call
-	field.
-
-Fri Jun 27 17:22:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/pythonmain.c: On MPW (3.2) unbuffered seems to hang, so
-	use setvbuf ... _IOLBF for -u option.
-
-	* Python/mystrtoul.c: MPW hack (overflow check doesn't seem to work)
-
-Thu Jun 23 14:46:34 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/Makefile.pre.in (clobber): delete config.c and glmodule.c
-
-Thu Jun 23 00:17:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/tokenizer.c: if a triple-quoted string ends in a quote
-	followed by a newline (followed immediately by the terminating 3
-	quotes) then a syntax error or system error ensues (one-line fix)
-
-	* Doc/ref4.tex: clarify that global name space is almost always
-	containing module's name space
-
-	* Lib/profile.{py,doc}: totally new versions by James Roskind;
-	also edited source & doc to replace 'jprofile' by 'profile'
-
-	* Modules/posixmodule.c: don't mess with SIGPIPE any more -- this
-	is now done in Python/pythonrun.c (saves NT dependency here)
-
-	* Modules/Setup.*: removed all except Setup.in (keeping them up to
-	date was too much of a pain)
-
-	* Python/import.c: don't rely on three-line "dl.h", just copy the
-	contents.
-
-	* Doc/libtypes.tex (subsubsection{More String Operations.}):
-	clarified tuple vs non-tuple argument to format strings.
-
-Wed Jun 22 10:38:22 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libsocket.tex: clarify the meaning of address for those
-	methods that or return addresses.
-
-	* Doc/libtypes.tex (subsubsection{File Objects.}): documented
-	writelines.
-
-Tue Jun 21 15:54:36 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/aifc.py: avoid calling read(0)
-
-	* Lib/sgi/cddp.py: added some functionality (Sjoerd)
-
-	* Include/modsupport.h: added decl for initmodule2().
-
-	* Parser/myreadline.c (my_readline): fixed typo in MPW-specific
-	hack; removed debug fprintfs; added two needed #includes.
-
-Mon Jun 20 23:46:04 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Objects/fileobject.c (file_read): test for negative read count
-	was misplaced.
-
-Mon Jun 18 11:20:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* acconfig.h: changed GETPGRP_HAVE_ARGS into GETPGRP_HAVE_ARG
-
-	* Lib/posixpath.py(walk): don't descend down symbolic links
-
-Thu Jun 16 16:20:12 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/imgformatmodule.c: new module for Jack by Jack
-
-Tue Jun 14 21:07:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Fix bug in 3quoted strings where string ends in quote followed
-	by newline
-
-Mon Jun 13 00:24:06 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/multifile.py: added readlines() and read() methods
-
-	* Lib/mimetools.py: added functions to encode/decode standard MIME
-	Content-transfer-encoding types (as well as uuencode)
-
-	* Lib/mhlib.py: new interface to MH folders and messages
-
-Sun Jun 12 17:38:31 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/socketmodule.c (sock_listen): fix typo (== instead of =)
-
-Thu Jun  9 23:33:33 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/compile.c (parsenumber), Python/marshal.c (r_object):
-	replace strtod() by atof()
-
-Tue Jun  7 11:41:05 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/lib.tex: added warning about lineii, libposixfile and partparse
-
-	* Lib/bdb.py (clear_all_breaks): this was defined with two
-	arguments that weren't used and shouldn't have been there
-
-Mon Jun  6 14:53:05 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/ceval.c (call_trace): Added call to fast_2_locals so
-	locals_2_fast won't zap locals if the trace function never looks
-	in f.f_locals; don't XDECREF(f->f_trace)
-
-Sun Jun  5 13:18:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/rfc822.py: Accept lines ending in CR LF as well
-
-Fri Jun  3 16:37:58 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/profile.py: unspecified improvements by Sjoerd
-
-	* Lib/{bdb,pwd,stdwin/wdb}.py: remove debugger overhead when
-	continuing with no breakpoints; add set_trace() method and
-	functions to forcibly enter the debugger
-
-	* Python/ceval.c(eval_code): give the name of the local variable
-	when LOAD_FAST or DELETE_FAST fails
-
-	* frameobject.[ch], ceval.c: made fast_2_locals and locals_2_fast
-	global and moved them to frameobject.c.  getattr(f, "f_locals")
-	now calls fast_2_locals and there are fewer other calls to it
-
-Thu Jun  2 13:50:11 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/ceval.c (call_trace): *p_trace can now be cleared by the
-	trace function!
-
-	* Modules/{{pwd,grp}module.c,Setup.in}: split pwdmodule.c into pwd
-	and grp modules (e.g. OS2 seems to have pwd but not grp)
-
-	* Modules/posixmodule.c: OS/2 mods: add #include <io.h>
-
-	* configure.in: test for existence of link, chown, setuid, setgid;
-	use std macros for output; require autoconf 1.8
-
-	* Python/sigcheck.c: sigcheck() for use without signalmodule.c
-
-	* Modules/signalmodule.c: added thread compatibility (only main
-	thread uses signals); much improved efficiency; intrcheck()
-	doesn't call sigcheck() but only tests and clears the SIGINT
-	tripped flag.
-
-	* Lots of places: replace intrcheck() by sigcheck() and remove
-	following err_set(KeyboardInterrupt).
-
-Wed Jun  1 11:33:34 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/regexmodule.c (reg_dealloc): remove bogus XDEL's.
-
-Tue May 31 11:22:47 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/intrcheck.c: removed sigcheck()
-
-	* Python/structmember.c (setmember): test for NULL value
-
-	* frameobject, Python/ceval.c (eval_code): moved trace variable to
-	frame object so debugging can be switched on later
-
-Mon May 23 14:44:46 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/newmodule.c: new module, create empty new objects (by
-	Tommy)
-
-Fri May 20 09:46:50 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/Makefile: add DVIPS variable with default "dvips -f"
-
-	* Parser/myreadline.c (my_fgets): Fix position of #endif EINTR
-
-Wed May 18 00:21:05 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/lib.tex: added libfcntl and libposixfile (by Jaap V)
-
-	* Objects/funcobject.c (func_compare): take argcount and argdefs
-	into account
-
-Wed May 17 00:00:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/import.c: bump MAGIC because of changes below
-
-	* Python/{ceval,compile}.c, Include/frameobject.h: changes to code
-	objects -- consts/names are tuples, RESERVE_LOCALS instruction
-	gets tuple of names instead of dictionary -- so code objects are
-	immutable and thus code and function objects are hashable
-
-	* Objects/listobject.c, Include/listobject.h: added listtuple() --
-	convert list to tuple
-
-Tue May 17 15:40:12 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/ceval.c (getframe): cast current_frame to (object *)
-
-	* Lib/ftplib.py (login): default user='' is translated explicitly
-	to 'anonymous'
-
-Wed May 11 10:29:22 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/tokenizer.c (tok_nextc): fix inf loop when file does not
-	end in newline
-
-	* Modules/sybasemodule.c: new, interface to sybase (John Redford)
-
-	* Modules/signalmodule.c: new, catch unix signals (Lance)
-
-	* Parser/intrcheck.c, Python/ceval.c, Include/ceval.h,
-	Python/pythonrun.c: prepare for signalmodule.c; add sigcheck()
-	interface to intrcheck.c, add getframe() interface to ceval.c;
-	don't override signal handlers in pythonrun.c
-
-Tue May 10 09:01:06 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/import.c (get_module): print dlopen debug message only of
-	verbose
-
-Mon May  9 10:37:48 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* acconfig.h: added _POSIX_THREADS define
-
-	* configure.in: test for -lpthreads; add directory argument to
-	--with-thread to LIBS as -L option
-
-	* Python/thread.c: split in per-system files (thread.c includes
-	thread_foobar.h for foobar threads)
-
-	* Objects/stringobject.c (formatstring): don't DECREF result of
-	strobject() before using it
-
-	* Doc/libtypes.tex: fix typo in table of list methods; clarify
-	truncation behavior of floating point formatting
-
-	* Doc/ref3.tex: clarify defaults for __repr__, __cmp__ and
-	__str__; correct (some) descriptions of class constructors
-
-Fri May  6 11:25:26 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* various files: micro changes needed to compile on Mac;
-	Grouped more Mac-specific files in Mac subdirectory
-
-	* Lib/*.py: rewrote many functions to use default arguments
-	instead of arbitrary argument lists
-
-Thu May  5 12:33:31 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/{cryptmodule.c,Setup.in}: new crypt(3) interface (Steve M)
-
-	* Python/bltinmodule.c, Include/bltinmodule.h: new fn setbuiltin()
-	to set a built-in variable
-
-	* Python/ceval.c (eval_code): place '_' variable in __builtin__
-	instead of in local dictionary, to avoid endless recursion when
-	printing vars()
-
-========================================================================
-Release 1.0.3 (14 July 1994)
-========================================================================
-
-Thu Jul 14 14:38:11 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* copied FAQ 1.10 (which still references 1.0.2 by the way)
-
-Thu Jul  7 12:20:10 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in: don't check for strtod!
-
-Tue Jul  5 23:18:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/stropmodule.c (strop_rindex): change semantics of third
-	argument -- as in the original string.rindex, search to its right,
-	not to its left.  (Maybe both index and rindex need a 4th
-	parameter to restrict the search on the other end?
-
-Fri Jul  1 12:47:05 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in: support --with-gcc[=value], --without-gcc
-
-	* configure.in, acconfig.h, config.h.in: check for clock_t
-
-	* Objects/stringobject.c (formatstring): fix nasty bug in resizing
-
-Tue Jun 28 00:57:35 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in (termcap): hack around conflict about clear() on
-	IRIX 5 in shared libraries gl and termcap
-
-Thu Jun 23 00:17:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/tokenizer.c: if a triple-quoted string ends in a quote
-	followed by a newline (followed immediately by the terminating 3
-	quotes) then a syntax error or system error ensues (one-line fix)
-
-Sun Jun 12 17:38:31 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/socketmodule.c (sock_listen): fix typo (== instead of =)
-
-Thu Jun  9 23:33:33 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/compile.c (parsenumber), Python/marshal.c (r_object):
-	replace strtod() by atof()
-
-Thu Jun  2 13:50:11 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in: test for existence of link, chown, setuid, setgid;
-	use std macros for output; require autoconf 1.8
-
-Wed Jun  1 11:33:34 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/regexmodule.c (reg_dealloc): remove bogus XDEL's.
-
-Tue May 31 11:22:47 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/structmember.c (setmember): test for NULL value
-
-Fri May 20 09:46:50 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/myreadline.c (my_fgets): Fix position of #endif EINTR
-
-Wed May 11 10:29:22 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/tokenizer.c (tok_nextc): fix inf loop when file does not
-	end in newline
-
-Tue May 10 09:01:06 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/import.c (get_module): print dlopen debug message only of
-	verbose
-
-Mon May  9 10:37:48 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* acconfig.h: added _POSIX_THREADS define
-
-	* configure.in: test for -lpthreads; add directory argument to
-	--with-thread to LIBS as -L option
-
-	* Objects/stringobject.c (formatstring): don't DECREF result of
-	strobject() before using it
-
-Fri May  6 11:25:26 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* various files: micro changes needed to compile on Mac;
-	Grouped more Mac-specific files in Mac subdirectory
-
-Thu May  5 12:33:31 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/bltinmodule.c, Include/bltinmodule.h: new fn setbuiltin()
-	to set a built-in variable
-
-	* Python/ceval.c (eval_code): place '_' variable in __builtin__
-	instead of in local dictionary, to avoid endless recursion when
-	printing vars()
-
-========================================================================
-Release 1.0.2 (4 May 1994)
-========================================================================
-
-Wed May  4 13:12:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* README: version 1.0.2
-
-	* Objects/fileobject.c (setfilebufsize): less error checking
-
-	* configure.in: test for withval != yes (autoconf 1.8 change)
-
-	* Makefile.in: don't remove config.status on "make clobber"
-
-	* Python/ceval.c (eval_code): removed last traces of killprint (-k
-	option)
-
-	* Doc/tut.tex: documented some more new stuff
-
-	* Added else clause to try-except.  Affected files:
-	Grammar/Grammar, Include/graminit.h, Python/graminit.c,
-	Python/compile.c, Doc/ref7.tex, Doc/tut.tex
-
-Tue May  3 15:21:47 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Misc/python.man: documented -u; undocumented -k
-
-	* Python/{python,frozen}main.c: got rid of -k option; added -u
-	option (unbuffered stdout/stderr); plus environment
-
-	* Python/import.c: Steven Majewski's mods for AIX
-
-	* Lib/lockfile.py: new module to lock files (using fcntl)
-
-	* Objects/fileobject.c, Include/fileobject.h: added setfilebufsize
-	function to set buffer size (call only from C when it's safe!)
-
-	* Python/bltinmodule.c (builtin_open): Added 3rd parameter to give
-	buffer size; default 2nd parameter to "r"
-
-Mon May  2 17:51:23 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/{al,cd,sv}module.c: added (method) casts to methodlist
-	initializers
-
-Thu Apr 28 15:01:50 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ref2.tex: (section{Line structure}): documented line joining
-	without backslashes inside parens
-
-Wed Apr 27 13:15:42 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Misc/python-mode.el: version 1.09 from Tim (grand new
-	indentation scheme)
-
-	* configure.in: test for setvbuf
-
-	* Python/ceval.c (PRINT_EXPR): assign a non-None value to '_'
-	before printing it
-
-	* Python/compile.c: only call PRINT_EXPR for interactive code
-	(start symbol single_input), else call POP_TOP after evaluating an
-	expression
-
-Tue Apr 26 16:23:06 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/bltinmodule.c (builtin_reduce): added essential INCREF()
-	if a third argument is present
-
-	* Doc/tut.tex: added chapter "Recent Additions"
-
-Mon Apr 25 11:27:09 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ref7.tex (section{Function definitions}): add missing '}'.
-
-	* Doc/ref2.tex (subsection{String literals}): documented triple
-	quotes and double quotes.
-
-	* Lib/test/test_grammar.py: added tests for triple-quoted strings
-	and strings continued with backslash-newline
-
-	* Objects/fileobject.c (writestring): don't do anything when
-	writing to a Python object while an error is already set
-
-	* Parser/tokenizer.c: added support for triple-quoted strings and
-	strings continued with backslash
-
-	* Parser/tokenizer.h: moved here from Include
-
-	* Python/compile.c (parsenumber): support triple-quoted strings.
-	Raise SyntaxError, not SystemError for bad number syntax
-
-Fri Apr 22 17:39:20 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Objects/{tuple,list,string,mapping}object.c,
-	Modules/arraymodule.c, Python/compile.c: use new
-	joinstring(_decref) interface for more compact code
-
-	* Objects/stringobject.c (joinstring): if error, DECREF and zero
-	result; added joinstring_decref() which XDECREFs its second
-	argument
-
-Thu Apr 21 10:59:04 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libtypes.tex (subsubsection{More String Operations}):
-	documented new '%(key)s' % {...} formatting and more liberal %s
-	interpretation (applies str() first)
-
-	* Doc/libfuncs.tex (section{Built-in Functions}): documented new
-	vars() built-in function
-
-	* Objects/stringobject.c (formatstring): add Donald Beaudry's
-	patch (slightly changed) to allow '%(<key>)<format>' % {...} to
-	format dictionary entries by key.  Also changed %s format to
-	accept any type and convert it to a string using str()
-
-	* Python/bltinmodule.c: add new built-in function vars() which
-	returns variables (of which dir() returns the sorted keys())
-
-Mon Apr 18 11:00:54 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/libppath.tex (section{Standard Module
-	\sectcode{posixpath}}): describe for expandvars()
-
-	* Lib/posixpath.py (expandvars): do it using regular expressions
-	instead of forking of a shell
-
-	* Lib/urllib.py (open_http, open_gopher): diagnose missing
-	hostname
-
-Sun Apr 17 21:52:52 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/compile.c (com_atom), Grammar/Grammar (atom): string
-	literal concatenation -- "abc" 'def' is equivalent to 'abcdef'
-
-Thu Apr 14 12:36:25 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/test/test_thread.py: new module to test threads (very basic)
-
-	* Python/thread.c: remove #define DEBUG 1
-
-	* Demo/scripts/freeze.py: changes by Jaap V and my own to make it
-	work again
-
-	* Makefile.in (libainstall): install frozenmain.c
-
-	* Python/frozenmain.c: added getprogramname()
-
-	* Doc/ref7.tex (section{Function definitions}): describe default
-	parameter values
-
-	* Lib/test/test_grammar.py: added grammar variants for default
-	argument expressions
-
-	* Python/compile.c: compile default argument values (com_argdefs
-	plus related stuff)
-
-	* Python/bltinmodule.c (builtin_apply): require that the argument
-	list is a tuple
-
-	* Misc/python-mode.el: change by Donald Beaudry to
-	py-compute-indentation; and fix to that by Sjoerd
-
-Wed Apr 13 10:08:33 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/ceval.c (eval_code): implement SET_FUNC_ARGS opcode
-
-	* Include/opcode.h: added SET_FUNC_ARGS opcode
-
-	* Objects/funcobject.c (newfuncobject, func_memberlist): added
-	func_argcount and func_argdefs fields and {get,set}funcargstuff()
-	functions.
-
-	* Include/funcobject.h: Added func_argcount and func_argdefs
-	fields and {get,set}funcargstuff() functions.
-
-	* Python/import.c (init_builtin): Give error message if module's
-	initialization function is NULL (e.g. for 'sys').
-	(get_module): Give error message if reloading a dynamically
-	loadable module.
-	(reload_module): Give error message if reloading a built-in
-	module; correctly (I hope) reload a frozen module.
-
-	* Doc/ref6.tex (break and continue): rephrase definition of
-	restrictions on where these may occur; change rules for continue
-	to match implementation.
-
-	* Doc/ref4.tex (section{Code blocks, execution frames, and name
-	spaces}): fix definition of what's local to include deleted
-	targets; added footnote describing exec and from - import *
-	restriction.
-
-	* Lib/dis.py: added LOAD_GLOBALS and EXEC_STMT to list of opcodes.
-
-Tue Apr 12 10:27:19 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/ceval.c (eval_code): fix core dump on "raise ()" -- found
-	by Tim Peters
-
-Mon Apr 11 20:48:26 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/compile.c (optimize): added optimization for LOAD_NAME
-	suggested by Steve Majewski
-
-	* Python/ceval.c (eval_code: case DELETE_FAST): fix cut-paste
-	error (w should be x) found by Steve Majewski
-
-Tue Mar 22 15:37:06 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/profile.py: fix handle_return for exceptional case (fix
-	suggested by Jim Roskind)
-
-	* Lib/tzparse.py (tzprog): Fix typo in test for regex.match
-
-	* Lib/urlopen.py: renamed to Lib/urllib.py
-
-Thu Mar 17 01:24:29 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/urlopen.py: added quote() and unquote() functions
-
-Wed Mar 16 11:26:29 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Objects/mappingobject.c: allow dictionaries with more than
-	20,000 entries.
-
-Thu Mar 10 11:13:24 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/{pdb,profile,bdb,codehack,stdwin/wdb}.py:
-	codehack.getcodename() is obsolete now we have co.co_name; same
-	for getfuncname(): f.func_name.  Module codehack is still needed
-	for getlineno(), used in profile and pdb
-
-Tue Mar  8 10:37:21 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/modsupport.c (do_arg): Format "O!" means typechecked
-	object; pointer argument must be preceded by typeobject
-
-	* Modules/threadmodule.c: don't define exit_prog if NO_EXIT_PROG
-	is defined
-
-	* Python/thread.c: don't define [_]exit_prog if NO_EXIT_PROG is
-	defined; in the SGI version, don't use signals if exit_prog is
-	node defined defined; in the SGI version, waitpid() for exited
-	threads.
-
-	* Python/pythonrun.c: don't call [_]exit_prog if NO_EXIT_PROG is
-	defined
-
-	* Include/thread.h: define NO_EXIT_PROG and then don't define
-	[_]exit_prog
-
-	* Modules/dbmmodule.c: Add calls to dbm_clearerr() after error on
-	assignment (fix by Jack)
-
-Mon Mar  7 12:41:32 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/test/test_rgbimg.py: search test file along sys.path
-
-	* Lib/test/test_{b1,b2,grammar}.py: tests for indefinite sequences
-
-	* Python/{bltinmodule,ceval}.c: Changed implied and explicit loops
-	over sequences to allow for "indefinite" sequences a la Steve
-	Majewski.  Instead of iterating over 0, 1, 2, ..., len(a)-1, we
-	now iterate over 0, 1, 2, ..., until we get an IndexError
-	exception (other exceptions are still errors).  This affects the
-	semantics of the following language constructs: "for x in a: ...",
-	"x in a", "x not in a", and the following built-in functions:
-	filter(), map(), max(), min(), reduce().
-
-	* Doc/ref6.tex (section{Assignment statements}): clarify slice
-	assignment; (section{The {\tt break} statement}): fix typo
-
-	* Doc/ref5.tex (subsection{Identifiers (Names)}): clarify
-	difference between local and global
-
-	* Doc/ref2.tex (subsection{String literals}): fix typo in def of
-	escapeseq
-
-	* Lib/addpack.py: new module to add packages to sys.path
-
-	* Lib/urlopen.py: added basejoin() function
-
-Fri Mar  4 13:07:43 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/urlopen.py(open_ftp): avoid crash when no host given
-
-Wed Mar  2 10:33:39 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/ceval.c (eval_code): use sys.check_interval to reset the
-	ticker
-
-	* Lib/repr.py: added special case for class instances (which may
-	cause exceptions in their __repr__)
-
-	* Lib/pdb.{py,doc}: mod by Steve Kirsch to allow setting a break
-	on a function name
-
-Tue Mar  1 10:32:54 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/pythonrun.c (run_tty_1): Fix wrong (uninitialized) return
-	value
-
-	* Doc/ref4.tex (table 4.1): differentiated between exec stmt and
-	eval()
-
-Mon Feb 28 10:49:20 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/svmodule.c: correct wrong cast of svideo_getattr
-
-	* README: added Linux to list of supported systems.
-
-	* Doc/libsocket.tex: adapt to min value of 1 for listen() backlog
-	argument.
-
-	* Modules/socketmodule.c (sock_listen): ensure backlog argument is
-	at least 1.
-
-Fri Feb 25 14:25:30 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Include/osdefs.h, Modules/config.c.in: Added NT case (same as
-	MSDOS)
-
-Thu Feb 24 09:58:53 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/posixmodule.c: merged in NT changes by Jaap Vermeulen
-
-	* README: added Mac and PC platforms to blurb.
-
-	* Doc/libfuncs.tex (section{Built-in Functions}): documented
-	xrange()
-
-	* Doc/ref7.tex (section{Function definitions} added index entry
-	for second ref to lambda.
-
-	* Lib/{bdb.py,pdb.py,stdwin/wdb.py}: call linecache.checkcache()
-	in bdb.Bdb's reset method; remove it from the test() functions.
-
-Wed Feb 23 10:15:28 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/parsermodule.c (parser_parsefile): fix fatal typo in
-	NULL comparison
-
-	* Misc/python.man: fixed mess describing -d and -i options
-
-Tue Feb 22 09:08:22 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Demo2: added new subdirectory holmes, with Mark Lutz' expert
-	system shell
-
-	* Demo: added new subdirectory lutz, with Mark Lutz' examples
-	(e.g. psh.py, a nice enhanced Python shell!!!)
-
-	* Lib/os.py: added listdir for Windows NT
-
-	* Modules/timemodule.c, Parser/intrcheck.c: changes for Windows NT
-	by Jaap Vermeulen (#ifdef _M_IX86)
-
-	* Makefile.in (inclinstall): added variable INCLUDEPY to specify
-	where the include files are installed
-
-	* Modules/nismodule.c (nisproc_maplist_2): cast some args to
-	(caddr_t) as required on some systems
-
-	* Objects/mappingobject.c (getmappingitems): correct typo (called
-	_values instead of _items)
-
-Mon Feb 21 17:07:07 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/rfc822.py: added access as a dictionary
-
-	* Lib/urlopen.py: new module to access arbitrary files designated
-	by a URL (Universal Resource Locator)
-
-	* Lib/{httplib,gopherlib}.py: new modules to interface to HTTP
-	and gopher servers
-
-	* Lib/rfc822.py: moved _monthnames to where it is used; add some
-	blank lines
-
-Fri Feb 18 09:54:34 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/sgi/flp.py: avoid using time.milli{sleep,timer}
-
-	* Lib/stdwin/WindowSched.py: avoid using time.milli{sleep,timer}
-	-- still maintain time in milliseconds though
-
-	* Lib/sched.py: remove references to milli{timer,sleep} from comments
-
-	* Lib/os.py: made execvp more portable; added os.pathsep and
-	os.defpath
-
-Thu Feb 17 12:53:33 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/ftplib.py(FTP.makeport): call listen(1) instead of listen(0)
-	so it works on Solaris 2
-
-	* Modules/makesetup: reverse order of DEFS so first Setup file can
-	override; any non-cpp uppercase option is sent to the linker
-
-Wed Feb 16 10:26:59 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Objects/fileobject.c: add name, mode, softspace and closed
-	attributes (softspace is also writable).
-
-	* configure.in: in --verbose mode, don't hide compiler output
-
-========================================================================
-Release of 1.0.1 (Feb 15 1994)
-========================================================================
-
-Tue Feb 15 11:32:42 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/string.py (atof): force the result to be float
-
-	* Python/modsupport.c (do_arg): don't use a local object va --
-	this doesn't work on some compilers (e.g. WATCOM)
-
-Mon Feb 14 10:52:01 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/dospath.py: proper version by Jaap Vermeulen
-
-	* Makefile.in (Makefiles): add semicolon after ) which some Make
-	versions need
-
-	* Doc/libposix.tex: added doc for posix.fdopen
-
-	* README: add Sequent and NeXT to list of platforms; add
-	troubleshooting section; add hist about -Dindex for readline
-
-	* Lib/os.py: generalize to many os specific modules using a
-	dictionary
-
-	* Lib/ospath.py: now obsolete; use os.name to import the right one
-
-	* configure.in: change order of -lsocket and -lnsl and insert
-	-linet in between, so it works on Sequent (it still works on
-	Solaris 2 -- hope it still works elsewhere as well); add test for
-	_NEXT_SOURCE (then define _POSIX_SOURCE); remove test for dlopen;
-
-	* configure.in, acconfig.h, */modsupport.[ch]: rename
-	HAVE_VARARGS_PROTOTYPES to HAVE_STDARG_PROTOTYPES, to avoid
-	confusion
-
-	* Include/modsupport.h: no prototypes for getargs() and mkvalue()
-	in case no varargs prototypes
-
-	* Lib/test/test_grammar.py: don't import sleep from time, but time
-	(since sleep has portability problems)
-
-Fri Feb 11 23:47:46 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Parser/intrcheck.c: added QUICKWIN version (doesn't really
-	work); fixed MSDOS version to also set a SIGINT handler.
-
-	* Modules/timemodule.c (time_sleep): declare sigsave 'auto' hoping
-	this will avoid restoring its pre-setjmp value.  On non-threaded
-	systems declare it 'static' since at least Microsoft C still puts
-	the auto variable in a register causing a bug...  Also implement
-	the MSDOS version of floatsleep() using a busy-wait loop calling
-	intrcheck()
-
-Wed Feb  9 11:43:11 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Lib/rfc822.py: added parsedate() and parseaddr() utility
-	functions and getdate(), getaddr(), getaddrlist() methods; added
-	test code when run as script
-
-	* Include/pythonrun.h, Python/pythonrun.c: cleanup() is now
-	externally visible, for the benefits of embedded use.
-
-	* Lib/dospath.py: new module for dos stuff
-
-Mon Feb  7 09:50:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/makesetup: add -n option between Setup files (suppresses
-	making of .o files but keeps processing of libraries and module
-	names)
-
-	* Makefile.in (libainstall): install Setup, makesetup, config.c.in
-
-	* Modules/Setup*: added -lX11_s to line for gl module
-
-	* Demo/scripts/unbirthday.py: new script, print unbirthday count
-
-	* Modules/audioopmodule.c: removed hack for signed on sun
-	(there's now a test in the configure script); check that if
-	'signed' is defined away characters aren't unsigned
-
-	* Modules/posixmodule.c: include mytime.h (for clock_t on NeXT)
-
-	* acconfig.h: add entry for 'signed' keyword
-
-	* configure.in: remove const from check for exec prototypes; add
-	check for signed keyword and check for whether chars are unsigned
-
-Fri Feb  4 13:07:03 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/makesetup: added usage message, -c and -m options to
-	specify config.c.in and Makefile.pre input files, -s option to
-	specify source directory, added comments
-
-	* Modules/Setup.in: remove -lm from imgfile entry
-
-	* Modules/nismodule.c: only define YPPROC_MAPLIST, YPPROG and
-	YPVERS if not already defined
-
-	* configure.in, acconfig.h, Include/modsupport.h,
-	Python/modsupport.c: added separate check for varargs prototypes
-	(HAVE_VARARGS_PROTOTYPES)
-
-Thu Feb  3 11:00:26 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/bltinmodule.c (filterstring): fix core dump of func ==
-	None
-
-	* Lib/string.py: replace atoi_error, atof_error, atol_error by
-	ValueError when the strop versions are used
-
-	* Modules/stropmodule.c: added atol(), added optional base
-	argument to atoi() and atol()
-
-	* Objects/longobject.c, Include/longobject.h: added long_escan
-	(like long_scan but raises exception for bad base and stores end
-	of string into return argument)
-
-	* Objects/rangeobject.c (range_repr): repr must use "xrange..."
-
-Wed Feb  2 12:28:04 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/stropmodule.c: added atoi() and atof()
-
-	* Python/modsupport.c: use stdarg.h / varargs.h depending on
-	presence of prototypes
-
-	* Modules/timemodule.c (floattime): try ftime() or time() if
-	gettime() fails
-
-Tue Feb  1 14:41:04 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/Makefile (python-lib.info): change makeinfo option style
-	from +foo to --foo
-
-	* Doc/README: remove invalid reference to ../misc/FTP; update
-	description of making the info version
-
-	* Doc/{fix.el,fix_hack,whichlibs}: minor updates/corrections
-
-Mon Jan 31 11:16:38 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/import.c: only use shared libraries if HAVE_DLOPEN *and*
-	HAVE_DLFCN_H are defined; define symbol USE_SHLIB then
-
-	* Doc/tut.tex: lots of small changes by Tim Peters: typos,
-	out-of-date examples, restrictions lifted, new and better ways to
-	do some things...
-
-Fri Jan 28 10:59:48 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* README: added Minix note
-
-	* Lib/sunau.py: correct byte count calculation from frame rate
-
-	* Lib/aifc.py: rate should be an integer
-
-Thu Jan 27 12:55:17 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ext.tex: removed obsolete reminder in line 1; correct typo
-
-	* Misc/FAQ: fixed some out of date info, added question on module
-	run as script
-
-	* Modules/rgbimgmodule.c (initrgbimg): exception string should
-	contain dot not comma
-
-	* Modules/md5module.c: fix compiler warnings about (unsigned) char
-
-	* Makefile.in: libinstall and maninstall should use $(srcdir)
-
-	* Lib/tzparse.py: don't run test() on import
-
-	* Lib/filewin.py: moved into Lib/stdwin
-
-	* Modules/cdmodule.c: fix wrong cast of cdparser_getattr
-
-========================================================================
-Release of 1.0.0 (Jan 26 1994)
-========================================================================
-
-Wed Jan 26 14:13:39 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/tut.tex: updated version number in invocation example
-
-	* Doc/Makefile: update destination of texi2html
-
-	* Misc/FAQ: updated for release 1.0.0
-
-	* Misc/NEWS: created -- all bits of news
-
-	* Misc/HISTORY: added (from old releases)
-
-	* Misc/README: documented some new files
-
-	* README: non-beta version and preface, don't ref TODO
-
-	* Makefile.in: got rid of references to TODO
-
-	* Python/version.c, Doc/???.tex: updated version and date
-
-Tue Jan 25 20:11:49 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ext.tex: revamped, finally ready for release
-
-	* Doc/{Makefile,myformat.perl}: support latex2html (0.5.1)
-
-	* README: correct typo on DL_DIRECTORY
-
-========================================================================
-Release of 1.0.0 BETA 6 (Jan 24 1994)
-========================================================================
-
-Mon Jan 24 16:37:46 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Doc/ref?.tex: Change \verb\<stuff>\ into \verb@<stuff>@ so
-	latex2html doesn't crash
-
-Thu Jan 20 18:05:18 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Ext-dummy/, README, Makefile.in: Created new directory
-	Ext-dummy/.  Ext-dummy/ contains its own README and copies of
-	Extensions/mk{ext,mf}.py.
-
-Tue Jan 18 11:04:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/getmtime.c: Include config.h if we have it
-
-	* Modules/Setup.in: fixed comments about GMP version
-
-	* Modules/nismodule.c: define YPPROC_MAPLIST, YPPROG, YPVERS as
-	plain integer literals, to make it work on 64 bit machines
-
-	* Parser/grammar.c (translabel): remove redundant decl of strchr()
-	(which caused trouble on AIX)
-
-Sun Jan 16 14:13:13 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in: test for fcntl.h
-
-	* Modules/posixmodule.c: include fcntl.h if it exists
-
-Fri Jan 14 17:35:33 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* configure.in: check for sys/time.h; substitute and check for AR;
-	check for nice()
-
-	* Makefile.in: make python .PRECIOUS; define OPT=-O and pass it to
-	submakes
-
-	* */Makefile*in: set OPT=-O; set AR=@ar@
-
-	* Modules/Setup.minix: new
-
-	* Lib/audiodev.py: only import system specific modules if needed
-
-Thu Jan 13 16:40:28 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/flmodule.c: make type objects static
-
-	* Modules/almodule.c: make type objects static
-
-	* Makefile.in: add rule to build Makefile; add VPATH for that;
-	remove dependency on configure script (you can run 'make autoconf'
-	instead); add Lib/test to path for test target;
-
-	* Lib/test: new subdirectory, holds all test modules
-
-Wed Jan 12 10:17:41 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* acconfig.h: added HAVE_ALTZONE
-
-	* configure.in: test for altzone; check for working
-	termcap/termlib when --with-readline used; don't test for readline
-	function; send errors to stderr
-
-	* Lib/test_grammar.py: fix 64-bit int test for max negative int
-
-	* Python/import.c (get_module): call dlerror() when dlopen() fails
-	(also some layout changes)
-
-Tue Jan 11 10:56:00 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Python/import.c: use RTLD_NOW (define as 2 if undefined)
-
-	* Makefile.in: "make (local)clean" shouldn't bother about Include;
-	added .PRECIOUS: config.status
-
-	* Modules/md5.h: define PROTOTYES as 1 if HAVE_PROTOTYPES is
-	defined
-
-	* Modules/md5module.c: grand cleanup
-
-	* Modules/Setup.sgi: renamed to Setup.irix4
-
-	* Modules/Setup.sunos5: renamed to Setup.solaris2
-
-	* Modules/Setup.in: some makes (e.g. Ultrix) don't strip trailing
-	whitespace from variable definitions -- make sure there isn't any
-	in the defs used to generate PYTHONPATH
-
-	* Many modules and objects: use 'staticforward' where needed
-
-	* Include/object.h: added #define 'staticforward' as either static
-	or extern depending on BAD_STATIC_FORWARD
-
-	* acconfig.h: added BAD_STATIC_FORWARD
-
-	* configure.in: added test for bad static forward
-
-Mon Jan 10 10:35:21 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/md5module.c: SCO ODT 3.0 dependent fix
-
-	* Objects/xxobject.c: quote size fields as tp_basicsize instead of
-	(incorrectly) tp_size
-
-	* Objects/listobject.c (cmp): arguments must be const!!!
-
-	* Modules/imageopmodule.c: another attempt at casting away
-	warnings about changed semantics in ANSI C
-
-	* Modules/regexpr.c: cast away warning about changed semantics in
-	ANSI C
-
-	* Modules/Makefile.pre.in: add LIBC_S (shared version of -lc, to
-	be figured out by configure)
-
-	* README, Python/version.c: version 1.0.0 BETA 6
-
-	* README: fixed description of Setup (which was buried under the
-	SVR4 exception!); added description of --prefix, --exec-prefix,
-	--with-libm and --with-libc
-
-	* configure.in: added --with-libc=... and --with-libm=...
-
-	* Modules/Makefile.pre.in: Remove dependency of Setup on Setup.in,
-	so it is only copied when Setup does not exist at all; add
-	prefix=/usr/local so Setup can base default path on --prefix
-	option to toplevel configure script
-
-	* Modules/Setup.in: clarified build procedure in comments; don't
-	include GNN's timing module by default; use $(prefix) instead
-	requiring manual edit of DESTDIR
-
-	* Makefile.in: replace DESTDIR by prefix and exec_prefix and
-	updated affected targets; added inclinstall and libainstall
-	targets
-
-	* Objects/accessobject.c: removed (???) from comment to avoid
-	trigraph warning
-
-	* Makefile.in (libinstall): correct typo: (D)DESTDIR
-
-Fri Jan  7 10:34:43 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* README: describe --with-sgi-dl and --with-dl-dld
-
-	* Python/Makefile.in: compile import.c with -I$(DLINCLDIR)
-
-	* Python/import.c: check for WITH_SGI_DL and WITH_DL_DLD
-
-	* acconfig.h: added WITH_SGI_DL and WITH_DL_DLD
-
-	* configure.in: added --with-sgi-dl=DIR and
-	--with-dl-dld=DIR,DIR; now require --with-readline=DIR and test
-	for existing directory
-
-	* Lib/test_audioop.py: new module to test (you guessed it) audioop
-
-	* Modules/audioopmodule.c: got rid of adpcm32lin and lin2adpcm3 --
-	Jack says they're not useful
-
-========================================================================
-Release of 1.0.0 BETA 5 (Jan 6 1994)
-========================================================================
-
-Thu Jan  6 13:36:32 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* readline/Makefile: remove some cruft so it works with VPATH
-
-	* Lib/aifc.py: remove dependencies on AL (Sjoerd)
-
-	* README: describe new Setup procedure
-
-	* Modules/Makefile.pre.in: copy Setup from $9srcdir)/Setup.in so
-	it *really* works with VPATH
-
-	* Modules/Setup: renamed to Modules/Setup.in
-
-	* Python/pythonmain.c (realmain): fclose script file
-
-	* Python/import.c (get_module): fix important leak: close the .py
-	file after parsing!
-
-	* README, Python/version.c: version 1.0.0 BETA 5
-
-Wed Jan  5 16:42:35 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Modules/rgbimgmodule.c: Only include <unistd.h> if it exists
-
-	* Modules/timemodule.c: don't include sys/time.h on the Mac
-
-	* Modules/stdwinmodule.c (initstdwin): don't fuss with sys.argv on
-	the mac -- so {check,putback}stringlist aren't needed there
-
-	* Parser/intrcheck.c: Make sure <MacHeaders> is included before
-	any other include file
-
-	* Modules/audioopmodule.c: include math.h after allobjects.h (so
-	the latter can be a precompiled header file on the Mac)
-
-Wed Jan  5 15:34:26 1994  Guido van Rossum  (guido@poseidon.cwi.nl)
-
-	* Python/pythonrun.c (sighandler): only call kill(getpid()) if
-	getpid() exists; otherwise call exit(1)
-
-	* configure.in: added test for getpid()
-
-	* Modules/config.c.in: Changes for Macintosh: new default path,
-	call wargc() in main(); 1994 copyright
-
-	* Python/frozenmain.c: added declarations for getversion() and
-	getcopyright() (foei!); insert "Python " before version on banner
-
-	* Python/pythonmain.c: added declarations for getversion() and
-	getcopyright() (foei!); default startupfile to "PythonStartup" on
-	Macintosh; add fclose(fp) for startupfile; insert "Python " before
-	version on banner
-
-========================================================================
-Release of 1.0.0 BETA 4 (Jan 5 1994)
-========================================================================
-
-Wed Jan  5 01:21:59 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* README, version.c: bumped version to 1.0.0 BETA 4
-
-	* README: removed all references to --with-solaris; updated list
-	of files and directories
-
-	* Modules/sunaudiodevmodule.c: define SOLARIS if
-	HAVE_SYS_AUDIOIO_H is defined
-
-	* Python/thread.c: define SOLARIS if HAVE_THREAD_H is defined
-
-	* configure.in: added test for <thread.h> (SOLARIS thread
-	interface); remvoe test for --with-solaris
-
-========================================================================
-Release of 1.0.0 BETA 3 (Jan 5 1994)
-========================================================================
-
-Wed Jan  5 00:18:45 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* {Parser,Objects,Python,Makefile}/Makefile*in: made depend target
-	work with VPATH
-
-	* README: describe new build procedure; added section on building
-	for multiple architectures
-
-	* acconfig.h: fix (reversed!) comment for SYS_SELECT_WITH_SYS_TIME
-
-	* Modules/Makefile.pre.in: copy Setup from $(srcdir) if not
-	present, and use local Setup as input for makesetup script
-
-Tue Jan  4 12:32:16 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Note that there are no functional changes below -- just changes
-	to the build process and changes to avoid compiler warnings
-
-	* Modules/Setup: disable nis as well by default, change the
-	pertaining comments, and change the comments about the multimedia
-	modules to be default on
-
-	* fixed all warnings about function pointer initializations, and
-	miscellanous other warnings (e.g. about extern forward references
-	to static variables); touched random bits of code as a consequence
-
-	* changed configuration process and Makefiles to support VPATH;
-	for this, config.h(.in) now lives to the toplevel directory, the
-	toplevel Makefile is now created by configure as well, and various
-	improvements to it have been made (e.g. working tags and TAGS
-	targets), the makesetup script follows configure instead of
-	preceding it, it understands srcdir and has an exception for
-	glmodule.c, the intermediate file is called Makefile.pre, the
-	Makefiles don't use TOP any more and are much more careful about
-	the difference between .. and the toplevel directory, and I've
-	improved my understanding of how configure handles srcdir
-
-	* Modules/threadmodule.c: refuse to compile when WITH_THREAD is not
-	defined
-
-	* configure.in, acconfig.h, config.h.in, Include/ceval.h,
-	Modules/{stdwin,thread}module.c, Python/{ceval,pythonrun}.c:
-	renamed USE_THREAD to WITH_THREAD
-
-	* configure.in: add AC_PROG_INSTALL
-
-	* README, Python/version.c: version set to 1.0.0 BETA 3
-
-	* Demo, Include, Lib: added Makefile with clean/clobber targets
-
-	* README: added remarks on --with-svr4; unnumber special cases
-
-	* configure.in: only look for -lnsl and -lsocket if --with-svr4 is
-	specified, to avoid linking with them on IRIX 5
-
-========================================================================
-Release of 1.0.0 BETA 2 (Jan 3 1994)
-========================================================================
-
-Mon Jan  3 22:21:24 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* Include/myselect.h: fix typo in name of SYS_SELECT_WITH_SYS_TIME
-
-	* Parser/pgen.h: moved here from Include; removed extern
-	definition of 'gram'
-
-	* Parser/acceler.c: include node.h, now needed by parser.h
-
-	* README: added paragraph on testing
-
-	* Misc/python.man: changed date and add 1994 copyright
-
-	* Makefile: added test target
-
-	* Python/thread.c: include config.h if needed
-
-	* Parser/parser.h: remove references to struct _grammar and
-	similar things
-
-	* Modules/rotormodule.c (RTR_e_char, RTR_d_char): avoid warnings
-	by picky compilers about unsigned % signed
-
-	* README: added a section on building it for non-UNIX systems
-
-	* Makefile (configure): call autoheader when calling autoconf
-
-	* Include/config.h.in: now generated by autoheader
-
-	* acconfig.h: new file (input for autoheader)
-
-	* configure.in: added AC_REVISION call to top
-
-	* Modules/flmodule.c (form_setattr): one NULL should be 0
-
-	* Include/myselect.h: this now implies mytime.h and attempts to
-	work around systems where sys/select.h and sys/time.h can't be
-	included together
-
-	* Modules/socketmodule.c, Doc/libsocket.tex: remove socket avail()
-	method -- you can use select instead
-
-	* Modules/Setup: disable dbm, it is not truly portable
-
-	* Lib/sunau.py: incorporate one-line fix by Sjoerd
-
-	* Include/pgenheaders.h: include <stdlib.h> if its symbol
-	defined, not just on the mac
-
-	* Include/grammar.h: remove redundant structure tags
-
-	* Include/cgensupport.h: avoid possible macro argument
-	substitution inside string literal
-
-	* configure.in, Include/config.h.in: add test whether sys/select.h
-	and sys/times.h can be included by the same program
-
-	* Include/config.h.in: add lines for HAVE_SYS_UN_H and
-	HAVE_GETPEERNAME
-
-	* Extensions/mkext.py: copy change in library order from
-	Modules/Makefile.in.in
-
-	* Modules/Makefile.in.in: change library order subtly so -ltermcap
-	follows instead of precedes -lgl_s on SGI systems; this solves
-	(hides?) problems with clashing entry points
-
-	* configure.in: added sys/un.h to list of tested header files;
-	added getpeername to list of tested functions (both for
-	Modules/socketmodule.c)
-
-	* Modules/socketmodule.c: conditionally include sys/un.h and
-	change tests for AF_UNIX to tests for HAVE_SYS_UN_H; test for
-	HAVE_GETPEERNAME instead of NO_PEERNAME
-
-	* Modules/config.c.in: add marshal and __main__ built-in modules
-
-	* Python/sysmodule.c (list_builtin_module_names): sort the list
-
-	* Doc/Makefile: remove 'qua' from default targets
-
-	* Doc/README: add reference to ext.tex, change reference to
-	lib*.tex, explain that qua isn't built by default
-
-	* README: explain DESTDIR, clarify install procedure, add more
-	explanation to some options, add description of ChangeLog, add
-	wuarchive.wustl.edu to list of mirror sites
-
-	* Modules/socketmodule.c: make AF_UNIX code dependent on existence
-	of AF_UNIX (SCO ODT 3.0 doesn't support it -- let's hope it
-	doesn't define the symbol either)
-
-	* Makefile: attempt to fix install targets (added separate
-	libinstall and maninstall)
-
-	* Doc/libregex.tex: documented Tracy Tims' changes
-
-	* Modules/regexpr.c: redid Tracy Tims' changes to minimize diffs
-	(only two added lines now)
-
-	* Modules/regexmodule.c: fix core dump when asking a plain regex
-	object for a named group
-
-Sun Jan  2 23:10:44 1994  Guido van Rossum  (guido@voorn.cwi.nl)
-
-	* README, Python/version.c: changed version string to 1.0.0 BETA 2
-
-	* Modules/{regexpr.{c,h},regexmodule.c}: merged in Tracy Tims'
-	mods for named subexpressions
-
-	* Include/regexpr.h: moved to Modules/regexpr.h
-
-	* Modules/timingmodule.c: change tests for no arguments
-
-	* configure.in: remove strtoul from AC_REPLACE_FUNCS; remove
-	initial blank line (which got copied into configure so it wouldn't
-	start with #!/bin/sh as required)
-
-	* Python/compile.c: call mystrto(u)l instrad of strto(u)l
-
-	* Python/Makefile.in: add mystrtoul.c to OBJS
-
-	* Python/mystrtoul.c: renamed from strtol.c; renamed functions to
-	mystrto(u)l; this is now a standard source file (since some
-	systems have a strto(u)l that doesn't report errors properly)
-
-	* Modules/Setup: added entry for timing module
-
-	* Modules/{timing.h,timingmodule.c}: new files implementing GNN's
-	timing module
-
-========================================================================
-Release of 1.0.0 BETA (Jan 1 1994)
-========================================================================
