4 This file contains the release messages for previous Python releases.
5 As you read on you go back to the dark ages of Python's history.
8 ======================================================================
17 - The documentation is now unbundled. It has also been extensively
18 modified (mostly to implement a new and more uniform formatting
19 style). We figure that most people will prefer to download one of the
20 preformatted documentation sets (HTML, PostScript or PDF) and that
21 only a minority have a need for the LaTeX or FrameMaker sources. Of
22 course, the unbundled documentation sources still released -- just not
23 in the same archive file, and perhaps not on the same date.
25 - All bugs noted on the errors page (and many unnoted) are fixed. All
26 new bugs take their places.
28 - No longer a core dump when attempting to print (or repr(), or str())
29 a list or dictionary that contains an instance of itself; instead, the
30 recursive entry is printed as [...] or {...}. See Py_ReprEnter() and
31 Py_ReprLeave() below. Comparisons of such objects still go beserk,
32 since this requires a different kind of fix; fortunately, this is a
33 less common scenario in practice.
38 - The raise statement can now be used without arguments, to re-raise
39 a previously set exception. This should be used after catching an
40 exception with an except clause only, either in the except clause or
41 later in the same function.
43 Import and module handling
44 --------------------------
46 - The implementation of import has changed to use a mutex (when
47 threading is supported). This means that when two threads
48 simultaneously import the same module, the import statements are
49 serialized. Recursive imports are not affected.
51 - Rewrote the finalization code almost completely, to be much more
52 careful with the order in which modules are destroyed. Destructors
53 will now generally be able to reference built-in names such as None
56 - Case-insensitive platforms such as Mac and Windows require the case
57 of a module's filename to match the case of the module name as
58 specified in the import statement (see below).
60 - The code for figuring out the default path now distinguishes between
61 files, modules, executable files, and directories. When expecting a
62 module, we also look for the .pyc or .pyo file.
64 Parser/tokenizer changes
65 ------------------------
67 - The tokenizer can now warn you when your source code mixes tabs and
68 spaces for indentation in a manner that depends on how much a tab is
69 worth in spaces. Use "python -t" or "python -v" to enable this
70 option. Use "python -tt" to turn the warnings into errors. (See also
71 tabnanny.py and tabpolice.py below.)
73 - Return unsigned characters from tok_nextc(), so '\377' isn't
74 mistaken for an EOF character.
76 - Fixed two pernicious bugs in the tokenizer that only affected AIX.
77 One was actually a general bug that was triggered by AIX's smaller I/O
78 buffer size. The other was a bug in the AIX optimizer's loop
79 unrolling code; swapping two statements made the problem go away.
81 Tools, demos and miscellaneous files
82 ------------------------------------
84 - There's a new version of Misc/python-mode.el (the Emacs mode for
85 Python) which is much smarter about guessing the indentation style
86 used in a particular file. Lots of other cool features too!
88 - There are two new tools in Tools/scripts: tabnanny.py and
89 tabpolice.py, implementing two different ways of checking whether a
90 file uses indentation in a way that is sensitive to the interpretation
91 of a tab. The preferred module is tabnanny.py (by Tim Peters).
93 - Some new demo programs:
95 Demo/tkinter/guido/paint.py -- Dave Mitchell
96 Demo/sockets/unixserver.py -- Piet van Oostrum
99 - Much better freeze support. The freeze script can now freeze
100 hierarchical module names (with a corresponding change to import.c),
101 and has a few extra options (e.g. to suppress freezing specific
102 modules). It also does much more on Windows NT.
104 - Version 1.0 of the faq wizard is included (only very small changes
105 since version 0.9.0).
107 - New feature for the ftpmirror script: when removing local files
108 (i.e., only when -r is used), do a recursive delete.
110 Configuring and building Python
111 -------------------------------
113 - Get rid of the check for -linet -- recent Sequent Dynix systems don't
114 need this any more and apparently it screws up their configuration.
116 - Some changes because gcc on SGI doesn't support '-all'.
118 - Changed the build rules to use $(LIBRARY) instead of
119 -L.. -lpython$(VERSION)
120 since the latter trips up the SunOS 4.1.x linker (sigh).
122 - Fix the bug where the '# dgux is broken' comment in the Makefile
123 tripped over Make on some platforms.
125 - Changes for AIX: install the python.exp file; properly use
126 $(srcdir); the makexp_aix script now removes C++ entries of the form
129 - Deleted some Makefile targets only used by the (long obsolete)
135 - Performance and threading improvements to the socket and bsddb
136 modules, by Christopher Lindblad of Infoseek.
138 - Added operator.__not__ and operator.not_.
140 - In the thread module, when a thread exits due to an unhandled
141 exception, don't store the exception information in sys.last_*; it
142 prevents proper calling of destructors of local variables.
144 - Fixed a number of small bugs in the cPickle module.
146 - Changed find() and rfind() in the strop module so that
147 find("x","",2) returns -1, matching the implementation in string.py.
149 - In the time module, be more careful with the result of ctime(), and
150 test for HAVE_MKTIME before usinmg mktime().
152 - Doc strings contributed by Mitch Chapman to the termios, pwd, gdbm
155 - Added the LOG_SYSLOG constant to the syslog module, if defined.
157 Standard library modules
158 ------------------------
160 - All standard library modules have been converted to an indentation
161 style using either only tabs or only spaces -- never a mixture -- if
162 they weren't already consistent according to tabnanny. This means
163 that the new -t option (see above) won't complain about standard
166 - New standard library modules:
168 threading -- GvR and the thread-sig
169 Java style thread objects -- USE THIS!!!
171 getpass -- Piers Lauder
172 simple utilities to prompt for a password and to
173 retrieve the current username
175 imaplib -- Piers Lauder
176 interface for the IMAP4 protocol
178 poplib -- David Ascher, Piers Lauder
179 interface for the POP3 protocol
181 smtplib -- Dragon De Monsyne
182 interface for the SMTP protocol
184 - Some obsolete modules moved to a separate directory (Lib/lib-old)
185 which is *not* in the default module search path:
197 - New version of the PCRE code (Perl Compatible Regular Expressions --
198 the re module and the supporting pcre extension) by Andrew Kuchling.
199 Incompatible new feature in re.sub(): the handling of escapes in the
200 replacement string has changed.
202 - Interface change in the copy module: a __deepcopy__ method is now
203 called with the memo dictionary as an argument.
205 - Feature change in the tokenize module: differentiate between NEWLINE
206 token (an official newline) and NL token (a newline that the grammar
209 - Several bugfixes to the urllib module. It is now truly thread-safe,
210 and several bugs and a portability problem have been fixed. New
211 features, all due to Sjoerd Mullender: When creating a temporary file,
212 it gives it an appropriate suffix. Support the "data:" URL scheme.
213 The open() method uses the tempcache.
215 - New version of the xmllib module (this time with a test suite!) by
218 - Added debugging code to the telnetlib module, to be able to trace
221 - In the rfc822 module, added support for deleting a header (still no
222 support for adding headers, though). Also fixed a bug where an
223 illegal address would cause a crash in getrouteaddr(), fixed a
224 sign reversal in mktime_tz(), and use the local timezone by default
225 (the latter two due to Bill van Melle).
227 - The normpath() function in the dospath and ntpath modules no longer
228 does case normalization -- for that, use the separate function
229 normcase() (which always existed); normcase() has been sped up and
230 fixed (it was the cause of a crash in Mark Hammond's installer in
233 - New command supported by the ftplib module: rmd(); also fixed some
236 - The profile module now uses a different timer function by default --
237 time.clock() is generally better than os.times(). This makes it work
238 better on Windows NT, too.
240 - The tempfile module now recovers when os.getcwd() raises an
243 - Fixed some bugs in the random module; gauss() was subtly wrong, and
244 vonmisesvariate() should return a full circle. Courtesy Mike Miller,
245 Lambert Meertens (gauss()), and Magnus Kessler (vonmisesvariate()).
247 - Better default seed in the whrandom module, courtesy Andrew Kuchling.
249 - Fix slow close() in shelve module.
251 - The Unix mailbox class in the mailbox module is now more robust when
252 a line begins with the string "From " but is definitely not the start
253 of a new message. The pattern used can be changed by overriding a
254 method or class variable.
256 - Added a rmtree() function to the copy module.
258 - Fixed several typos in the pickle module. Also fixed problems when
259 unpickling in restricted execution environments.
261 - Added docstrings and fixed a typo in the py_compile and compileall
262 modules. At Mark Hammond's repeated request, py_compile now append a
263 newline to the source if it needs one. Both modules support an extra
264 parameter to specify the purported source filename (to be used in
267 - Some performance tweaks by Jeremy Hylton to the gzip module.
269 - Fixed a bug in the merge order of dictionaries in the ConfigParser
270 module. Courtesy Barry Warsaw.
272 - In the multifile module, support the optional second parameter to
273 seek() when possible.
275 - Several fixes to the gopherlib module by Lars Marius Garshol. Also,
276 urlparse now correctly handles Gopher URLs with query strings.
278 - Fixed a tiny bug in format_exception() in the traceback module.
279 Also rewrite tb_lineno() to be compatible with JPython (and not
280 disturb the current exception!); by Jim Hugunin.
282 - The httplib module is more robust when servers send a short response
283 -- courtesy Tim O'Malley.
288 - Various typos and bugs fixed.
290 - New module Tkdnd implements a drag-and-drop protocol (within one
293 - The event_*() widget methods have been restructured slightly -- they
294 no longer use the default root.
296 - The interfaces for the bind*() and unbind() widget methods have been
297 redesigned; the bind*() methods now return the name of the Tcl command
298 created for the callback, and this can be passed as a optional
299 argument to unbind() in order to delete the command (normally, such
300 commands are automatically unbound when the widget is destroyed, but
301 for some applications this isn't enough).
303 - Variable objects now have trace methods to interface to Tcl's
304 variable tracing facilities.
306 - Image objects now have an optional keyword argument, 'master', to
307 specify a widget (tree) to which they belong. The image_names() and
308 image_types() calls are now also widget methods.
310 - There's a new global call, Tkinter.NoDefaultRoot(), which disables
311 all use of the default root by the Tkinter library. This is useful to
312 debug applications that are in the process of being converted from
313 relying on the default root to explicit specification of the root
316 - The 'exit' command is deleted from the Tcl interpreter, since it
317 provided a loophole by which one could (accidentally) exit the Python
318 interpreter without invoking any cleanup code.
320 - Tcl_Finalize() is now registered as a Python low-level exit handle,
321 so Tcl will be finalized when Python exits.
326 - New function PyThreadState_GetDict() returns a per-thread dictionary
327 intended for storing thread-local global variables.
329 - New functions Py_ReprEnter() and Py_ReprLeave() use the per-thread
330 dictionary to allow recursive container types to detect recursion in
331 their repr(), str() and print implementations.
333 - New function PyObject_Not(x) calculates (not x) according to Python's
334 standard rules (basically, it negates the outcome PyObject_IsTrue(x).
336 - New function _PyModule_Clear(), which clears a module's dictionary
337 carefully without removing the __builtins__ entry. This is implied
338 when a module object is deallocated (this used to clear the dictionary
341 - New function PyImport_ExecCodeModuleEx(), which extends
342 PyImport_ExecCodeModule() by adding an extra parameter to pass it the
345 - New functions Py_GetPythonHome() and Py_SetPythonHome(), intended to
346 allow embedded applications to force a different value for PYTHONHOME.
348 - New global flag Py_FrozenFlag is set when this is a "frozen" Python
349 binary; it suppresses warnings about not being able to find the
350 standard library directories.
352 - New global flag Py_TabcheckFlag is incremented by the -t option and
353 causes the tokenizer to issue warnings or errors about inconsistent
354 mixing of tabs and spaces for indentation.
356 Miscellaneous minor changes and bug fixes
357 -----------------------------------------
359 - Improved the error message when an attribute of an attribute-less
360 object is requested -- include the name of the attribute and the type
361 of the object in the message.
363 - Sped up int(), long(), float() a bit.
365 - Fixed a bug in list.sort() that would occasionally dump core.
367 - Fixed a bug in PyNumber_Power() that caused numeric arrays to fail
368 when taken tothe real power.
370 - Fixed a number of bugs in the file reading code, at least one of
371 which could cause a core dump on NT, and one of which would
372 occasionally cause file.read() to return less than the full contents
375 - Performance hack by Vladimir Marangozov for stack frame creation.
377 - Make sure setvbuf() isn't used unless HAVE_SETVBUF is defined.
382 - The .lib files are now part of the distribution; they are collected
383 in the subdirectory "libs" of the installation directory.
385 - The extension modules (.pyd files) are now collected in a separate
386 subdirectory of the installation directory named "DLLs".
388 - The case of a module's filename must now match the case of the
389 module name as specified in the import statement. This is an
390 experimental feature -- if it turns out to break in too many
391 situations, it will be removed (or disabled by default) in the future.
392 It can be disabled on a per-case basis by setting the environment
393 variable PYTHONCASEOK (to any value).
396 ======================================================================
402 - Newly documentated module: BaseHTTPServer.py, thanks to Greg Stein.
404 - Added doc strings to string.py, stropmodule.c, structmodule.c,
405 thanks to Charles Waldman.
407 - Many nits fixed in the manuals, thanks to Fred Drake and many others
408 (especially Rob Hooft and Andrew Kuchling). The HTML version now uses
409 HTML markup instead of inline GIF images for tables; only two images
410 are left (for obsure bits of math). The index of the HTML version has
411 also been much improved. Finally, it is once again possible to
412 generate an Emacs info file from the library manual (but I don't
413 commit to supporting this in future versions).
415 - New module: telnetlib.py (a simple telnet client library).
417 - New tool: Tools/versioncheck/, by Jack Jansen.
419 - Ported zlibmodule.c and bsddbmodule.c to NT; The project file for MS
420 DevStudio 5.0 now includes new subprojects to build the zlib and bsddb
423 - Many small changes again to Tkinter.py -- mostly bugfixes and adding
424 missing routines. Thanks to Greg McFarlane for reporting a bunch of
425 problems and proofreading my fixes.
427 - The re module and its documentation are up to date with the latest
428 version released to the string-sig (Dec. 22).
430 - Stop test_grp.py from failing when the /etc/group file is empty
431 (yes, this happens!).
433 - Fix bug in integer conversion (mystrtoul.c) that caused
434 4294967296==0 to be true!
436 - The VC++ 4.2 project file should be complete again.
438 - In tempfile.py, use a better template on NT, and add a new optional
439 argument "suffix" with default "" to specify a specific extension for
440 the temporary filename (needed sometimes on NT but perhaps also handy
443 - Fixed some bugs in the FAQ wizard, and converted it to use re
446 - Fixed a mysteriously undetected error in dlmodule.c (it was using a
447 totally bogus routine name to raise an exception).
449 - Fixed bug in import.c which wasn't using the new "dos-8x3" name yet.
451 - Hopefully harmless changes to the build process to support shared
452 libraries on DG/UX. This adds a target to create
453 libpython$(VERSION).so; however this target is *only* for DG/UX.
455 - Fixed a bug in the new format string error checking in getargs.c.
457 - A simple fix for infinite recursion when printing __builtins__:
458 reset '_' to None before printing and set it to the printed variable
459 *after* printing (and only when printing is successful).
461 - Fixed lib-tk/SimpleDialog.py to keep the dialog visible even if the
462 parent window is not (Skip Montanaro).
464 - Fixed the two most annoying problems with ftp URLs in
465 urllib.urlopen(); an empty file now correctly raises an error, and it
466 is no longer required to explicitly close the returned "file" object
467 before opening another ftp URL to the same host and directory.
470 ======================================================================
476 - Fixed a bug in cPickle.c that caused it to crash right away because
477 the version string had a different format.
479 - Changes in pickle.py and cPickle.c: when unpickling an instance of a
480 class that doesn't define the __getinitargs__() method, the __init__()
481 constructor is no longer called. This makes a much larger group of
482 classes picklable by default, but may occasionally change semantics.
483 To force calling __init__() on unpickling, define a __getinitargs__()
484 method. Other changes too, in particular cPickle now handles classes
485 defined in packages correctly. The same change applies to copying
486 instances with copy.py. The cPickle.c changes and some pickle.py
487 changes are courtesy Jim Fulton.
489 - Locale support in he "re" (Perl regular expressions) module. Use
490 the flag re.L (or re.LOCALE) to enable locale-specific matching
491 rules for \w and \b. The in-line syntax for this flag is (?L).
493 - The built-in function isinstance(x, y) now also succeeds when y is
494 a type object and type(x) is y.
496 - repr() and str() of class and instance objects now reflect the
497 package/module in which the class is defined.
499 - Module "ni" has been removed. (If you really need it, it's been
500 renamed to "ni1". Let me know if this causes any problems for you.
501 Package authors are encouraged to write __init__.py files that
502 support both ni and 1.5 package support, so the same version can be
503 used with Python 1.4 as well as 1.5.)
505 - The thread module is now automatically included when threads are
506 configured. (You must remove it from your existing Setup file,
507 since it is now in its own Setup.thread file.)
509 - New command line option "-x" to skip the first line of the script;
510 handy to make executable scripts on non-Unix platforms.
512 - In importdl.c, add the RTLD_GLOBAL to the dlopen() flags. I
513 haven't checked how this affects things, but it should make symbols
514 in one shared library available to the next one.
516 - The Windows installer now installs in the "Program Files" folder on
517 the proper volume by default.
519 - The Windows configuration adds a new main program, "pythonw", and
520 registers a new extension, ".pyw" that invokes this. This is a
521 pstandard Python interpreter that does not pop up a console window;
522 handy for pure Tkinter applications. All output to the original
523 stdout and stderr is lost; reading from the original stdin yields
524 EOF. Also, both python.exe and pythonw.exe now have a pretty icon
525 (a green snake in a box, courtesy Mark Hammond).
527 - Lots of improvements to emacs-mode.el again. See Barry's web page:
528 http://www.python.org/ftp/emacs/pmdetails.html.
530 - Lots of improvements and additions to the library reference manual;
533 - Doc strings for the following modules: rfc822.py, posixpath.py,
534 ntpath.py, httplib.py. Thanks to Mitch Chapman and Charles Waldman.
536 - Some more regression testing.
538 - An optional 4th (maxsplit) argument to strop.replace().
540 - Fixed handling of maxsplit in string.splitfields().
542 - Tweaked os.environ so it can be pickled and copied.
544 - The portability problems caused by indented preprocessor commands
545 and C++ style comments should be gone now.
547 - In random.py, added Pareto and Weibull distributions.
549 - The crypt module is now disabled in Modules/Setup.in by default; it
550 is rarely needed and causes errors on some systems where users often
551 don't know how to deal with those.
553 - Some improvements to the _tkinter build line suggested by Case Roole.
555 - A full suite of platform specific files for NetBSD 1.x, submitted by
558 - New Solaris specific header STROPTS.py.
560 - Moved a confusing occurrence of *shared* from the comments in
561 Modules/Setup.in (people would enable this one instead of the real
562 one, and get disappointing results).
564 - Changed the default mode for directories to be group-writable when
565 the installation process creates them.
567 - Check for pthread support in "-l_r" for FreeBSD/NetBSD, and support
568 shared libraries for both.
570 - Support FreeBSD and NetBSD in posixfile.py.
572 - Support for the "event" command, new in Tk 4.2. By Case Roole.
574 - Add Tix_SafeInit() support to tkappinit.c.
576 - Various bugs fixed in "re.py" and "pcre.c".
578 - Fixed a bug (broken use of the syntax table) in the old "regexpr.c".
580 - In frozenmain.c, stdin is made unbuffered too when PYTHONUNBUFFERED
583 - Provide default blocksize for retrbinary in ftplib.py (Skip
586 - In NT, pick the username up from different places in user.py (Jeff
589 - Patch to urlparse.urljoin() for ".." and "..#1", Marc Lemburg.
591 - Many small improvements to Jeff Rush' OS/2 support.
593 - ospath.py is gone; it's been obsolete for so many years now...
595 - The reference manual is now set up to prepare better HTML (still
596 using webmaker, alas).
598 - Add special handling to /Tools/freeze for Python modules that are
599 imported implicitly by the Python runtime: 'site' and 'exceptions'.
601 - Tools/faqwiz 0.8.3 -- add an option to suppress URL processing
602 inside <PRE>, by "Scott".
604 - Added ConfigParser.py, a generic parser for sectioned configuration
607 - In _localemodule.c, LC_MESSAGES is not always defined; put it
610 - Typo in resource.c: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
612 - Demo/scripts/newslist.py: Fix the way the version number is gotten
613 out of the RCS revision.
615 - PyArg_Parse[Tuple] now explicitly check for bad characters at the
616 end of the format string.
618 - Revamped PC/example_nt to support VC++ 5.x.
620 - <listobject>.sort() now uses a modified quicksort by Raymund Galvin,
621 after studying the GNU libg++ quicksort. This should be much faster
622 if there are lots of duplicates, and otherwise at least as good.
624 - Added "uue" as an alias for "uuencode" to mimetools.py. (Hm, the
625 uudecode bug where it complaints about trailing garbage is still there
628 - pickle.py requires integers in text mode to be in decimal notation
629 (it used to accept octal and hex, even though it would only generate
632 - In string.atof(), don't fail when the "re" module is unavailable.
633 Plug the ensueing security leak by supplying an empty __builtins__
636 - A bunch of small fixes and improvements to Tkinter.py.
638 - Fixed a buffer overrun in PC/getpathp.c.
641 ======================================================================
647 - The Windows NT/95 installer now includes full HTML of all manuals.
648 It also has a checkbox that lets you decide whether to install the
649 interpreter and library. The WISE installer script for the installer
650 is included in the source tree as PC/python15.wse, and so are the
651 icons used for Python files. The config.c file for the Windows build
652 is now complete with the pcre module.
654 - sys.ps1 and sys.ps2 can now arbitrary objects; their str() is
655 evaluated for the prompt.
657 - The reference manual is brought up to date (more or less -- it still
658 needs work, e.g. in the area of package import).
660 - The icons used by latex2html are now included in the Doc
661 subdirectory (mostly so that tarring up the HTML files can be fully
662 automated). A simple index.html is also added to Doc (it only works
663 after you have successfully run latex2html).
665 - For all you would-be proselytizers out there: a new version of
666 Misc/BLURB describes Python more concisely, and Misc/comparisons
667 compares Python to several other languages. Misc/BLURB.WINDOWS
668 contains a blurb specifically aimed at Windows programmers (by Mark
671 - A new version of the Python mode for Emacs is included as
672 Misc/python-mode.el. There are too many new features to list here.
673 See http://www.python.org/ftp/emacs/pmdetails.html for more info.
675 - New module fileinput makes iterating over the lines of a list of
676 files easier. (This still needs some more thinking to make it more
679 - There's full OS/2 support, courtesy Jeff Rush. To build the OS/2
680 version, see PC/readme.txt and PC/os2vacpp. This is for IBM's Visual
681 Age C++ compiler. I expect that Jeff will also provide a binary
682 release for this platform.
684 - On Linux, the configure script now uses '-Xlinker -export-dynamic'
685 instead of '-rdynamic' to link the main program so that it exports its
686 symbols to shared libraries it loads dynamically. I hope this doesn't
687 break on older Linux versions; it is needed for mklinux and appears to
688 work on Linux 2.0.30.
690 - Some Tkinter resstructuring: the geometry methods that apply to a
691 master are now properly usable on toplevel master widgets. There's a
692 new (internal) widget class, BaseWidget. New, longer "official" names
693 for the geometry manager methods have been added,
694 e.g. "grid_columnconfigure()" instead of "columnconfigure()". The old
695 shorter names still work, and where there's ambiguity, pack wins over
696 place wins over grid. Also, the bind_class method now returns its
699 - New, RFC-822 conformant parsing of email addresses and address lists
700 in the rfc822 module, courtesy Ben Escoto.
702 - New, revamped tkappinit.c with support for popular packages (PIL,
703 TIX, BLT, TOGL). For the last three, you need to execute the Tcl
704 command "load {} Tix" (or Blt, or Togl) to gain access to them.
705 The Modules/Setup line for the _tkinter module has been rewritten
706 using the cool line-breaking feature of most Bourne shells.
708 - New socket method connect_ex() returns the error code from connect()
709 instead of raising an exception on errors; this makes the logic
710 required for asynchronous connects simpler and more efficient.
712 - New "locale" module with (still experimental) interface to the
713 standard C library locale interface, courtesy Martin von Loewis. This
714 does not repeat my mistake in 1.5a4 of always calling
715 setlocale(LC_ALL, ""). In fact, we've pretty much decided that
716 Python's standard numerical formatting operations should always use
717 the conventions for the C locale; the locale module contains utility
718 functions to format numbers according to the user specified locale.
719 (All this is accomplished by an explicit call to setlocale(LC_NUMERIC,
720 "C") after locale-changing calls.) See the library manual. (Alas, the
721 promised changes to the "re" module for locale support have not been
722 materialized yet. If you care, volunteer!)
724 - Memory leak plugged in Py_BuildValue when building a dictionary.
726 - Shared modules can now live inside packages (hierarchical module
727 namespaces). No changes to the shared module itself are needed.
729 - Improved policy for __builtins__: this is a module in __main__ and a
730 dictionary everywhere else.
732 - Python no longer catches SIGHUP and SIGTERM by default. This was
733 impossible to get right in the light of thread contexts. If you want
734 your program to clean up when a signal happens, use the signal module
735 to set up your own signal handler.
737 - New Python/C API PyNumber_CoerceEx() does not return an exception
738 when no coercion is possible. This is used to fix a problem where
739 comparing incompatible numbers for equality would raise an exception
740 rather than return false as in Python 1.4 -- it once again will return
743 - The errno module is changed again -- the table of error messages
744 (errorstr) is removed. Instead, you can use os.strerror(). This
745 removes redundance and a potential locale dependency.
747 - New module xmllib, to parse XML files. By Sjoerd Mullender.
749 - New C API PyOS_AfterFork() is called after fork() in posixmodule.c.
750 It resets the signal module's notion of what the current process ID
751 and thread are, so that signal handlers will work after (and across)
754 - Fixed most occurrences of fatal errors due to missing thread state.
756 - For vgrind (a flexible source pretty printer) fans, there's a simple
757 Python definition in Misc/vgrindefs, courtesy Neale Pickett.
759 - Fixed memory leak in exec statement.
761 - The test.pystone module has a new function, pystones(loops=LOOPS),
762 which returns a (benchtime, stones) tuple. The main() function now
763 calls this and prints the report.
765 - Package directories now *require* the presence of an __init__.py (or
766 __init__.pyc) file before they are considered as packages. This is
767 done to prevent accidental subdirectories with common names from
768 overriding modules with the same name.
770 - Fixed some strange exceptions in __del__ methods in library modules
771 (e.g. urllib). This happens because the builtin names are already
772 deleted by the time __del__ is called. The solution (a hack, but it
773 works) is to set some instance variables to 0 instead of None.
775 - The table of built-in module initializers is replaced by a pointer
776 variable. This makes it possible to switch to a different table at
777 run time, e.g. when a collection of modules is loaded from a shared
778 library. (No example code of how to do this is given, but it is
779 possible.) The table is still there of course, its name prefixed with
780 an underscore and used to initialize the pointer.
782 - The warning about a thread still having a frame now only happens in
785 - Change the signal finialization so that it also resets the signal
786 handlers. After this has been called, our signal handlers are no
789 - New version of tokenize.py (by Ka-Ping Yee) recognizes raw string
790 literals. There's now also a test fort this module.
792 - The copy module now also uses __dict__.update(state) instead of
793 going through individual attribute assignments, for class instances
794 without a __setstate__ method.
796 - New module reconvert translates old-style (regex module) regular
797 expressions to new-style (re module, Perl-style) regular expressions.
799 - Most modules that used to use the regex module now use the re
800 module. The grep module has a new pgrep() function which uses
801 Perl-style regular expressions.
803 - The (very old, backwards compatibility) regexp.py module has been
806 - Restricted execution (rexec): added the pcre module (support for the
807 re module) to the list of trusted extension modules.
809 - New version of Jim Fulton's CObject object type, adds
810 PyCObject_FromVoidPtrAndDesc() and PyCObject_GetDesc() APIs.
812 - Some patches to Lee Busby's fpectl mods that accidentally didn't
815 - In the string module, add an optional 4th argument to count(),
818 - Patch for the nntplib module by Charles Waldman to add optional user
819 and password arguments to NNTP.__init__(), for nntp servers that need
822 - The str() function for class objects now returns
823 "modulename.classname" instead of returning the same as repr().
825 - The parsing of \xXX escapes no longer relies on sscanf().
827 - The "sharedmodules" subdirectory of the installation is renamed to
828 "lib-dynload". (You may have to edit your Modules/Setup file to fix
829 this in an existing installation!)
831 - Fixed Don Beaudry's mess-up with the OPT test in the configure
832 script. Certain SGI platforms will still issue a warning for each
833 compile; there's not much I can do about this since the compiler's
834 exit status doesn't indicate that I was using an obsolete option.
836 - Fixed Barry's mess-up with {}.get(), and added test cases for it.
838 - Shared libraries didn't quite work under AIX because of the change
839 in status of the GNU readline interface. Fix due to by Vladimir
843 ======================================================================
849 - faqwiz.py: version 0.8; Recognize https:// as URL; <html>...</html>
850 feature; better install instructions; removed faqmain.py (which was an
853 - nntplib.py: Fixed some bugs reported by Lars Wirzenius (to Debian)
854 about the treatment of lines starting with '.'. Added a minimal test
857 - struct module: ignore most whitespace in format strings.
859 - urllib.py: close the socket and temp file in URLopener.retrieve() so
860 that multiple retrievals using the same connection work.
862 - All standard exceptions are now classes by default; use -X to make
863 them strings (for backward compatibility only).
865 - There's a new standard exception hierarchy, defined in the standard
866 library module exceptions.py (which you never need to import
868 http://grail.cnri.reston.va.us/python/essays/stdexceptions.html for
871 - Three new C API functions:
873 - int PyErr_GivenExceptionMatches(obj1, obj2)
875 Returns 1 if obj1 and obj2 are the same object, or if obj1 is an
876 instance of type obj2, or of a class derived from obj2
878 - int PyErr_ExceptionMatches(obj)
880 Higher level wrapper around PyErr_GivenExceptionMatches() which uses
881 PyErr_Occurred() as obj1. This will be the more commonly called
884 - void PyErr_NormalizeException(typeptr, valptr, tbptr)
886 Normalizes exceptions, and places the normalized values in the
887 arguments. If type is not a class, this does nothing. If type is a
888 class, then it makes sure that value is an instance of the class by:
890 1. if instance is of the type, or a class derived from type, it does
893 2. otherwise it instantiates the class, using the value as an
894 argument. If value is None, it uses an empty arg tuple, and if
895 the value is a tuple, it uses just that.
897 - Another new C API function: PyErr_NewException() creates a new
898 exception class derived from Exception; when -X is given, it creates a
899 new string exception.
901 - core interpreter: remove the distinction between tuple and list
902 unpacking; allow an arbitrary sequence on the right hand side of any
903 unpack instruction. (UNPACK_LIST and UNPACK_TUPLE now do the same
904 thing, which should really be called UNPACK_SEQUENCE.)
906 - classes: Allow assignments to an instance's __dict__ or __class__,
907 so you can change ivars (including shared ivars -- shock horror) and
908 change classes dynamically. Also make the check on read-only
909 attributes of classes less draconic -- only the specials names
910 __dict__, __bases__, __name__ and __{get,set,del}attr__ can't be
913 - Two new built-in functions: issubclass() and isinstance(). Both
914 take classes as their second arguments. The former takes a class as
915 the first argument and returns true iff first is second, or is a
916 subclass of second. The latter takes any object as the first argument
917 and returns true iff first is an instance of the second, or any
920 - configure: Added configuration tests for presence of alarm(),
921 pause(), and getpwent().
923 - Doc/Makefile: changed latex2html targets.
925 - classes: Reverse the search order for the Don Beaudry hook so that
926 the first class with an applicable hook wins. Makes more sense.
928 - Changed the checks made in Py_Initialize() and Py_Finalize(). It is
929 now legal to call these more than once. The first call to
930 Py_Initialize() initializes, the first call to Py_Finalize()
931 finalizes. There's also a new API, Py_IsInitalized() which checks
932 whether we are already initialized (in case you want to leave things
935 - Completely disable the declarations for malloc(), realloc() and
936 free(). Any 90's C compiler has these in header files, and the tests
937 to decide whether to suppress the declarations kept failing on some
940 - *Before* (instead of after) signalmodule.o is added, remove both
941 intrcheck.o and sigcheck.o. This should get rid of warnings in ar or
942 ld on various systems.
944 - Added reop to PC/config.c
946 - configure: Decided to use -Aa -D_HPUX_SOURCE on HP-UX platforms.
947 Removed outdated HP-UX comments from README. Added Cray T3E comments.
949 - Various renames of statically defined functions that had name
950 conflicts on some systems, e.g. strndup (GNU libc), join (Cray),
951 roundup (sys/types.h).
953 - urllib.py: Interpret three slashes in file: URL as local file (for
954 Netscape on Windows/Mac).
956 - copy.py: Make sure the objects returned by __getinitargs__() are
957 kept alive (in the memo) to avoid a certain kind of nasty crash. (Not
958 easily reproducable because it requires a later call to
959 __getinitargs__() to return a tuple that happens to be allocated at
962 - Added definition of AR to toplevel Makefile. Renamed @buildno temp
965 - Moved Include/assert.h to Parser/assert.h, which seems to be the
966 only place where it's needed.
968 - Tweaked the dictionary lookup code again for some more speed
969 (Vladimir Marangozov).
971 - NT build: Changed the way python15.lib is included in the other
972 projects. Per Mark Hammond's suggestion, add it to the extra libs in
973 Settings instead of to the project's source files.
975 - regrtest.py: Change default verbosity so that there are only three
976 levels left: -q, default and -v. In default mode, the name of each
977 test is now printed. -v is the same as the old -vv. -q is more quiet
978 than the old default mode.
980 - Removed the old FAQ from the distribution. You now have to get it
983 - Removed the PC/make_nt.in file from the distribution; it is no
986 - Changed the build sequence so that shared modules are built last.
987 This fixes things for AIX and doesn't hurt elsewhere.
989 - Improved test for GNU MP v1 in mpzmodule.c
991 - fileobject.c: ftell() on Linux discards all buffered data; changed
992 read() code to use lseek() instead to get the same effect
994 - configure.in, configure, importdl.c: NeXT sharedlib fixes
996 - tupleobject.c: PyTuple_SetItem asserts refcnt==1
998 - resource.c: Different strategy regarding whether to declare
999 getrusage() and getpagesize() -- #ifdef doesn't work, Linux has
1000 conflicting decls in its headers. Choice: only declare the return
1001 type, not the argument prototype, and not on Linux.
1003 - importdl.c, configure*: set sharedlib extensions properly for NeXT
1005 - configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries
1006 fixed; moved addition of PURIFY to LINKCC to configure
1008 - reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts
1009 added to shup up various compilers.
1011 - _tkinter.c: removed buggy mac #ifndef
1013 - Doc: various Mac documentation changes, added docs for 'ic' module
1015 - PC/make_nt.in: deleted
1017 - test_time.py, test_strftime.py: tweaks to catch %Z (which may return
1020 - test_rotor.py: print b -> print `b`
1022 - Tkinter.py: (tagOrId) -> (tagOrId,)
1024 - Tkinter.py: the Tk class now also has a configure() method and
1025 friends (they have been moved to the Misc class to accomplish this).
1027 - dict.get(key[, default]) returns dict[key] if it exists, or default
1028 if it doesn't. The default defaults to None. This is quicker for
1029 some applications than using either has_key() or try:...except
1032 - Tools/webchecker/: some small changes to webchecker.py; added
1033 websucker.py (a simple web site mirroring script).
1035 - Dictionary objects now have a get() method (also in UserDict.py).
1036 dict.get(key, default) returns dict[key] if it exists and default
1037 otherwise; default defaults to None.
1039 - Tools/scripts/logmerge.py: print the author, too.
1041 - Changes to import: support for "import a.b.c" is now built in. See
1042 http://grail.cnri.reston.va.us/python/essays/packages.html
1043 for more info. Most important deviations from "ni.py": __init__.py is
1044 executed in the package's namespace instead of as a submodule; and
1045 there's no support for "__" or "__domain__". Note that "ni.py" is not
1046 changed to match this -- it is simply declared obsolete (while at the
1047 same time, it is documented...:-( ).
1048 Unfortunately, "ihooks.py" has not been upgraded (but see "knee.py"
1049 for an example implementation of hierarchical module import written in
1052 - More changes to import: the site.py module is now imported by
1053 default when Python is initialized; use -S to disable it. The site.py
1054 module extends the path with several more directories: site-packages
1055 inside the lib/python1.5/ directory, site-python in the lib/
1056 directory, and pathnames mentioned in *.pth files found in either of
1057 those directories. See
1058 http://grail.cnri.reston.va.us/python/essays/packages.html
1061 - Changes to standard library subdirectory names: those subdirectories
1062 that are not packages have been renamed with a hypen in their name,
1063 e.g. lib-tk, lib-stdwin, plat-win, plat-linux2, plat-sunos5, dos-8x3.
1064 The test suite is now a package -- to run a test, you must now use
1065 "import test.test_foo".
1067 - A completely new re.py module is provided (thanks to Andrew
1068 Kuchling, Tim Peters and Jeffrey Ollie) which uses Philip Hazel's
1069 "pcre" re compiler and engine. For a while, the "old" re.py (which
1070 was new in 1.5a3!) will be kept around as re1.py. The "old" regex
1071 module and underlying parser and engine are still present -- while
1072 regex is now officially obsolete, it will probably take several major
1073 release cycles before it can be removed.
1075 - The posix module now has a strerror() function which translates an
1076 error code to a string.
1078 - The emacs.py module (which was long obsolete) has been removed.
1080 - The universal makefile Misc/Makefile.pre.in now features an
1081 "install" target. By default, installed shared libraries go into
1082 $exec_prefix/lib/python$VERSION/site-packages/.
1084 - The install-sh script is installed with the other configuration
1085 specific files (in the config/ subdirectory).
1087 - It turns out whatsound.py and sndhdr.py were identical modules.
1088 Since there's also an imghdr.py file, I propose to make sndhdr.py the
1089 official one. For compatibility, whatsound.py imports * from
1092 - Class objects have a new attribute, __module__, giving the name of
1093 the module in which they were declared. This is useful for pickle and
1094 for printing the full name of a class exception.
1096 - Many extension modules no longer issue a fatal error when their
1097 initialization fails; the importing code now checks whether an error
1098 occurred during module initialization, and correctly propagates the
1099 exception to the import statement.
1101 - Most extension modules now raise class-based exceptions (except when
1104 - Subtle changes to PyEval_{Save,Restore}Thread(): always swap the
1105 thread state -- just don't manipulate the lock if it isn't there.
1107 - Fixed a bug in Python/getopt.c that made it do the wrong thing when
1108 an option was a single '-'. Thanks to Andrew Kuchling.
1110 - New module mimetypes.py will guess a MIME type from a filename's
1113 - Windows: the DLL version is now settable via a resource rather than
1114 being hardcoded. This can be used for "branding" a binary Python
1117 - urllib.py is now threadsafe -- it now uses re instead of regex, and
1118 sys.exc_info() instead of sys.exc_{type,value}.
1120 - Many other library modules that used to use
1121 sys.exc_{type,value,traceback} are now more thread-safe by virtue of
1122 using sys.exc_info().
1124 - The functions in popen2 have an optional buffer size parameter.
1125 Also, the command argument can now be either a string (passed to the
1126 shell) or a list of arguments (passed directly to execv).
1128 - Alas, the thread support for _tkinter released with 1.5a3 didn't
1129 work. It's been rewritten. The bad news is that it now requires a
1130 modified version of a file in the standard Tcl distribution, which you
1131 must compile with a -I option pointing to the standard Tcl source
1132 tree. For this reason, the thread support is disabled by default.
1134 - The errno extension module adds two tables: errorcode maps errno
1135 numbers to errno names (e.g. EINTR), and errorstr maps them to
1136 message strings. (The latter is redundant because the new call
1137 posix.strerror() now does the same, but alla...) (Marc-Andre Lemburg)
1139 - The readline extension module now provides some interfaces to
1140 internal readline routines that make it possible to write a completer
1141 in Python. An example completer, rlcompleter.py, is provided.
1143 When completing a simple identifier, it completes keywords,
1144 built-ins and globals in __main__; when completing
1145 NAME.NAME..., it evaluates (!) the expression up to the last
1146 dot and completes its attributes.
1148 It's very cool to do "import string" type "string.", hit the
1149 completion key (twice), and see the list of names defined by
1152 Tip: to use the tab key as the completion key, call
1154 readline.parse_and_bind("tab: complete")
1156 - The traceback.py module has a new function tb_lineno() by Marc-Andre
1157 Lemburg which extracts the line number from the linenumber table in
1158 the code object. Apparently the traceback object doesn't contains the
1159 right linenumber when -O is used. Rather than guessing whether -O is
1160 on or off, the module itself uses tb_lineno() unconditionally.
1162 - Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind()
1163 to tag_bind() so it works again.
1165 - The pystone script is now a standard library module. Example use:
1166 "import test.pystone; test.pystone.main()".
1168 - The import of the readline module in interactive mode is now also
1169 attempted when -i is specified. (Yes, I know, giving in to Marc-Andre
1170 Lemburg, who asked for this. :-)
1172 - rfc822.py: Entirely rewritten parseaddr() function by Sjoerd
1173 Mullender, to be closer to the standard. This fixes the getaddr()
1174 method. Unfortunately, getaddrlist() is as broken as ever, since it
1175 splits on commas without regard for RFC 822 quoting conventions.
1177 - pprint.py: correctly emit trailing "," in singleton tuples.
1179 - _tkinter.c: export names for its type objects, TkappType and
1182 - pickle.py: use __module__ when defined; fix a particularly hard to
1183 reproduce bug that confuses the memo when temporary objects are
1184 returned by custom pickling interfaces; and a semantic change: when
1185 unpickling the instance variables of an instance, use
1186 inst.__dict__.update(value) instead of a for loop with setattr() over
1187 the value.keys(). This is more consistent (the pickling doesn't use
1188 getattr() either but pickles inst.__dict__) and avoids problems with
1189 instances that have a __setattr__ hook. But it *is* a semantic change
1190 (because the setattr hook is no longer used). So beware!
1192 - config.h is now installed (at last) in
1193 $exec_prefix/include/python1.5/. For most sites, this means that it
1194 is actually in $prefix/include/python1.5/, with all the other Python
1195 include files, since $prefix and $exec_prefix are the same by
1198 - The imp module now supports parts of the functionality to implement
1199 import of hierarchical module names. It now supports find_module()
1200 and load_module() for all types of modules. Docstrings have been
1201 added for those functions in the built-in imp module that are still
1202 relevant (some old interfaces are obsolete). For a sample
1203 implementation of hierarchical module import in Python, see the new
1204 library module knee.py.
1206 - The % operator on string objects now allows arbitrary nested parens
1207 in a %(...)X style format. (Brad Howes)
1209 - Reverse the order in which Setup and Setup.local are passed to the
1210 makesetup script. This allows variable definitions in Setup.local to
1211 override definitions in Setup. (But you'll still have to edit Setup
1212 if you want to disable modules that are enabled by default, or if such
1213 modules need non-standard options.)
1215 - Added PyImport_ImportModuleEx(name, globals, locals, fromlist); this
1216 is like PyImport_ImporModule(name) but receives the globals and locals
1217 dict and the fromlist arguments as well. (The name is a char*; the
1218 others are PyObject*s).
1220 - The 'p' format in the struct extension module alloded to above is
1223 - The types.py module now uses try-except in a few places to make it
1224 more likely that it can be imported in restricted mode. Some type
1225 names are undefined in that case, e.g. CodeType (inaccessible),
1226 FileType (not always accessible), and TracebackType and FrameType
1229 - In urllib.py: added separate administration of temporary files
1230 created y URLopener.retrieve() so cleanup() can properly remove them.
1231 The old code removed everything in tempcache which was a bad idea if
1232 the user had passed a non-temp file into it. Also, in basejoin(),
1233 interpret relative paths starting in "../". This is necessary if the
1234 server uses symbolic links.
1236 - The Windows build procedure and project files are now based on
1237 Microsoft Visual C++ 5.x. The build now takes place in the PCbuild
1238 directory. It is much more robust, and properly builds separate Debug
1239 and Release versions. (The installer will be added shortly.)
1241 - Added casts and changed some return types in regexpr.c to avoid
1242 compiler warnings or errors on some platforms.
1244 - The AIX build tools for shared libraries now supports VPATH. (Donn
1247 - By default, disable the "portable" multimedia modules audioop,
1248 imageop, and rgbimg, since they don't work on 64-bit platforms.
1250 - Fixed a nasty bug in cStringIO.c when code was actually using the
1251 close() method (the destructors would try to free certain fields a
1254 - For those who think they need it, there's a "user.py" module. This
1255 is *not* imported by default, but can be imported to run user-specific
1256 setup commands, ~/.pythonrc.py.
1258 - Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg,
1259 Vladimir Marangozov, and others.
1261 - Added os.altsep; this is '/' on DOS/Windows, and None on systems
1262 with a sane filename syntax.
1264 - os.py: Write out the dynamic OS choice, to avoid exec statements.
1265 Adding support for a new OS is now a bit more work, but I bet that
1266 'dos' or 'nt' will cover most situations...
1268 - The obsolete exception AccessError is now really gone.
1270 - Tools/faqwiz/: New installation instructions show how to maintain
1271 multiple FAQs. Removed bootstrap script from end of faqwiz.py module.
1272 Added instructions to bootstrap script, too. Version bumped to 0.8.1.
1273 Added <html>...</html> feature suggested by Skip Montanaro. Added
1274 leading text for Roulette, default to 'Hit Reload ...'. Fix typo in
1277 - Documentation for the relatively new modules "keyword" and "symbol"
1278 has been added (to the end of the section on the parser extension
1281 - In module bisect.py, but functions have two optional argument 'lo'
1282 and 'hi' which allow you to specify a subsequence of the array to
1285 - In ftplib.py, changed most methods to return their status (even when
1286 it is always "200 OK") rather than swallowing it.
1288 - main() now calls setlocale(LC_ALL, ""), if setlocale() and
1289 <locale.h> are defined.
1291 - Changes to configure.in, the configure script, and both
1292 Makefile.pre.in files, to support SGI's SGI_ABI platform selection
1293 environment variable.
1296 ======================================================================
1305 - If you are using the setuid script C wrapper (Misc/setuid-prog.c),
1306 please use the new version. The old version has a huge security leak.
1311 - Because of various (small) incompatible changes in the Python
1312 bytecode interpreter, the magic number for .pyc files has changed
1315 - The default module search path is now much saner. Both on Unix and
1316 Windows, it is essentially derived from the path to the executable
1317 (which can be overridden by setting the environment variable
1318 $PYTHONHOME). The value of $PYTHONPATH on Windows is now inserted in
1319 front of the default path, like in Unix (instead of overriding the
1320 default path). On Windows, the directory containing the executable is
1321 added to the end of the path.
1323 - A new version of python-mode.el for Emacs has been included. Also,
1324 a new file ccpy-style.el has been added to configure Emacs cc-mode for
1325 the preferred style in Python C sources.
1327 - On Unix, when using sys.argv[0] to insert the script directory in
1328 front of sys.path, expand a symbolic link. You can now install a
1329 program in a private directory and have a symbolic link to it in a
1330 public bin directory, and it will put the private directory in the
1331 module search path. Note that the symlink is expanded in sys.path[0]
1332 but not in sys.argv[0], so you can still tell the name by which you
1335 - It is now recommended to use ``#!/usr/bin/env python'' instead of
1336 ``#!/usr/local/bin/python'' at the start of executable scripts, except
1337 for CGI scripts. It has been determined that the use of /usr/bin/env
1338 is more portable than that of /usr/local/bin/python -- scripts almost
1339 never have to be edited when the Python interpreter lives in a
1340 non-standard place. Note that this doesn't work for CGI scripts since
1341 the python executable often doesn't live in the HTTP server's default
1344 - The silly -s command line option and the corresponding
1345 PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global
1346 flag in the Python/C API) are gone.
1348 - Most problems on 64-bit platforms should now be fixed. Andrew
1349 Kuchling helped. Some uncommon extension modules are still not
1350 clean (image and audio ops?).
1352 - Fixed a bug where multiple anonymous tuple arguments would be mixed up
1353 when using the debugger or profiler (reported by Just van Rossum).
1354 The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this
1355 would print the wrong value when run under the debugger or profiler.
1357 - The hacks that the dictionary implementation used to speed up
1358 repeated lookups of the same C string were removed; these were a
1359 source of subtle problems and don't seem to serve much of a purpose
1362 - All traces of support for the long dead access statement have been
1363 removed from the sources.
1365 - Plugged the two-byte memory leak in the tokenizer when reading an
1368 - There's a -O option to the interpreter that removes SET_LINENO
1369 instructions and assert statements (see below); it uses and produces
1370 .pyo files instead of .pyc files. The speedup is only a few percent
1371 in most cases. The line numbers are still available in the .pyo file,
1372 as a separate table (which is also available in .pyc files). However,
1373 the removal of the SET_LINENO instructions means that the debugger
1374 (pdb) can't set breakpoints on lines in -O mode. The traceback module
1375 contains a function to extract a line number from the code object
1376 referenced in a traceback object. In the future it should be possible
1377 to write external bytecode optimizers that create better optimized
1378 .pyo files, and there should be more control over optimization;
1379 consider the -O option a "teaser". Without -O, the assert statement
1380 actually generates code that first checks __debug__; if this variable
1381 is false, the assertion is not checked. __debug__ is a built-in
1382 variable whose value is initialized to track the -O flag (it's true
1383 iff -O is not specified). With -O, no code is generated for assert
1384 statements, nor for code of the form ``if __debug__: <something>''.
1385 Sorry, no further constant folding happens.
1391 - It's much faster (almost twice for pystone.py -- see
1392 Tools/scripts). See the entry on string interning below.
1394 - Some speedup by using separate free lists for method objects (both
1395 the C and the Python variety) and for floating point numbers.
1397 - Big speedup by allocating frame objects with a single malloc() call.
1398 The Python/C API for frames is changed (you shouldn't be using this
1401 - Significant speedup by inlining some common opcodes for common operand
1402 types (e.g. i+i, i-i, and list[i]). Fredrik Lundh.
1404 - Small speedup by reordering the method tables of some common
1405 objects (e.g. list.append is now first).
1407 - Big optimization to the read() method of file objects. A read()
1408 without arguments now attempts to use fstat to allocate a buffer of
1409 the right size; for pipes and sockets, it will fall back to doubling
1410 the buffer size. While that the improvement is real on all systems,
1411 it is most dramatic on Windows.
1417 - Many new pieces of library documentation were contributed, mostly by
1418 Andrew Kuchling. Even cmath is now documented! There's also a
1419 chapter of the library manual, "libundoc.tex", which provides a
1420 listing of all undocumented modules, plus their status (e.g. internal,
1421 obsolete, or in need of documentation). Also contributions by Sue
1422 Williams, Skip Montanaro, and some module authors who succumbed to
1423 pressure to document their own contributed modules :-). Note that
1424 printing the documentation now kills fewer trees -- the margins have
1427 - I have started documenting the Python/C API. Unfortunately this project
1428 hasn't been completed yet. It will be complete before the final release of
1429 Python 1.5, though. At the moment, it's better to read the LaTeX source
1430 than to attempt to run it through LaTeX and print the resulting dvi file.
1432 - The posix module (and hence os.py) now has doc strings! Thanks to Neil
1433 Schemenauer. I received a few other contributions of doc strings. In most
1434 other places, doc strings are still wishful thinking...
1440 - Private variables with leading double underscore are now a permanent
1441 feature of the language. (These were experimental in release 1.4. I have
1442 favorable experience using them; I can't label them "experimental"
1445 - There's new string literal syntax for "raw strings". Prefixing a string
1446 literal with the letter r (or R) disables all escape processing in the
1447 string; for example, r'\n' is a two-character string consisting of a
1448 backslash followed by the letter n. This combines with all forms of string
1449 quotes; it is actually useful for triple quoted doc strings which might
1450 contain references to \n or \t. An embedded quote prefixed with a
1451 backslash does not terminate the string, but the backslash is still
1452 included in the string; for example, r'\'' is a two-character string
1453 consisting of a backslash and a quote. (Raw strings are also
1454 affectionately known as Robin strings, after their inventor, Robin
1457 - There's a simple assert statement, and a new exception
1458 AssertionError. For example, ``assert foo > 0'' is equivalent to ``if
1459 not foo > 0: raise AssertionError''. Sorry, the text of the asserted
1460 condition is not available; it would be too complicated to generate
1461 code for this (since the code is generated from a parse tree).
1462 However, the text is displayed as part of the traceback!
1464 - The raise statement has a new feature: when using "raise SomeClass,
1465 somevalue" where somevalue is not an instance of SomeClass, it
1466 instantiates SomeClass(somevalue). In 1.5a4, if somevalue is an
1467 instance of a *derived* class of SomeClass, the exception class raised
1468 is set to somevalue.__class__, and SomeClass is ignored after that.
1470 - Duplicate keyword arguments are now detected at compile time;
1471 f(a=1,a=2) is now a syntax error.
1474 Changes to builtin features
1475 ---------------------------
1477 - There's a new exception FloatingPointError (used only by Lee Busby's
1478 patches to catch floating point exceptions, at the moment).
1480 - The obsolete exception ConflictError (presumably used by the long
1481 obsolete access statement) has been deleted.
1483 - There's a new function sys.exc_info() which returns the tuple
1484 (sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way.
1486 - There's a new variable sys.executable, pointing to the executable file
1487 for the Python interpreter.
1489 - The sort() methods for lists no longer uses the C library qsort(); I
1490 wrote my own quicksort implementation, with lots of help (in the form
1491 of a kind of competition) from Tim Peters. This solves a bug in
1492 dictionary comparisons on some Solaris versions when Python is built
1493 with threads, and makes sorting lists even faster.
1495 - The semantics of comparing two dictionaries have changed, to make
1496 comparison of unequal dictionaries faster. A shorter dictionary is
1497 always considered smaller than a larger dictionary. For dictionaries
1498 of the same size, the smallest differing element determines the
1499 outcome (which yields the same results as before in this case, without
1500 explicit sorting). Thanks to Aaron Watters for suggesting something
1503 - The semantics of try-except have changed subtly so that calling a
1504 function in an exception handler that itself raises and catches an
1505 exception no longer overwrites the sys.exc_* variables. This also
1506 alleviates the problem that objects referenced in a stack frame that
1507 caught an exception are kept alive until another exception is caught
1508 -- the sys.exc_* variables are restored to their previous value when
1509 returning from a function that caught an exception.
1511 - There's a new "buffer" interface. Certain objects (e.g. strings and
1512 arrays) now support the "buffer" protocol. Buffer objects are acceptable
1513 whenever formerly a string was required for a write operation; mutable
1514 buffer objects can be the target of a read operation using the call
1515 f.readinto(buffer). A cool feature is that regular expression matching now
1516 also work on array objects. Contribution by Jack Jansen. (Needs
1519 - String interning: dictionary lookups are faster when the lookup
1520 string object is the same object as the key in the dictionary, not
1521 just a string with the same value. This is done by having a pool of
1522 "interned" strings. Most names generated by the interpreter are now
1523 automatically interned, and there's a new built-in function intern(s)
1524 that returns the interned version of a string. Interned strings are
1525 not a different object type, and interning is totally optional, but by
1526 interning most keys a speedup of about 15% was obtained for the
1529 - Dictionary objects have several new methods; clear() and copy() have
1530 the obvious semantics, while update(d) merges the contents of another
1531 dictionary d into this one, overriding existing keys. The dictionary
1532 implementation file is now called dictobject.c rather than the
1533 confusing mappingobject.c.
1535 - The intrinsic function dir() is much smarter; it looks in __dict__,
1536 __members__ and __methods__.
1538 - The intrinsic functions int(), long() and float() can now take a
1539 string argument and then do the same thing as string.atoi(),
1540 string.atol(), and string.atof(). No second 'base' argument is
1541 allowed, and complex() does not take a string (nobody cared enough).
1543 - When a module is deleted, its globals are now deleted in two phases.
1544 In the first phase, all variables whose name begins with exactly one
1545 underscore are replaced by None; in the second phase, all variables
1546 are deleted. This makes it possible to have global objects whose
1547 destructors depend on other globals. The deletion order within each
1548 phase is still random.
1550 - It is no longer an error for a function to be called without a
1551 global variable __builtins__ -- an empty directory will be provided
1554 - Guido's corollary to the "Don Beaudry hook": it is now possible to
1555 do metaprogramming by using an instance as a base class. Not for the
1556 faint of heart; and undocumented as yet, but basically if a base class
1557 is an instance, its class will be instantiated to create the new
1558 class. Jim Fulton will love it -- it also works with instances of his
1559 "extension classes", since it is triggered by the presence of a
1560 __class__ attribute on the purported base class. See
1561 Demo/metaclasses/index.html for an explanation and see that directory
1564 - Another change is that the Don Beaudry hook is now invoked when
1565 *any* base class is special. (Up to 1.5a3, the *last* special base
1566 class is used; in 1.5a4, the more rational choice of the *first*
1567 special base class is used.)
1569 - New optional parameter to the readlines() method of file objects.
1570 This indicates the number of bytes to read (the actual number of bytes
1571 read will be somewhat larger due to buffering reading until the end of
1572 the line). Some optimizations have also been made to speed it up (but
1573 not as much as read()).
1575 - Complex numbers no longer have the ".conj" pseudo attribute; use
1576 z.conjugate() instead, or complex(z.real, -z.imag). Complex numbers
1577 now *do* support the __members__ and __methods__ special attributes.
1579 - The complex() function now looks for a __complex__() method on class
1580 instances before giving up.
1582 - Long integers now support arbitrary shift counts, so you can now
1583 write 1L<<1000000, memory permitting. (Python 1.4 reports "outrageous
1584 shift count for this.)
1586 - The hex() and oct() functions have been changed so that for regular
1587 integers, they never emit a minus sign. For example, on a 32-bit
1588 machine, oct(-1) now returns '037777777777' and hex(-1) returns
1589 '0xffffffff'. While this may seem inconsistent, it is much more
1590 useful. (For long integers, a minus sign is used as before, to fit
1591 the result in memory :-)
1593 - The hash() function computes better hashes for several data types,
1594 including strings, floating point numbers, and complex numbers.
1597 New extension modules
1598 ---------------------
1600 - New extension modules cStringIO.c and cPickle.c, written by Jim
1601 Fulton and other folks at Digital Creations. These are much more
1602 efficient than their Python counterparts StringIO.py and pickle.py,
1603 but don't support subclassing. cPickle.c clocks up to 1000 times
1604 faster than pickle.py; cStringIO.c's improvement is less dramatic but
1607 - New extension module zlibmodule.c, interfacing to the free zlib
1608 library (gzip compatible compression). There's also a module gzip.py
1609 which provides a higher level interface. Written by Andrew Kuchling
1612 - New module readline; see the "miscellaneous" section above.
1614 - New Unix extension module resource.c, by Jeremy Hylton, provides
1615 access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
1616 related symbolic constants.
1618 - New extension puremodule.c, by Barry Warsaw, which interfaces to the
1619 Purify(TM) C API. See also the file Misc/PURIFY.README. It is also
1620 possible to enable Purify by simply setting the PURIFY Makefile
1621 variable in the Modules/Setup file.
1624 Changes in extension modules
1625 ----------------------------
1627 - The struct extension module has several new features to control byte
1628 order and word size. It supports reading and writing IEEE floats even
1629 on platforms where this is not the native format. It uses uppercase
1630 format codes for unsigned integers of various sizes (always using
1631 Python long ints for 'I' and 'L'), 's' with a size prefix for strings,
1632 and 'p' for "Pascal strings" (with a leading length byte, included in
1633 the size; blame Hannu Krosing; new in 1.5a4). A prefix '>' forces
1634 big-endian data and '<' forces little-endian data; these also select
1635 standard data sizes and disable automatic alignment (use pad bytes as
1638 - The array module supports uppercase format codes for unsigned data
1639 formats (like the struct module).
1641 - The fcntl extension module now exports the needed symbolic
1642 constants. (Formerly these were in FCNTL.py which was not available
1643 or correct for all platforms.)
1645 - The extension modules dbm, gdbm and bsddb now check that the
1646 database is still open before making any new calls.
1648 - The dbhash module is no more. Use bsddb instead. (There's a third
1649 party interface for the BSD 2.x code somewhere on the web; support for
1650 bsddb will be deprecated.)
1652 - The gdbm module now supports a sync() method.
1654 - The socket module now has some new functions: getprotobyname(), and
1655 the set {ntoh,hton}{s,l}().
1657 - Various modules now export their type object: socket.SocketType,
1660 - The socket module's accept() method now returns unknown addresses as
1661 a tuple rather than raising an exception. (This can happen in
1662 promiscuous mode.) Theres' also a new function getprotobyname().
1664 - The pthread support for the thread module now works on most platforms.
1666 - STDWIN is now officially obsolete. Support for it will eventually
1667 be removed from the distribution.
1669 - The binascii extension module is now hopefully fully debugged.
1670 (XXX Oops -- Fredrik Lundh promised me a uuencode fix that I never
1673 - audioop.c: added a ratecv() function; better handling of overflow in
1676 - posixmodule.c: now exports the O_* flags (O_APPEND etc.). On
1677 Windows, also O_TEXT and O_BINARY. The 'error' variable (the
1678 exception is raises) is renamed -- its string value is now "os.error",
1679 so newbies don't believe they have to import posix (or nt) to catch
1680 it when they see os.error reported as posix.error. The execve()
1681 function now accepts any mapping object for the environment.
1683 - A new version of the al (audio library) module for SGI was
1684 contributed by Sjoerd Mullender.
1686 - The regex module has a new function get_syntax() which retrieves the
1687 syntax setting set by set_syntax(). The code was also sanitized,
1688 removing worries about unclean error handling. See also below for its
1691 - The "new" module (which creates new objects of various types) once
1692 again has a fully functioning new.function() method. Dangerous as
1693 ever! Also, new.code() has several new arguments.
1695 - A problem has been fixed in the rotor module: on systems with signed
1696 characters, rotor-encoded data was not portable when the key contained
1697 8-bit characters. Also, setkey() now requires its argument rather
1698 than having broken code to default it.
1700 - The sys.builtin_module_names variable is now a tuple. Another new
1701 variables in sys is sys.executable (the full path to the Python
1704 - The specs for time.strftime() have undergone some revisions. It
1705 appears that not all format characters are supported in the same way
1706 on all platforms. Rather than reimplement it, we note these
1707 differences in the documentation, and emphasize the shared set of
1708 features. There's also a thorough test set (that occasionally finds
1709 problems in the C library implementation, e.g. on some Linuxes),
1710 thanks to Skip Montanaro.
1712 - The nis module seems broken when used with NIS+; unfortunately
1713 nobody knows how to fix it. It should still work with old NIS.
1719 - New (still experimental) Perl-style regular expression module,
1720 re.py, which uses a new interface for matching as well as a new
1721 syntax; the new interface avoids the thread-unsafety of the regex
1722 interface. This comes with a helper extension reopmodule.c and vastly
1723 rewritten regexpr.c. Most work on this was done by Jeffrey Ollie, Tim
1724 Peters, and Andrew Kuchling. See the documentation libre.tex. In
1725 1.5, the old regex module is still fully supported; in the future, it
1726 will become obsolete.
1728 - New module gzip.py; see zlib above.
1730 - New module keyword.py exports knowledge about Python's built-in
1731 keywords. (New version by Ka-Ping Yee.)
1733 - New module pprint.py (with documentation) which supports
1734 pretty-printing of lists, tuples, & dictionaries recursively. By Fred
1737 - New module code.py. The function code.compile_command() can
1738 determine whether an interactively entered command is complete or not,
1739 distinguishing incomplete from invalid input. (XXX Unfortunately,
1740 this seems broken at this moment, and I don't have the time to fix
1741 it. It's probably better to add an explicit interface to the parser
1744 - There is now a library module xdrlib.py which can read and write the
1745 XDR data format as used by Sun RPC, for example. It uses the struct
1749 Changes in library modules
1750 --------------------------
1752 - Module codehack.py is now completely obsolete.
1754 - The pickle.py module has been updated to make it compatible with the
1755 new binary format that cPickle.c produces. By default it produces the
1756 old all-ASCII format compatible with the old pickle.py, still much
1757 faster than pickle.py; it will read both formats automatically. A few
1758 other updates have been made.
1760 - A new helper module, copy_reg.py, is provided to register extensions
1761 to the pickling code.
1763 - Revamped module tokenize.py is much more accurate and has an
1764 interface that makes it a breeze to write code to colorize Python
1765 source code. Contributed by Ka-Ping Yee.
1767 - In ihooks.py, ModuleLoader.load_module() now closes the file under
1770 - The tempfile.py module has a new class, TemporaryFile, which creates
1771 an open temporary file that will be deleted automatically when
1772 closed. This works on Windows and MacOS as well as on Unix. (Jim
1775 - Changes to the cgi.py module: Most imports are now done at the
1776 top of the module, which provides a speedup when using ni (Jim
1777 Fulton). The problem with file upload to a Windows platform is solved
1778 by using the new tempfile.TemporaryFile class; temporary files are now
1779 always opened in binary mode (Jim Fulton). The cgi.escape() function
1780 now takes an optional flag argument that quotes '"' to '"'. It
1781 is now possible to invoke cgi.py from a command line script, to test
1782 cgi scripts more easily outside an http server. There's an optional
1783 limit to the size of uploads to POST (Skip Montanaro). Added a
1784 'strict_parsing' option to all parsing functions (Jim Fulton). The
1785 function parse_qs() now uses urllib.unquote() on the name as well as
1786 the value of fields (Clarence Gardner). The FieldStorage class now
1787 has a __len__() method.
1789 - httplib.py: the socket object is no longer closed; all HTTP/1.*
1790 responses are now accepted; and it is now thread-safe (by not using
1793 - BaseHTTPModule.py: treat all HTTP/1.* versions the same.
1795 - The popen2.py module is now rewritten using a class, which makes
1796 access to the standard error stream and the process id of the
1797 subprocess possible.
1799 - Added timezone support to the rfc822.py module, in the form of a
1800 getdate_tz() method and a parsedate_tz() function; also a mktime_tz().
1801 Also added recognition of some non-standard date formats, by Lars
1802 Wirzenius, and RFC 850 dates (Chris Lawrence).
1804 - mhlib.py: various enhancements, including almost compatible parsing
1805 of message sequence specifiers without invoking a subprocess. Also
1806 added a createmessage() method by Lars Wirzenius.
1808 - The StringIO.StringIO class now supports readline(nbytes). (Lars
1809 Wirzenius.) (Of course, you should be using cStringIO for performance.)
1811 - UserDict.py supports the new dictionary methods as well.
1813 - Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to
1814 speed it up, and replace 0 seed values by 1 to avoid degeneration.
1815 A bug was fixed in the test for invalid arguments.
1817 - Module ftplib.py: added support for parsing a .netrc file (Fred
1818 Drake). Also added an ntransfercmd() method to the FTP class, which
1819 allows access to the expected size of a transfer when available, and a
1820 parse150() function to the module which parses the corresponding 150
1823 - urllib.py: the ftp cache is now limited to 10 entries. Added
1824 quote_plus() and unquote_plus() functions which are like quote() and
1825 unquote() but also replace spaces with '+' or vice versa, for
1826 encoding/decoding CGI form arguments. Catch all errors from the ftp
1827 module. HTTP requests now add the Host: header line. The proxy
1828 variable names are now mapped to lower case, for Windows. The
1829 spliturl() function no longer erroneously throws away all data past
1830 the first newline. The basejoin() function now intereprets "../"
1831 correctly. I *believe* that the problems with "exception raised in
1832 __del__" under certain circumstances have been fixed (mostly by
1833 changes elsewher in the interpreter).
1835 - In urlparse.py, there is a cache for results in urlparse.urlparse();
1836 its size limit is set to 20. Also, new URL schemes shttp, https, and
1837 snews are "supported".
1839 - shelve.py: use cPickle and cStringIO when available. Also added
1840 a sync() method, which calls the database's sync() method if there is
1843 - The mimetools.py module now uses the available Python modules for
1844 decoding quoted-printable, uuencode and base64 formats, rather than
1845 creating a subprocess.
1847 - The python debugger (pdb.py, and its base class bdb.py) now support
1848 conditional breakpoints. See the docs.
1850 - The modules base64.py, uu.py and quopri.py can now be used as simple
1851 command line utilities.
1853 - Various small fixes to the nntplib.py module that I can't bother to
1856 - Sjoerd Mullender's mimify.py module now supports base64 encoding and
1857 includes functions to handle the funny encoding you sometimes see in mail
1858 headers. It is now documented.
1860 - mailbox.py: Added BabylMailbox. Improved the way the mailbox is
1861 gotten from the environment.
1863 - Many more modules now correctly open files in binary mode when this
1864 is necessary on non-Unix platforms.
1866 - The copying functions in the undocumented module shutil.py are
1869 - The Writer classes in the formatter.py module now have a flush()
1872 - The sgmllib.py module accepts hyphens and periods in the middle of
1873 attribute names. While this is against the SGML standard, there is
1874 some HTML out there that uses this...
1876 - The interface for the Python bytecode disassembler module, dis.py,
1877 has been enhanced quite a bit. There's now one main function,
1878 dis.dis(), which takes almost any kind of object (function, module,
1879 class, instance, method, code object) and disassembles it; without
1880 arguments it disassembles the last frame of the last traceback. The
1881 other functions have changed slightly, too.
1883 - The imghdr.py module recognizes new image types: BMP, PNG.
1885 - The string.py module has a new function replace(str, old, new,
1886 [maxsplit]) which does substring replacements. It is actually
1887 implemented in C in the strop module. The functions [r]find() an
1888 [r]index() have an optional 4th argument indicating the end of the
1889 substring to search, alsoo implemented by their strop counterparts.
1890 (Remember, never import strop -- import string uses strop when
1891 available with zero overhead.)
1893 - The string.join() function now accepts any sequence argument, not
1894 just lists and tuples.
1896 - The string.maketrans() requires its first two arguments to be
1897 present. The old version didn't require them, but there's not much
1898 point without them, and the documentation suggests that they are
1899 required, so we fixed the code to match the documentation.
1901 - The regsub.py module has a function clear_cache(), which clears its
1902 internal cache of compiled regular expressions. Also, the cache now
1903 takes the current syntax setting into account. (However, this module
1904 is now obsolete -- use the sub() or subn() functions or methods in the
1907 - The undocumented module Complex.py has been removed, now that Python
1908 has built-in complex numbers. A similar module remains as
1909 Demo/classes/Complex.py, as an example.
1912 Changes to the build process
1913 ----------------------------
1915 - The way GNU readline is configured is totally different. The
1916 --with-readline configure option is gone. It is now an extension
1917 module, which may be loaded dynamically. You must enable it (and
1918 specify the correct linraries to link with) in the Modules/Setup file.
1919 Importing the module installs some hooks which enable command line
1920 editing. When the interpreter shell is invoked interactively, it
1921 attempts to import the readline module; when this fails, the default
1922 input mechanism is used. The hook variables are PyOS_InputHook and
1923 PyOS_ReadlineFunctionPointer. (Code contributed by Lee Busby, with
1924 ideas from William Magro.)
1926 - New build procedure: a single library, libpython1.5.a, is now built,
1927 which contains absolutely everything except for a one-line main()
1928 program (which calls Py_Main(argc, argv) to start the interpreter
1929 shell). This makes life much simpler for applications that need to
1930 embed Python. The serial number of the build is now included in the
1931 version string (sys.version).
1933 - As far as I can tell, neither gcc -Wall nor the Microsoft compiler
1934 emits a single warning any more when compiling Python.
1936 - A number of new Makefile variables have been added for special
1937 situations, e.g. LDLAST is appended to the link command. These are
1938 used by editing the Makefile or passing them on the make command
1941 - A set of patches from Lee Busby has been integrated that make it
1942 possible to catch floating point exceptions. Use the configure option
1943 --with-fpectl to enable the patches; the extension modules fpectl and
1944 fpetest provide control to enable/disable and test the feature,
1947 - The support for shared libraries under AIX is now simpler and more
1948 robust. Thanks to Vladimir Marangozov for revamping his own patches!
1950 - The Modules/makesetup script now reads a file Setup.local as well as
1951 a file Setup. Most changes to the Setup script can be done by editing
1952 Setup.local instead, which makes it easier to carry a particular setup
1953 over from one release to the next.
1955 - The Modules/makesetup script now copies any "include" lines it
1956 encounters verbatim into the output Makefile. It also recognizes .cxx
1957 and .cpp as C++ source files.
1959 - The configure script is smarter about C compiler options; e.g. with
1960 gcc it uses -O2 and -g when possible, and on some other platforms it
1961 uses -Olimit 1500 to avoid a warning from the optimizer about the main
1962 loop in ceval.c (which has more than 1000 basic blocks).
1964 - The configure script now detects whether malloc(0) returns a NULL
1965 pointer or a valid block (of length zero). This avoids the nonsense
1966 of always adding one byte to all malloc() arguments on most platforms.
1968 - The configure script has a new option, --with-dec-threads, to enable
1969 DEC threads on DEC Alpha platforms. Also, --with-threads is now an
1970 alias for --with-thread (this was the Most Common Typo in configure
1973 - Many changes in Doc/Makefile; amongst others, latex2html is now used
1974 to generate HTML from all latex documents.
1977 Change to the Python/C API
1978 --------------------------
1980 - Because some interfaces have changed, the PYTHON_API macro has been
1981 bumped. Most extensions built for the old API version will still run,
1982 but I can't guarantee this. Python prints a warning message on
1983 version mismatches; it dumps core when the version mismatch causes a
1986 - I've completed the Grand Renaming, with the help of Roger Masse and
1987 Barry Warsaw. This makes reading or debugging the code much easier.
1988 Many other unrelated code reorganizations have also been carried out.
1989 The allobjects.h header file is gone; instead, you would have to
1990 include Python.h followed by rename2.h. But you're better off running
1991 Tools/scripts/fixcid.py -s Misc/RENAME on your source, so you can omit
1992 the rename2.h; it will disappear in the next release.
1994 - Various and sundry small bugs in the "abstract" interfaces have been
1995 fixed. Thanks to all the (involuntary) testers of the Python 1.4
1996 version! Some new functions have been added, e.g. PySequence_List(o),
1997 equivalent to list(o) in Python.
1999 - New API functions PyLong_FromUnsignedLong() and
2000 PyLong_AsUnsignedLong().
2002 - The API functions in the file cgensupport.c are no longer
2003 supported. This file has been moved to Modules and is only ever
2004 compiled when the SGI specific 'gl' module is built.
2006 - PyObject_Compare() can now raise an exception. Check with
2007 PyErr_Occurred(). The comparison function in an object type may also
2010 - The slice interface uses an upper bound of INT_MAX when no explicit
2011 upper bound is given (e.x. for a[1:]). It used to ask the object for
2012 its length and do the calculations.
2014 - Support for multiple independent interpreters. See Doc/api.tex,
2015 functions Py_NewInterpreter() and Py_EndInterpreter(). Since the
2016 documentation is incomplete, also see the new Demo/pysvr example
2017 (which shows how to use these in a threaded application) and the
2020 - There is now a Py_Finalize() function which "de-initializes"
2021 Python. It is possible to completely restart the interpreter
2022 repeatedly by calling Py_Finalize() followed by Py_Initialize(). A
2023 change of functionality in Py_Initialize() means that it is now a
2024 fatal error to call it while the interpreter is already initialized.
2025 The old, half-hearted Py_Cleanup() routine is gone. Use of Py_Exit()
2026 is deprecated (it is nothing more than Py_Finalize() followed by
2029 - There are no known memory leaks left. While Py_Finalize() doesn't
2030 free *all* allocated memory (some of it is hard to track down),
2031 repeated calls to Py_Finalize() and Py_Initialize() do not create
2032 unaccessible heap blocks.
2034 - There is now explicit per-thread state. (Inspired by, but not the
2035 same as, Greg Stein's free threading patches.)
2037 - There is now better support for threading C applications. There are
2038 now explicit APIs to manipulate the interpreter lock. Read the source
2039 or the Demo/pysvr example; the new functions are
2040 PyEval_{Acquire,Release}{Lock,Thread}().
2042 - The test macro DEBUG has changed to Py_DEBUG, to avoid interference
2043 with other libraries' DEBUG macros. Likewise for any other test
2044 macros that didn't yet start with Py_.
2046 - New wrappers around malloc() and friends: Py_Malloc() etc. call
2047 malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call
2048 just malloc(). Use of these wrappers could be essential if multiple
2049 memory allocators exist (e.g. when using certain DLL setups under
2050 Windows). (Idea by Jim Fulton.)
2052 - New C API PyImport_Import() which uses whatever __import__() hook
2053 that is installed for the current execution environment. By Jim
2056 - It is now possible for an extension module's init function to fail
2057 non-fatally, by calling one of the PyErr_* functions and returning.
2059 - The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their
2060 argument to the proper type, like the similar PyString macros already
2061 did. (Suggestion by Marc-Andre Lemburg.) Similar for PyList_GET_SIZE
2062 and PyList_GET_ITEM.
2064 - Some of the Py_Get* function, like Py_GetVersion() (but not yet
2065 Py_GetPath()) are now declared as returning a const char *. (More
2068 - Changed the run-time library to check for exceptions after object
2069 comparisons. PyObject_Compare() can now return an exception; use
2070 PyErr_Occurred() to check (there is *no* special return value).
2072 - PyFile_WriteString() and Py_Flushline() now return error indicators
2073 instead of clearing exceptions. This fixes an obscure bug where using
2074 these would clear a pending exception, discovered by Just van Rossum.
2076 - There's a new function, PyArg_ParseTupleAndKeywords(), which parses
2077 an argument list including keyword arguments. Contributed by Geoff
2080 - PyArg_GetInt() is gone.
2082 - It's no longer necessary to include graminit.h when calling one of
2083 the extended parser API functions. The three public grammar start
2084 symbols are now in Python.h as Py_single_input, Py_file_input, and
2087 - The CObject interface has a new function,
2088 PyCObject_Import(module, name). It calls PyCObject_AsVoidPtr()
2089 on the object referenced by "module.name".
2095 - On popular demand, _tkinter once again installs a hook for readline
2096 that processes certain Tk events while waiting for the user to type
2097 (using PyOS_InputHook).
2099 - A patch by Craig McPheeters plugs the most obnoxious memory leaks,
2100 caused by command definitions referencing widget objects beyond their
2103 - New standard dialog modules: tkColorChooser.py, tkCommonDialog.py,
2104 tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py These interface
2105 with the new Tk dialog scripts, and provide more "native platform"
2106 style file selection dialog boxes on some platforms. Contributed by
2109 - Tkinter.py: when the first Tk object is destroyed, it sets the
2110 hiddel global _default_root to None, so that when another Tk object is
2111 created it becomes the new default root. Other miscellaneous
2114 - The Image class now has a configure method.
2116 - Added a bunch of new winfo options to Tkinter.py; we should now be
2117 up to date with Tk 4.2. The new winfo options supported are:
2118 mananger, pointerx, pointerxy, pointery, server, viewable, visualid,
2121 - The broken bind() method on Canvas objects defined in the Canvas.py
2122 module has been fixed. The CanvasItem and Group classes now also have
2125 - The problem with Tkinter.py falling back to trying to import
2126 "tkinter" when "_tkinter" is not found has been fixed -- it no longer
2127 tries "tkinter", ever. This makes diagnosing the problem "_tkinter
2128 not configured" much easier and will hopefully reduce the newsgroup
2129 traffic on this topic.
2131 - The ScrolledText module once again supports the 'cnf' parameter, to
2132 be compatible with the examples in Mark Lutz' book (I know, I know,
2135 - The _tkinter.c extension module has been revamped. It now support
2136 Tk versions 4.1 through 8.0; support for 4.0 has been dropped. It
2137 works well under Windows and Mac (with the latest Tk ports to those
2138 platforms). It also supports threading -- it is safe for one
2139 (Python-created) thread to be blocked in _tkinter.mainloop() while
2140 other threads modify widgets. To make the changes visible, those
2141 threads must use update_idletasks()method. (The patch for threading
2142 in 1.5a3 was broken; in 1.5a4, it is back in a different version,
2143 which requires access to the Tcl sources to get it to work -- hence it
2144 is disabled by default.)
2146 - A bug in _tkinter.c has been fixed, where Split() with a string
2147 containing an unmatched '"' could cause an exception or core dump.
2149 - Unfortunately, on Windows and Mac, Tk 8.0 no longer supports
2150 CreateFileHandler, so _tkinter.createfilehandler is not available on
2151 those platforms when using Tk 8.0 or later. I will have to rethink
2152 how to interface with Tcl's lower-level event mechanism, or with its
2153 channels (which are like Python's file-like objects). Jack Jansen has
2154 provided a fix for the Mac, so createfilehandler *is* actually
2155 supported there; maybe I can adapt his fix for Windows.
2161 - A new regression test suite is provided, which tests most of the
2162 standard and built-in modules. The regression test is run by invoking
2163 the script Lib/test/regrtest.py. Barry Warsaw wrote the test harnass;
2164 he and Roger Masse contributed most of the new tests.
2166 - New tool: faqwiz -- the CGI script that is used to maintain the
2167 Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py). In
2170 - New tool: webchecker -- a simple extensible web robot that, when
2171 aimed at a web server, checks that server for dead links. Available
2172 are a command line utility as well as a Tkinter based GUI version. In
2173 Tools/webchecker. A simplified version of this program is dissected
2174 in my article in O'Reilly's WWW Journal, the issue on Scripting
2175 Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120).
2176 Includes a parser for robots.txt files by Skip Montanaro.
2178 - New small tools: cvsfiles.py (prints a list of all files under CVS
2179 n a particular directory tree), treesync.py (a rather Guido-specific
2180 script to synchronize two source trees, one on Windows NT, the other
2181 one on Unix under CVS but accessible from the NT box), and logmerge.py
2182 (sort a collection of RCS or CVS logs by date). In Tools/scripts.
2184 - The freeze script now also works under Windows (NT). Another
2185 feature allows the -p option to be pointed at the Python source tree
2186 instead of the installation prefix. This was loosely based on part of
2187 xfreeze by Sam Rushing and Bill Tutt.
2189 - New examples (Demo/extend) that show how to use the generic
2190 extension makefile (Misc/Makefile.pre.in).
2192 - Tools/scripts/h2py.py now supports C++ comments.
2194 - Tools/scripts/pystone.py script is upgraded to version 1.1; there
2195 was a bug in version 1.0 (distributed with Python 1.4) that leaked
2196 memory. Also, in 1.1, the LOOPS variable is incremented to 10000.
2198 - Demo/classes/Rat.py completely rewritten by Sjoerd Mullender.
2204 - New project files for Developer Studio (Visual C++) 5.0 for Windows
2205 NT (the old VC++ 4.2 Makefile is also still supported, but will
2206 eventually be withdrawn due to its bulkiness).
2208 - See the note on the new module search path in the "Miscellaneous" section
2211 - Support for Win32s (the 32-bit Windows API under Windows 3.1) is
2212 basically withdrawn. If it still works for you, you're lucky.
2214 - There's a new extension module, msvcrt.c, which provides various
2215 low-level operations defined in the Microsoft Visual C++ Runtime Library.
2216 These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and
2217 console I/O functions like kbhit(), getch() and putch().
2219 - The -u option not only sets the standard I/O streams to unbuffered
2220 status, but also sets them in binary mode. (This can also be done
2221 using msvcrt.setmode(), by the way.)
2223 - The, sys.prefix and sys.exec_prefix variables point to the directory
2224 where Python is installed, or to the top of the source tree, if it was run
2227 - The various os.path modules (posixpath, ntpath, macpath) now support
2228 passing more than two arguments to the join() function, so
2229 os.path.join(a, b, c) is the same as os.path.join(a, os.path.join(b,
2232 - The ntpath module (normally used as os.path) supports ~ to $HOME
2233 expansion in expanduser().
2235 - The freeze tool now works on Windows.
2237 - See also the Tkinter category for a sad note on
2238 _tkinter.createfilehandler().
2240 - The truncate() method for file objects now works on Windows.
2242 - Py_Initialize() is no longer called when the DLL is loaded. You
2243 must call it yourself.
2245 - The time module's clock() function now has good precision through
2246 the use of the Win32 API QueryPerformanceCounter().
2248 - Mark Hammond will release Python 1.5 versions of PythonWin and his
2249 other Windows specific code: the win32api extensions, COM/ActiveX
2250 support, and the MFC interface.
2256 - As always, the Macintosh port will be done by Jack Jansen. He will
2257 make a separate announcement for the Mac specific source code and the
2258 binary distribution(s) when these are ready.
2261 ======================================================================
2264 =====================================
2265 ==> Release 1.4 (October 25 1996) <==
2266 =====================================
2268 (Starting in reverse chronological order:)
2270 - Changed disclaimer notice.
2272 - Added SHELL=/bin/sh to Misc/Makefile.pre.in -- some Make versions
2273 default to the user's login shell.
2275 - In Lib/tkinter/Tkinter.py, removed bogus binding of <Delete> in Text
2276 widget, and bogus bspace() function.
2278 - In Lib/cgi.py, bumped __version__ to 2.0 and restored a truncated
2281 - Fixed the NT Makefile (PC/vc40.mak) for VC 4.0 to set /MD for all
2282 subprojects, and to remove the (broken) experimental NumPy
2285 - In Lib/py_compile.py, cast mtime to long() so it will work on Mac
2286 (where os.stat() returns mtimes as floats.)
2287 - Set self.rfile unbuffered (like self.wfile) in SocketServer.py, to
2288 fix POST in CGIHTTPServer.py.
2290 - Version 2.83 of Misc/python-mode.el for Emacs is included.
2292 - In Modules/regexmodule.c, fixed symcomp() to correctly handle a new
2293 group starting immediately after a group tag.
2295 - In Lib/SocketServer.py, changed the mode for rfile to unbuffered.
2297 - In Objects/stringobject.c, fixed the compare function to do the
2298 first char comparison in unsigned mode, for consistency with the way
2299 other characters are compared by memcmp().
2301 - In Lib/tkinter/Tkinter.py, fixed Scale.get() to support floats.
2303 - In Lib/urllib.py, fix another case where openedurl wasn't set.
2305 (XXX Sorry, the rest is in totally random order. No time to fix it.)
2307 - SyntaxError exceptions detected during code generation
2308 (e.g. assignment to an expression) now include a line number.
2310 - Don't leave trailing / or \ in script directory inserted in front of
2313 - Added a note to Tools/scripts/classfix.py abouts its historical
2316 - Added Misc/Makefile.pre.in, a universal Makefile for extensions
2317 built outside the distribution.
2319 - Rewritten Misc/faq2html.py, by Ka-Ping Yee.
2321 - Install shared modules with mode 555 (needed for performance on some
2324 - Some changes to standard library modules to avoid calling append()
2325 with more than one argument -- while supported, this should be
2326 outlawed, and I don't want to set a bad example.
2328 - bdb.py (and hence pdb.py) supports calling run() with a code object
2329 instead of a code string.
2331 - Fixed an embarrassing bug cgi.py which prevented correct uploading
2332 of binary files from Netscape (which doesn't distinguish between
2333 binary and text files). Also added dormant logging support, which
2334 makes it easier to debug the cgi module itself.
2336 - Added default writer to constructor of NullFormatter class.
2338 - Use binary mode for socket.makefile() calls in ftplib.py.
2340 - The ihooks module no longer "installs" itself upon import -- this
2341 was an experimental feature that helped ironing out some bugs but that
2342 slowed down code that imported it without the need to install it
2343 (e.g. the rexec module). Also close the file in some cases and add
2344 the __file__ attribute to loaded modules.
2346 - The test program for mailbox.py is now more useful.
2348 - Added getparamnames() to Message class in mimetools.py -- it returns
2349 the names of parameters to the content-type header.
2351 - Fixed a typo in ni that broke the loop stripping "__." from names.
2353 - Fix sys.path[0] for scripts run via pdb.py's new main program.
2355 - profile.py can now also run a script, like pdb.
2357 - Fix a small bug in pyclbr -- don't add names starting with _ when
2358 emulating from ... import *.
2360 - Fixed a series of embarrassing typos in rexec's handling of standard
2361 I/O redirection. Added some more "safe" built-in modules: cmath,
2364 - Fixed embarrassing typo in shelve.py.
2366 - Added SliceType and EllipsisType to types.py.
2368 - In urllib.py, added handling for error 301 (same as 302); added
2369 geturl() method to get the URL after redirection.
2371 - Fixed embarrassing typo in xdrlib.py. Also fixed typo in Setup.in
2372 for _xdrmodule.c and removed redundant #include from _xdrmodule.c.
2374 - Fixed bsddbmodule.c to add binary mode indicator on platforms that
2375 have it. This should make it working on Windows NT.
2377 - Changed last uses of #ifdef NT to #ifdef MS_WINDOWS or MS_WIN32,
2378 whatever applies. Also rationalized some other tests for various MS
2381 - Added the sources for the NT installer script used for Python
2382 1.4beta3. Not tested with this release, but better than nothing.
2384 - A compromise in pickle's defenses against Trojan horses: a
2385 user-defined function is now okay where a class is expected. A
2386 built-in function is not okay, to prevent pickling something that
2387 will execute os.system("rm -f *") when unpickling.
2389 - dis.py will print the name of local variables referenced by local
2390 load/store/delete instructions.
2392 - Improved portability of SimpleHTTPServer module to non-Unix
2395 - The thread.h interface adds an extra argument to down_sema(). This
2396 only affects other C code that uses thread.c; the Python thread module
2397 doesn't use semaphores (which aren't provided on all platforms where
2398 Python threads are supported). Note: on NT, this change is not
2401 - Fixed some typos in abstract.h; corrected signature of
2402 PyNumber_Coerce, added PyMapping_DelItem. Also fixed a bug in
2403 abstract.c's PyObject_CallMethod().
2405 - apply(classname, (), {}) now works even if the class has no
2408 - Implemented complex remainder and divmod() (these would dump core!).
2409 Conversion of complex numbers to int, long int or float now raises an
2410 exception, since there is no meaningful way to do it without losing
2413 - Fixed bug in built-in complex() function which gave the wrong result
2414 for two real arguments.
2416 - Change the hash algorithm for strings -- the multiplier is now
2417 1000003 instead of 3, which gives better spread for short strings.
2419 - New default path for Windows NT, the registry structure now supports
2420 default paths for different install packages. (Mark Hammond -- the
2421 next PythonWin release will use this.)
2423 - Added more symbols to the python_nt.def file.
2425 - When using GNU readline, set rl_readline_name to "python".
2427 - The Ellipses built-in name has been renamed to Ellipsis -- this is
2428 the correct singular form. Thanks to Ka-Ping Yee, who saved us from
2429 eternal embarrassment.
2431 - Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses ->
2432 Ellipsis name change.
2434 - Updated the library reference manual. Added documentation of
2435 restricted mode (rexec, Bastion) and the formatter module (for use
2436 with the htmllib module). Fixed the documentation of htmllib
2439 - The reference manual is now maintained in FrameMaker.
2441 - Upgraded scripts Doc/partparse.py and Doc/texi2html.py.
2443 - Slight improvements to Doc/Makefile.
2445 - Added fcntl.lockf(). This should be used for Unix file locking
2446 instead of the posixfile module; lockf() is more portable.
2448 - The getopt module now supports long option names, thanks to Lars
2451 - Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake
2454 - Use more bits of time.time() in whrandom's default seed().
2456 - Performance hack for regex module's regs attribute.
2458 - Don't close already closed socket in socket module.
2460 - Correctly handle separators containing embedded nulls in
2461 strop.split, strop.find and strop.rfind. Also added more detail to
2462 error message for strop.atoi and friends.
2464 - Moved fallback definition for hypot() to Python/hypot.c.
2466 - Added fallback definition for strdup, in Python/strdup.c.
2468 - Fixed some bugs where a function would return 0 to indicate an error
2469 where it should return -1.
2471 - Test for error returned by time.localtime(), and rationalized its MS
2474 - Added Modules/Setup.local file, which is processed after Setup.
2476 - Corrected bug in toplevel Makefile.in -- execution of regen script
2477 would not use the right PATH and PYTHONPATH.
2479 - Various and sundry NeXT configuration changes (sigh).
2481 - Support systems where libreadline needs neither termcap nor curses.
2483 - Improved ld_so_aix script and python.exp file (for AIX).
2485 - More stringent test for working <stdarg.h> in configure script.
2487 - Removed Demo/www subdirectory -- it was totally out of date.
2489 - Improved demos and docs for Fred Drake's parser module; fixed one
2490 typo in the module itself.
2493 =========================================
2494 ==> Release 1.4beta3 (August 26 1996) <==
2495 =========================================
2498 (XXX This is less readable that it should. I promise to restructure
2499 it for the final 1.4 release.)
2502 What's new in 1.4beta3 (since beta2)?
2503 -------------------------------------
2505 - Name mangling to implement a simple form of class-private variables.
2506 A name of the form "__spam" can't easily be used outside the class.
2507 (This was added in 1.4beta3, but left out of the 1.4beta3 release
2510 - In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
2511 handled correctly when using a proxy server.
2513 - In ntpath.normpath(): don't truncate to 8+3 format.
2515 - In mimetools.choose_boundary(): don't die when getuid() or getpid()
2518 - Module urllib: some optimizations to (un)quoting.
2520 - New module MimeWriter for writing MIME documents.
2522 - More changes to formatter module.
2524 - The freeze script works once again and is much more robust (using
2525 sys.prefix etc.). It also supports a -o option to specify an
2528 - New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
2530 - The Doc/Makefile targets have been reorganized somewhat to remove the
2531 insistence on always generating PostScript.
2533 - The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
2535 - "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing
2536 name conflict on the Mac.
2538 - Linking a module compiled with a different setting for Py_TRACE_REFS now
2539 generates a linker error rather than a core dump.
2541 - The cgi module has a new convenience function print_exception(), which
2542 formats a python exception using HTML. It also fixes a bug in the
2543 compatibility code and adds a dubious feature which makes it possible to
2544 have two query strings, one in the URL and one in the POST data.
2546 - A subtle change in the unpickling of class instances makes it possible
2547 to unpickle in restricted execution mode, where the __dict__ attribute is
2548 not available (but setattr() is).
2550 - Documentation for os.path.splitext() (== posixpath.splitext()) has been
2551 cleared up. It splits at the *last* dot.
2553 - posixfile locking is now also correctly supported on AIX.
2555 - The tempfile module once again honors an initial setting of tmpdir. It
2556 now works on Windows, too.
2558 - The traceback module has some new functions to extract, format and print
2561 - Some translation functions in the urllib module have been made a little
2564 - The addtag_* methods for Canvas widgets in Tkinter as well as in the
2565 separate Canvas class have been fixed so they actually do something
2568 - A tiny _test() function has been added to Tkinter.py.
2570 - A generic Makefile for dynamically loaded modules is provided in the Misc
2571 subdirectory (Misc/gMakefile).
2573 - A new version of python-mode.el for Emacs is provided. See
2574 http://www.python.org/ftp/emacs/pmdetails.html for details. The
2575 separate file pyimenu.el is no longer needed, imenu support is folded
2576 into python-mode.el.
2578 - The configure script can finally correctly find the readline library in a
2579 non-standard location. The LDFLAGS variable is passed on the the Makefiles
2580 from the configure script.
2582 - Shared libraries are now installed as programs (i.e. with executable
2583 permission). This is required on HP-UX and won't hurt on other systems.
2585 - The objc.c module is no longer part of the distribution. Objective-C
2586 support may become available as contributed software on the ftp site.
2588 - The sybase module is no longer part of the distribution. A much
2589 improved sybase module is available as contributed software from the
2592 - _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and
2593 Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file
2594 now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0.
2596 - In Setup, you can now write "*shared*" instead of "*noconfig*", and you
2597 can use *.so and *.sl as shared libraries.
2599 - Some more fidgeting for AIX shared libraries.
2601 - The mpz module is now compatible with GMP 2.x. (Not tested by me.)
2602 (Note -- a complete replacement by Niels Mo"ller, called gpmodule, is
2603 available from the contrib directory on the ftp site.)
2605 - A warning is written to sys.stderr when a __del__ method raises an
2606 exception (formerly, such exceptions were completely ignored).
2608 - The configure script now defines HAVE_OLD_CPP if the C preprocessor is
2609 incapable of ANSI style token concatenation and stringification.
2611 - All source files (except a few platform specific modules) are once again
2612 compatible with K&R C compilers as well as ANSI compilers. In particular,
2613 ANSI-isms have been removed or made conditional in complexobject.c,
2614 getargs.c and operator.c.
2616 - The abstract object API has three new functions, PyObject_DelItem,
2617 PySequence_DelItem, and PySequence_DelSlice.
2619 - The operator module has new functions delitem and delslice, and the
2620 functions "or" and "and" are renamed to "or_" and "and_" (since "or" and
2621 "and" are reserved words). ("__or__" and "__and__" are unchanged.)
2623 - The environment module is no longer supported; putenv() is now a function
2624 in posixmodule (also under NT).
2626 - Error in filter(<function>, "") has been fixed.
2628 - Unrecognized keyword arguments raise TypeError, not KeyError.
2630 - Better portability, fewer bugs and memory leaks, fewer compiler warnings,
2631 some more documentation.
2633 - Bug in float power boundary case (0.0 to the negative integer power)
2636 - The test of negative number to the float power has been moved from the
2637 built-in pow() functin to floatobject.c (so complex numbers can yield the
2640 - The bug introduced in beta2 where shared libraries loaded (using
2641 dlopen()) from the current directory would fail, has been fixed.
2643 - Modules imported as shared libraries now also have a __file__ attribute,
2644 giving the filename from which they were loaded. The only modules without
2645 a __file__ attribute now are built-in modules.
2647 - On the Mac, dynamically loaded modules can end in either ".slb" or
2648 ".<platform>.slb" where <platform> is either "CFM68K" or "ppc". The ".slb"
2649 extension should only be used for "fat" binaries.
2651 - C API addition: marshal.c now supports
2652 PyMarshal_WriteObjectToString(object).
2654 - C API addition: getargs.c now supports
2655 PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
2656 to parse keyword arguments.
2658 - The PC versioning scheme (sys.winver) has changed once again. the
2659 version number is now "<digit>.<digit>.<digit>.<apiversion>", where the
2660 first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4,
2661 "1.4.1" for Python 1.4.1 -- the beta level is not included) and
2662 <apiversion> is the four-digit PYTHON_API_VERSION (currently 1005).
2664 - h2py.py accepts whitespace before the # in CPP directives
2666 - On Solaris 2.5, it should now be possible to use either Posix threads or
2667 Solaris threads (XXX: how do you select which is used???). (Note: the
2668 Python pthreads interface doesn't fully support semaphores yet -- anyone
2671 - Thread support should now work on AIX, using either DCE threads or
2674 - New file Demo/sockets/unicast.py
2676 - Working Mac port, with CFM68K support, with Tk 4.1 support (though not
2679 - New project setup for PC port, now compatible with PythonWin, with
2680 _tkinter and NumPy support (XXX)
2682 - New module site.py (XXX)
2684 - New module xdrlib.py and optional support module _xdrmodule.c (XXX)
2686 - parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
2688 - regen script fixed (XXX)
2690 - new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
2692 - testall now also tests math module (XXX)
2694 - string.atoi c.s. now raise an exception for an empty input string.
2696 - At last, it is no longer necessary to define HAVE_CONFIG_H in order to
2697 have config.h included at various places.
2699 - Unrecognized keyword arguments now raise TypeError rather than KeyError.
2701 - The makesetup script recognizes files with extension .so or .sl as
2704 - 'access' is no longer a reserved word, and all code related to its
2705 implementation is gone (or at least #ifdef'ed out). This should make
2706 Python a little speedier too!
2708 - Performance enhancements suggested by Sjoerd Mullender. This includes
2709 the introduction of two new optional function pointers in type object,
2710 getattro and setattro, which are like getattr and setattr but take a
2711 string object instead of a C string pointer.
2713 - New operations in string module: lstrip(s) and rstrip(s) strip whitespace
2714 only on the left or only on the right, A new optional third argument to
2715 split() specifies the maximum number of separators honored (so
2716 splitfields(s, sep, n) returns a list of at most n+1 elements). (Since
2717 1.3, splitfields(s, None) is totally equivalent to split(s).)
2718 string.capwords() has an optional second argument specifying the
2719 separator (which is passed to split()).
2721 - regsub.split() has the same addition as string.split(). regsub.splitx(s,
2722 sep, maxsep) implements the functionality that was regsub.split(s, 1) in
2723 1.4beta2 (return a list containing the delimiters as well as the words).
2725 - Final touch for AIX loading, rewritten Misc/AIX-NOTES.
2727 - In Modules/_tkinter.c, when using Tk 4.1 or higher, use className
2728 argument to _tkinter.create() to set Tcl's argv0 variable, so X
2729 resources use the right resource class again.
2731 - Add #undef fabs to Modules/mathmodule.c for macintosh.
2733 - Added some macro renames for AIX in Modules/operator.c.
2735 - Removed spurious 'E' from Doc/liberrno.tex.
2737 - Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
2738 Misc/gMakefile and new version of Misc/python-mode.el.
2740 - Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
2743 - Added missing "from types import *" to Lib/tkinter/Canvas.py.
2745 - Added hint about using default args for __init__ to pickle docs.
2747 - Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
2750 - Some improvements to Doc/texi2html.py.
2752 - In Python/import.c, Cast unsigned char * in struct _frozen to char *
2753 in calls to rds_object().
2755 - In doc/ref4.tex, added note about scope of lambda bodies.
2757 What's new in 1.4beta2 (since beta1)?
2758 -------------------------------------
2760 - Portability bug in the md5.h header solved.
2762 - The PC build procedure now really works, and sets sys.platform to a
2763 meaningful value (a few things were botched in beta 1). Lib/dos_8x3
2764 is now a standard part of the distribution (alas).
2766 - More improvements to the installation procedure. Typing "make install"
2767 now inserts the version number in the pathnames of almost everything
2768 installed, and creates the machine dependent modules (FCNTL.py etc.) if not
2769 supplied by the distribution. (XXX There's still a problem with the latter
2770 because the "regen" script requires that Python is installed. Some manual
2771 intervention may still be required.) (This has been fixed in 1.4beta3.)
2773 - New modules: errno, operator (XXX).
2775 - Changes for use with Numerical Python: builtin function slice() and
2776 Ellipses object, and corresponding syntax:
2778 x[lo:hi:stride] == x[slice(lo, hi, stride)]
2779 x[a, ..., z] == x[(a, Ellipses, z)]
2781 - New documentation for errno and cgi mdoules.
2783 - The directory containing the script passed to the interpreter is
2784 inserted in from of sys.path; "." is no longer a default path
2787 - Optional third string argument to string.translate() specifies
2788 characters to delete. New function string.maketrans() creates a
2789 translation table for translate() or for regex.compile().
2791 - Module posix (and hence module os under Unix) now supports putenv().
2792 Moreover, module os is enhanced so that if putenv() is supported,
2793 assignments to os.environ entries make the appropriate putenv() call.
2794 (XXX the putenv() implementation can leak a small amount of memory per
2797 - pdb.py can now be invoked from the command line to debug a script:
2798 python pdb.py <script> <arg> ...
2800 - Much improved parseaddr() in rfc822.
2802 - In cgi.py, you can now pass an alternative value for environ to
2803 nearly all functions.
2805 - You can now assign to instance variables whose name begins and ends
2808 - New version of Fred Drake's parser module and associates (token,
2811 - New PYTHON_API_VERSION value and .pyc file magic number (again!).
2813 - The "complex" internal structure type is now called "Py_complex" to
2814 avoid name conflicts.
2816 - Numerous small bugs fixed.
2818 - Slight pickle speedups.
2820 - Some slight speedups suggested by Sjoerd (more coming in 1.4 final).
2822 - NeXT portability mods by Bill Bumgarner integrated.
2824 - Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been
2825 converted to new naming style.
2828 What's new in 1.4beta1 (since 1.3)?
2829 -----------------------------------
2831 - Added sys.platform and sys.exec_platform for Bill Janssen.
2833 - Installation has been completely overhauled. "make install" now installs
2834 everything, not just the python binary. Installation uses the install-sh
2835 script (borrowed from X11) to install each file.
2837 - New functions in the posix module: mkfifo, plock, remove (== unlink),
2838 and ftruncate. More functions are also available under NT.
2840 - New function in the fcntl module: flock.
2842 - Shared library support for FreeBSD.
2844 - The --with-readline option can now be used without a DIRECTORY argument,
2845 for systems where libreadline.* is in one of the standard places. It is
2846 also possible for it to be a shared library.
2848 - The extension tkinter has been renamed to _tkinter, to avoid confusion
2849 with Tkinter.py oncase insensitive file systems. It now supports Tk 4.1 as
2852 - Author's change of address from CWI in Amsterdam, The Netherlands, to
2853 CNRI in Reston, VA, USA.
2855 - The math.hypot() function is now always available (if it isn't found in
2856 the C math library, Python provides its own implementation).
2858 - The latex documentation is now compatible with latex2e, thanks to David
2861 - The expression x**y is now equivalent to pow(x, y).
2863 - The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)].
2865 - Complex numbers are now supported. Imaginary constants are written with
2866 a 'j' or 'J' prefix, general complex numbers can be formed by adding a real
2867 part to an imaginary part, like 3+4j. Complex numbers are always stored in
2868 floating point form, so this is equivalent to 3.0+4.0j. It is also
2869 possible to create complex numbers with the new built-in function
2870 complex(re, [im]). For the footprint-conscious, complex number support can
2871 be disabled by defining the symbol WITHOUT_COMPLEX.
2873 - New built-in function list() is the long-awaited counterpart of tuple().
2875 - There's a new "cmath" module which provides the same functions as the
2876 "math" library but with complex arguments and results. (There are very
2877 good reasons why math.sqrt(-1) still raises an exception -- you have to use
2878 cmath.sqrt(-1) to get 1j for an answer.)
2880 - The Python.h header file (which is really the same as allobjects.h except
2881 it disables support for old style names) now includes several more files,
2882 so you have to have fewer #include statements in the average extension.
2884 - The NDEBUG symbol is no longer used. Code that used to be dependent on
2885 the presence of NDEBUG is now present on the absence of DEBUG. TRACE_REFS
2886 and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG,
2887 respectively. At long last, the source actually compiles and links without
2888 errors when this symbol is defined.
2890 - Several symbols that didn't follow the new naming scheme have been
2891 renamed (usually by adding to rename2.h) to use a Py or _Py prefix. There
2892 are no external symbols left without a Py or _Py prefix, not even those
2893 defined by sources that were incorporated from elsewhere (regexpr.c,
2894 md5c.c). (Macros are a different story...)
2896 - There are now typedefs for the structures defined in config.c and
2899 - New PYTHON_API_VERSION value and .pyc file magic number.
2901 - New module Bastion. (XXX)
2903 - Improved performance of StringIO module.
2905 - UserList module now supports + and * operators.
2907 - The binhex and binascii modules now actually work.
2909 - The cgi module has been almost totally rewritten and documented.
2910 It now supports file upload and a new data type to handle forms more
2913 - The formatter module (for use with htmllib) has been overhauled (again).
2915 - The ftplib module now supports passive mode and has doc strings.
2917 - In (ideally) all places where binary files are read or written, the file
2918 is now correctly opened in binary mode ('rb' or 'wb') so the code will work
2921 - Dummy versions of os.path.expandvars() and expanduser() are now provided
2922 on non-Unix platforms.
2924 - Module urllib now has two new functions url2pathname and pathname2url
2925 which turn local filenames into "file:..." URLs using the same rules as
2926 Netscape (why be different). it also supports urlretrieve() with a
2927 pathname parameter, and honors the proxy environment variables (http_proxy
2928 etc.). The URL parsing has been improved somewhat, too.
2930 - Micro improvements to urlparse. Added urlparse.urldefrag() which
2931 removes a trailing ``#fragment'' if any.
2933 - The mailbox module now supports MH style message delimiters as well.
2935 - The mhlib module contains some new functionality: setcontext() to set the
2936 current folder and parsesequence() to parse a sequence as commonly passed
2937 to MH commands (e.g. 1-10 or last:5).
2939 - New module mimify for conversion to and from MIME format of email
2942 - Module ni now automatically installs itself when first imported -- this
2943 is against the normal rule that modules should define classes and functions
2944 but not invoke them, but appears more useful in the case that two
2945 different, independent modules want to use ni's features.
2947 - Some small performance enhancements in module pickle.
2949 - Small interface change to the profile.run*() family of functions -- more
2950 sensible handling of return values.
2952 - The officially registered Mac creator for Python files is 'Pyth'. This
2953 replaces 'PYTH' which was used before but never registered.
2955 - Added regsub.capwords(). (XXX)
2957 - Added string.capwords(), string.capitalize() and string.translate().
2960 - Fixed an interface bug in the rexec module: it was impossible to pass a
2961 hooks instance to the RExec class. rexec now also supports the dynamic
2962 loading of modules from shared libraries. Some other interfaces have been
2965 - Module rfc822 now caches the headers in a dictionary for more efficient
2968 - The sgmllib module now understands a limited number of SGML "shorthands"
2969 like <A/.../ for <A>...</A>. (It's not clear that this was a good idea...)
2971 - The tempfile module actually tries a number of different places to find a
2972 usable temporary directory. (This was prompted by certain Linux
2973 installations that appear to be missing a /usr/tmp directory.) [A bug in
2974 the implementation that would ignore a pre-existing tmpdir global has been
2977 - Much improved and enhanved FileDialog module for Tkinter.
2979 - Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as
2982 - New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and
2983 s.dup(). Sockets now work correctly on Windows. On Windows, the built-in
2984 extension is called _socket and a wrapper module win/socket.py provides
2985 "makefile()" and "dup()" functionality. On Windows, the select module
2986 works only with socket objects.
2988 - Bugs in bsddb module fixed (e.g. missing default argument values).
2990 - The curses extension now includes <ncurses.h> when available.
2992 - The gdbm module now supports opening databases in "fast" mode by
2993 specifying 'f' as the second character or the mode string.
2995 - new variables sys.prefix and sys.exec_prefix pass corresponding
2996 configuration options / Makefile variables to the Python programmer.
2998 - The ``new'' module now supports creating new user-defined classes as well
2999 as instances thereof.
3001 - The soundex module now sports get_soundex() to get the soundex value for an
3002 arbitrary string (formerly it would only do soundex-based string
3003 comparison) as well as doc strings.
3005 - New object type "cobject" to safely wrap void pointers for passing them
3006 between various extension modules.
3008 - More efficient computation of float**smallint.
3010 - The mysterious bug whereby "x.x" (two occurrences of the same
3011 one-character name) typed from the commandline would sometimes fail
3014 - The initialization of the readline function can now be invoked by a C
3015 extension through PyOS_ReadlineInit().
3017 - There's now an externally visible pointer PyImport_FrozenModules which
3018 can be changed by an embedding application.
3020 - The argument parsing functions now support a new format character 'D' to
3021 specify complex numbers.
3023 - Various memory leaks plugged and bugs fixed.
3025 - Improved support for posix threads (now that real implementations are
3026 beginning to apepar). Still no fully functioning semaphores.
3028 - Some various and sundry improvements and new entries in the Tools
3032 =====================================
3033 ==> Release 1.3 (13 October 1995) <==
3034 =====================================
3039 Two words: Keyword Arguments. See the first section of Chapter 12 of
3042 (The rest of this file is textually the same as the remaining sections
3046 Changes to the WWW and Internet tools
3047 =====================================
3049 The "htmllib" module has been rewritten in an incompatible fashion.
3050 The new version is considerably more complete (HTML 2.0 except forms,
3051 but including all ISO-8859-1 entity definitions), and easy to use.
3052 Small changes to "sgmllib" have also been made, to better match the
3053 tokenization of HTML as recognized by other web tools.
3055 A new module "formatter" has been added, for use with the new
3058 The "urllib"and "httplib" modules have been changed somewhat to allow
3059 overriding unknown URL types and to support authentication. They now
3060 use "mimetools.Message" instead of "rfc822.Message" to parse headers.
3061 The "endrequest()" method has been removed from the HTTP class since
3062 it breaks the interaction with some servers.
3064 The "rfc822.Message" class has been changed to allow a flag to be
3065 passed in that says that the file is unseekable.
3067 The "ftplib" module has been fixed to be (hopefully) more robust on
3070 Several new operations that are optionally supported by servers have
3071 been added to "nntplib": "xover", "xgtitle", "xpath" and "date".
3073 Other Language Changes
3074 ======================
3076 The "raise" statement now takes an optional argument which specifies
3077 the traceback to be used when printing the exception's stack trace.
3078 This must be a traceback object, such as found in "sys.exc_traceback".
3079 When omitted or given as "None", the old behavior (to generate a stack
3080 trace entry for the current stack frame) is used.
3082 The tokenizer is now more tolerant of alien whitespace. Control-L in
3083 the leading whitespace of a line resets the column number to zero,
3084 while Control-R just before the end of the line is ignored.
3086 Changes to Built-in Operations
3087 ==============================
3089 For file objects, "f.read(0)" and "f.readline(0)" now return an empty
3090 string rather than reading an unlimited number of bytes. For the
3091 latter, omit the argument altogether or pass a negative value.
3093 A new system variable, "sys.platform", has been added. It specifies
3094 the current platform, e.g. "sunos5" or "linux1".
3096 The built-in functions "input()" and "raw_input()" now use the GNU
3097 readline library when it has been configured (formerly, only
3098 interactive input to the interpreter itself was read using GNU
3099 readline). The GNU readline library provides elaborate line editing
3100 and history. The Python debugger ("pdb") is the first beneficiary of
3103 Two new built-in functions, "globals()" and "locals()", provide access
3104 to dictionaries containming current global and local variables,
3105 respectively. (These augment rather than replace "vars()", which
3106 returns the current local variables when called without an argument,
3107 and a module's global variables when called with an argument of type
3110 The built-in function "compile()" now takes a third possible value for
3111 the kind of code to be compiled: specifying "'single'" generates code
3112 for a single interactive statement, which prints the output of
3113 expression statements that evaluate to something else than "None".
3118 There are new module "ni" and "ihooks" that support importing modules
3119 with hierarchical names such as "A.B.C". This is enabled by writing
3120 "import ni; ni.ni()" at the very top of the main program. These
3121 modules are amply documented in the Python source.
3123 The module "rexec" has been rewritten (incompatibly) to define a class
3124 and to use "ihooks".
3126 The "string.split()" and "string.splitfields()" functions are now the
3127 same function (the presence or absence of the second argument
3128 determines which operation is invoked); similar for "string.join()"
3129 and "string.joinfields()".
3131 The "Tkinter" module and its helper "Dialog" have been revamped to use
3132 keyword arguments. Tk 4.0 is now the standard. A new module
3133 "FileDialog" has been added which implements standard file selection
3136 The optional built-in modules "dbm" and "gdbm" are more coordinated
3137 --- their "open()" functions now take the same values for their "flag"
3138 argument, and the "flag" and "mode" argument have default values (to
3139 open the database for reading only, and to create the database with
3140 mode "0666" minuse the umask, respectively). The memory leaks have
3143 A new dbm-like module, "bsddb", has been added, which uses the BSD DB
3144 package's hash method.
3146 A portable (though slow) dbm-clone, implemented in Python, has been
3147 added for systems where none of the above is provided. It is aptly
3150 The module "anydbm" provides a unified interface to "bsddb", "gdbm",
3151 "dbm", and "dumbdbm", choosing the first one available.
3153 A new extension module, "binascii", provides a variety of operations
3154 for conversion of text-encoded binary data.
3156 There are three new or rewritten companion modules implemented in
3157 Python that can encode and decode the most common such formats: "uu"
3158 (uuencode), "base64" and "binhex".
3160 A module to handle the MIME encoding quoted-printable has also been
3163 The parser module (which provides an interface to the Python parser's
3164 abstract syntax trees) has been rewritten (incompatibly) by Fred
3165 Drake. It now lets you change the parse tree and compile the result!
3167 The \code{syslog} module has been upgraded and documented.
3172 The dynamic module loader recognizes the fact that different filenames
3173 point to the same shared library and loads the library only once, so
3174 you can have a single shared library that defines multiple modules.
3175 (SunOS / SVR4 style shared libraries only.)
3177 Jim Fulton's ``abstract object interface'' has been incorporated into
3178 the run-time API. For more detailes, read the files
3179 "Include/abstract.h" and "Objects/abstract.c".
3181 The Macintosh version is much more robust now.
3183 Numerous things I have forgotten or that are so obscure no-one will
3184 notice them anyway :-)
3187 ===================================
3188 ==> Release 1.2 (13 April 1995) <==
3189 ===================================
3191 - Changes to Misc/python-mode.el:
3192 - Wrapping and indentation within triple quote strings should work
3194 - `Standard' bug reporting mechanism (use C-c C-b)
3195 - py-mark-block was moved to C-c C-m
3196 - C-c C-v shows you the python-mode version
3197 - a basic python-font-lock-keywords has been added for Emacs 19
3198 font-lock colorizations.
3199 - proper interaction with pending-del and del-sel modes.
3200 - New py-electric-colon (:) command for improved outdenting. Also
3201 py-indent-line (TAB) should handle outdented lines better.
3202 - New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r)
3204 - The Library Reference has been restructured, and many new and
3205 existing modules are now documented, in particular the debugger and
3206 the profiler, as well as the persistency and the WWW/Internet support
3209 - All known bugs have been fixed. For example the pow(2,2,3L) bug on
3210 Linux has been fixed. Also the re-entrancy problems with __del__ have
3213 - All known memory leaks have been fixed.
3215 - Phase 2 of the Great Renaming has been executed. The header files
3216 now use the new names (PyObject instead of object, etc.). The linker
3217 also sees the new names. Most source files still use the old names,
3218 by virtue of the rename2.h header file. If you include Python.h, you
3219 only see the new names. Dynamically linked modules have to be
3220 recompiled. (Phase 3, fixing the rest of the sources, will be
3221 executed gradually with the release later versions.)
3223 - The hooks for implementing "safe-python" (better called "restricted
3224 execution") are in place. Specifically, the import statement is
3225 implemented by calling the built-in function __import__, and the
3226 built-in names used in a particular scope are taken from the
3227 dictionary __builtins__ in that scope's global dictionary. See also
3228 the new (unsupported, undocumented) module rexec.py.
3230 - The import statement now supports the syntax "import a.b.c" and
3231 "from a.b.c import name". No officially supported implementation
3232 exists, but one can be prototyped by replacing the built-in __import__
3233 function. A proposal by Ken Manheimer is provided as newimp.py.
3235 - All machinery used by the import statement (or the built-in
3236 __import__ function) is now exposed through the new built-in module
3237 "imp" (see the library reference manual). All dynamic loading
3238 machinery is moved to the new file importdl.c.
3240 - Persistent storage is supported through the use of the modules
3241 "pickle" and "shelve" (implemented in Python). There's also a "copy"
3242 module implementing deepcopy and normal (shallow) copy operations.
3243 See the library reference manual.
3245 - Documentation strings for many objects types are accessible through
3246 the __doc__ attribute. Modules, classes and functions support special
3247 syntax to initialize the __doc__ attribute: if the first statement
3248 consists of just a string literal, that string literal becomes the
3249 value of the __doc__ attribute. The default __doc__ attribute is
3250 None. Documentation strings are also supported for built-in
3251 functions, types and modules; however this feature hasn't been widely
3252 used yet. See the 'new' module for an example. (Basically, the type
3253 object's tp_doc field contains the doc string for the type, and the
3254 4th member of the methodlist structure contains the doc string for the
3257 - The __coerce__ and __cmp__ methods for user-defined classes once
3258 again work as expected. As an example, there's a new standard class
3259 Complex in the library.
3261 - The functions posix.popen() and posix.fdopen() now have an optional
3262 third argument to specify the buffer size, and default their second
3263 (mode) argument to 'r' -- in analogy to the builtin open() function.
3264 The same applies to posixfile.open() and the socket method makefile().
3266 - The thread.exit_thread() function now raises SystemExit so that
3267 'finally' clauses are honored and a memory leak is plugged.
3269 - Improved X11 and Motif support, by Sjoerd Mullender. This extension
3270 is being maintained and distributed separately.
3272 - Improved support for the Apple Macintosh, in part by Jack Jansen,
3273 e.g. interfaces to (a few) resource mananger functions, get/set file
3274 type and creator, gestalt, sound manager, speech manager, MacTCP, comm
3275 toolbox, and the think C console library. This is being maintained
3276 and distributed separately.
3278 - Improved version for Windows NT, by Mark Hammond. This is being
3279 maintained and distributed separately.
3281 - Used autoconf 2.0 to generate the configure script. Adapted
3282 configure.in to use the new features in autoconf 2.0.
3284 - It now builds on the NeXT without intervention, even on the 3.3
3287 - Characters passed to isspace() and friends are masked to nonnegative
3290 - Correctly compute pow(-3.0, 3).
3292 - Fix portability problems with getopt (configure now checks for a
3295 - Don't add frozenmain.o to libPython.a.
3297 - Exceptions can now be classes. ALl built-in exceptions are still
3298 string objects, but this will change in the future.
3300 - The socket module exports a long list of socket related symbols.
3301 (More built-in modules will export their symbolic constants instead of
3302 relying on a separately generated Python module.)
3304 - When a module object is deleted, it clears out its own dictionary.
3305 This fixes a circularity in the references between functions and
3306 their global dictionary.
3308 - Changed the error handling by [new]getargs() e.g. for "O&".
3310 - Dynamic loading of modules using shared libraries is supported for
3311 several new platforms.
3313 - Support "O&", "[...]" and "{...}" in mkvalue().
3315 - Extension to findmethod(): findmethodinchain() (where a chain is a
3316 linked list of methodlist arrays). The calling interface for
3317 findmethod() has changed: it now gets a pointer to the (static!)
3318 methodlist structure rather than just to the function name -- this
3319 saves copying flags etc. into the (short-lived) method object.
3321 - The callable() function is now public.
3323 - Object types can define a few new operations by setting function
3324 pointers in the type object structure: tp_call defines how an object
3325 is called, and tp_str defines how an object's str() is computed.
3328 ===================================
3329 ==> Release 1.1.1 (10 Nov 1994) <==
3330 ===================================
3332 This is a pure bugfix release again. See the ChangeLog file for details.
3334 One exception: a few new features were added to tkinter.
3337 =================================
3338 ==> Release 1.1 (11 Oct 1994) <==
3339 =================================
3341 This release adds several new features, improved configuration and
3342 portability, and fixes more bugs than I can list here (including some
3345 The source compiles and runs out of the box on more platforms than
3346 ever -- including Windows NT. Makefiles or projects for a variety of
3347 non-UNIX platforms are provided.
3349 APOLOGY: some new features are badly documented or not at all. I had
3350 the choice -- postpone the new release indefinitely, or release it
3351 now, with working code but some undocumented areas. The problem with
3352 postponing the release is that people continue to suffer from existing
3353 bugs, and send me patches based on the previous release -- which I
3354 can't apply directly because my own source has changed. Also, some
3355 new modules (like signal) have been ready for release for quite some
3356 time, and people are anxiously waiting for them. In the case of
3357 signal, the interface is simple enough to figure out without
3358 documentation (if you're anxious enough :-). In this case it was not
3359 simple to release the module on its own, since it relies on many small
3360 patches elsewhere in the source.
3362 For most new Python modules, the source code contains comments that
3363 explain how to use them. Documentation for the Tk interface, written
3364 by Matt Conway, is available as tkinter-doc.tar.gz from the Python
3365 home and mirror ftp sites (see Misc/FAQ for ftp addresses). For the
3366 new operator overloading facilities, have a look at Demo/classes:
3367 Complex.py and Rat.py show how to implement a numeric type without and
3368 with __coerce__ method. Also have a look at the end of the Tutorial
3369 document (Doc/tut.tex). If you're still confused: use the newsgroup
3373 New language features:
3375 - More flexible operator overloading for user-defined classes
3376 (INCOMPATIBLE WITH PREVIOUS VERSIONS!) See end of tutorial.
3378 - Classes can define methods named __getattr__, __setattr__ and
3379 __delattr__ to trap attribute accesses. See end of tutorial.
3381 - Classes can define method __call__ so instances can be called
3382 directly. See end of tutorial.
3385 New support facilities:
3387 - The Makefiles (for the base interpreter as well as for extensions)
3388 now support creating dynamically loadable modules if the platform
3389 supports shared libraries.
3391 - Passing the interpreter a .pyc file as script argument will execute
3392 the code in that file. (On the Mac such files can be double-clicked!)
3394 - New Freeze script, to create independently distributable "binaries"
3395 of Python programs -- look in Demo/freeze
3397 - Improved h2py script (in Demo/scripts) follows #includes and
3398 supports macros with one argument
3400 - New module compileall generates .pyc files for all modules in a
3401 directory (tree) without also executing them
3403 - Threads should work on more platforms
3406 New built-in modules:
3408 - tkinter (support for Tcl's Tk widget set) is now part of the base
3411 - signal allows catching or ignoring UNIX signals (unfortunately still
3412 undocumented -- any taker?)
3414 - termios provides portable access to POSIX tty settings
3416 - curses provides an interface to the System V curses library
3418 - syslog provides an interface to the (BSD?) syslog daemon
3420 - 'new' provides interfaces to create new built-in object types
3421 (e.g. modules and functions)
3423 - sybase provides an interface to SYBASE database
3426 New/obsolete built-in methods:
3428 - callable(x) tests whether x can be called
3430 - sockets now have a setblocking() method
3432 - sockets no longer have an allowbroadcast() method
3434 - socket methods send() and sendto() return byte count
3437 New standard library modules:
3439 - types.py defines standard names for built-in types, e.g. StringType
3441 - urlparse.py parses URLs according to the latest Internet draft
3443 - uu.py does uuencode/uudecode (not the fastest in the world, but
3444 quicker than installing uuencode on a non-UNIX machine :-)
3446 - New, faster and more powerful profile module.py
3448 - mhlib.py provides interface to MH folders and messages
3451 New facilities for extension writers (unfortunately still
3454 - newgetargs() supports optional arguments and improved error messages
3456 - O!, O& O? formats for getargs allow more versatile type checking of
3459 - can register pending asynchronous callback, to be called the next
3460 time the Python VM begins a new instruction (Py_AddPendingCall)
3462 - can register cleanup routines to be called when Python exits
3465 - makesetup script understands C++ files in Setup file (use file.C
3468 - Make variable OPT is passed on to sub-Makefiles
3470 - An init<module>() routine may signal an error by not entering
3471 the module in the module table and raising an exception instead
3473 - For long module names, instead of foobarbletchmodule.c you can
3476 - getintvalue() and getfloatvalue() try to convert any object
3477 instead of requiring an "intobject" or "floatobject"
3479 - All the [new]getargs() formats that retrieve an integer value
3480 will now also work if a float is passed
3482 - C function listtuple() converts list to tuple, fast
3484 - You should now call sigcheck() instead of intrcheck();
3485 sigcheck() also sets an exception when it returns nonzero
3488 ====================================
3489 ==> Release 1.0.3 (14 July 1994) <==
3490 ====================================
3492 This release consists entirely of bug fixes to the C sources; see the
3493 head of ../ChangeLog for a complete list. Most important bugs fixed:
3495 - Sometimes the format operator (string%expr) would drop the last
3496 character of the format string
3498 - Tokenizer looped when last line did not end in \n
3500 - Bug when triple-quoted string ended in quote plus newline
3502 - Typo in socketmodule (listen) (== instead of =)
3504 - typing vars() at the >>> prompt would cause recursive output
3507 ==================================
3508 ==> Release 1.0.2 (4 May 1994) <==
3509 ==================================
3511 Overview of the most visible changes. Bug fixes are not listed. See
3517 * String literals follow Standard C rules: they may be continued on
3518 the next line using a backslash; adjacent literals are concatenated
3521 * A new kind of string literals, surrounded by triple quotes (""" or
3522 '''), can be continued on the next line without a backslash.
3527 * Function arguments may have a default value, e.g. def f(a, b=1);
3528 defaults are evaluated at function definition time. This also applies
3531 * The try-except statement has an optional else clause, which is
3532 executed when no exception occurs in the try clause.
3537 * The result of a statement-level expression is no longer printed,
3538 except_ for expressions entered interactively. Consequently, the -k
3539 command line option is gone.
3541 * The result of the last printed interactive expression is assigned to
3544 * Access to implicit global variables has been speeded up by removing
3545 an always-failing dictionary lookup in the dictionary of local
3546 variables (mod suggested by Steve Makewski and Tim Peters).
3548 * There is a new command line option, -u, to force stdout and stderr
3551 * Incorporated Steve Majewski's mods to import.c for dynamic loading
3554 * Fewer chances of dumping core when trying to reload or re-import
3555 static built-in, dynamically loaded built-in, or frozen modules.
3557 * Loops over sequences now don't ask for the sequence's length when
3558 they start, but try to access items 0, 1, 2, and so on until they hit
3559 an IndexError. This makes it possible to create classes that generate
3560 infinite or indefinite sequences a la Steve Majewski. This affects
3561 for loops, the (not) in operator, and the built-in functions filter(),
3562 map(), max(), min(), reduce().
3564 Changed Built-in operations
3565 ---------------------------
3567 * The '%' operator on strings (printf-style formatting) supports a new
3568 feature (adapted from a patch by Donald Beaudry) to allow
3569 '%(<key>)<format>' % {...} to take values from a dictionary by name
3570 instead of from a tuple by position (see also the new function
3573 * The '%s' formatting operator is changed to accept any type and
3574 convert it to a string using str().
3576 * Dictionaries with more than 20,000 entries can now be created
3577 (thanks to Steve Kirsch).
3579 New Built-in Functions
3580 ----------------------
3582 * vars() returns a dictionary containing the local variables; vars(m)
3583 returns a dictionary containing the variables of module m. Note:
3584 dir(x) is now equivalent to vars(x).keys().
3586 Changed Built-in Functions
3587 --------------------------
3589 * open() has an optional third argument to specify the buffer size: 0
3590 for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0
3593 * open()'s second argument is now optional; it defaults to "r".
3595 * apply() now checks that its second argument is indeed a tuple.
3597 New Built-in Modules
3598 --------------------
3600 Changed Built-in Modules
3601 ------------------------
3603 The thread module no longer supports exit_prog().
3608 * Module addpack contains a standard interface to modify sys.path to
3609 find optional packages (groups of related modules).
3611 * Module urllib contains a number of functions to access
3612 World-Wide-Web files specified by their URL.
3614 * Module httplib implements the client side of the HTTP protocol used
3615 by World-Wide-Web servers.
3617 * Module gopherlib implements the client side of the Gopher protocol.
3619 * Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
3620 style mailbox files.
3622 * Module random contains various random distributions, e.g. gauss().
3624 * Module lockfile locks and unlocks open files using fcntl (inspired
3625 by a similar module by Andy Bensky).
3627 * Module ntpath (by Jaap Vermeulen) implements path operations for
3630 * Module test_thread (in Lib/test) contains a small test set for the
3633 Changed Python Modules
3634 ----------------------
3636 * The string module's expandvars() function is now documented and is
3637 implemented in Python (using regular expressions) instead of forking
3638 off a shell process.
3640 * Module rfc822 now supports accessing the header fields using the
3641 mapping/dictionary interface, e.g. h['subject'].
3643 * Module pdb now makes it possible to set a break on a function
3644 (syntax: break <expression>, where <expression> yields a function
3650 * The Demo/scripts/freeze.py script is working again (thanks to Jaap
3656 * Demo/threads/Generator.py is a proposed interface for restartable
3657 functions a la Tim Peters.
3659 * Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a
3660 directory full of HTML pages which between them contain links to all
3661 the newsgroups available on your server.
3663 * Demo/dns contains a DNS (Domain Name Server) client.
3665 * Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
3666 nice enhanced Python shell!!!).
3668 * Demo/turing contains a Turing machine by Amrit Prem.
3673 * Documented new language features mentioned above (but not all new
3676 * Added a chapter to the Tutorial describing recent additions to
3679 * Clarified some sentences in the reference manual,
3680 e.g. break/continue, local/global scope, slice assignment.
3685 * Moved Include/tokenizer.h to Parser/tokenizer.h.
3687 * Added Python/getopt.c for systems that don't have it.
3692 * Indentation of continuated lines is done more intelligently;
3693 consequently the variable py-continuation-offset is gone.
3695 ========================================
3696 ==> Release 1.0.1 (15 February 1994) <==
3697 ========================================
3699 * Many portability fixes should make it painless to build Python on
3700 several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
3702 * Fixed test for <stdarg.h> -- this broke on some platforms.
3704 * Fixed test for shared library dynalic loading -- this broke on SunOS
3705 4.x using the GNU loader.
3707 * Changed order and number of SVR4 networking libraries (it is now
3708 -lsocket -linet -lnsl, if these libraries exist).
3710 * Installing the build intermediate stages with "make libainstall" now
3711 also installs config.c.in, Setup and makesetup, which are used by the
3712 new Extensions mechanism.
3714 * Improved README file contains more hints and new troubleshooting
3717 * The built-in module strop now defines fast versions of three more
3718 functions of the standard string module: atoi(), atol() and atof().
3719 The strop versions of atoi() and atol() support an optional second
3720 argument to specify the base (default 10). NOTE: you don't have to
3721 explicitly import strop to use the faster versions -- the string
3722 module contains code to let versions from stop override the default
3725 * There is now a working Lib/dospath.py for those who use Python under
3726 DOS (or Windows). Thanks, Jaap!
3728 * There is now a working Modules/dosmodule.c for DOS (or Windows)
3731 * Lib.os.py has been reorganized (making it ready for more operating
3734 * Lib/ospath.py is now obsolete (use os.path instead).
3736 * Many fixes to the tutorial to make it match Python 1.0. Thanks,
3739 * Fixed Doc/Makefile, Doc/README and various scripts there.
3741 * Added missing description of fdopen to Doc/libposix.tex.
3743 * Made cleanup() global, for the benefit of embedded applications.
3745 * Added parsing of addresses and dates to Lib/rfc822.py.
3747 * Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
3750 * New module Lib/wave.py reads RIFF (*.wav) audio files.
3752 * Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
3755 * New options and comments for Modules/makesetup (used by new
3756 Extension mechanism).
3758 * Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
3761 * Fixed coredump in filter(None, 'abcdefg').
3764 =======================================
3765 ==> Release 1.0.0 (26 January 1994) <==
3766 =======================================
3768 As is traditional, so many things have changed that I can't pretend to
3769 be complete in these release notes, but I'll try anyway :-)
3771 Note that the very last section is labeled "remaining bugs".
3774 Source organization and build process
3775 -------------------------------------
3777 * The sources have finally been split: instead of a single src
3778 subdirectory there are now separate directories Include, Parser,
3779 Grammar, Objects, Python and Modules. Other directories also start
3780 with a capital letter: Misc, Doc, Lib, Demo.
3782 * A few extensions (notably Amoeba and X support) have been moved to a
3783 separate subtree Extensions, which is no longer in the core
3784 distribution, but separately ftp'able as extensions.tar.Z. (The
3785 distribution contains a placeholder Ext-dummy with a description of
3786 the Extensions subtree as well as the most recent versions of the
3787 scripts used there.)
3789 * A few large specialized demos (SGI video and www) have been
3790 moved to a separate subdirectory Demo2, which is no longer in the core
3791 distribution, but separately ftp'able as demo2.tar.Z.
3793 * Parts of the standard library have been moved to subdirectories:
3794 there are now standard subdirectories stdwin, test, sgi and sun4.
3796 * The configuration process has radically changed: I now use GNU
3797 autoconf. This makes it much easier to build on new Unix flavors, as
3798 well as fully supporting VPATH (if your Make has it). The scripts
3799 Configure.py and Addmodule.sh are no longer needed. Many source files
3800 have been adapted in order to work with the symbols that the configure
3801 script generated by autoconf defines (or not); the resulting source is
3802 much more portable to different C compilers and operating systems,
3803 even non Unix systems (a Mac port was done in an afternoon). See the
3804 toplevel README file for a description of the new build process.
3806 * GNU readline (a slightly newer version) is now a subdirectory of the
3807 Python toplevel. It is still not automatically configured (being
3808 totally autoconf-unaware :-). One problem has been solved: typing
3809 Control-C to a readline prompt will now work. The distribution no
3810 longer contains a "super-level" directory (above the python toplevel
3811 directory), and dl, dl-dld and GNU dld are no longer part of the
3812 Python distribution (you can still ftp them from
3813 ftp.cwi.nl:/pub/dynload).
3815 * The DOS functions have been taken out of posixmodule.c and moved
3816 into a separate file dosmodule.c.
3818 * There's now a separate file version.c which contains nothing but
3821 * The actual main program is now contained in config.c (unless NO_MAIN
3822 is defined); pythonmain.c now contains a function realmain() which is
3823 called from config.c's main().
3825 * All files needed to use the built-in module md5 are now contained in
3826 the distribution. The module has been cleaned up considerably.
3832 * The library manual has been split into many more small latex files,
3833 so it is easier to edit Doc/lib.tex file to create a custom library
3834 manual, describing only those modules supported on your system. (This
3835 is not automated though.)
3837 * A fourth manual has been added, titled "Extending and Embedding the
3838 Python Interpreter" (Doc/ext.tex), which collects information about
3839 the interpreter which was previously spread over several files in the
3842 * The entire documentation is now also available on-line for those who
3843 have a WWW browser (e.g. NCSA Mosaic). Point your browser to the URL
3844 "http://www.cwi.nl/~guido/Python.html".
3850 * Strings may now be enclosed in double quotes as well as in single
3851 quotes. There is no difference in interpretation. The repr() of
3852 string objects will use double quotes if the string contains a single
3853 quote and no double quotes. Thanks to Amrit Prem for these changes!
3855 * There is a new keyword 'exec'. This replaces the exec() built-in
3856 function. If a function contains an exec statement, local variable
3857 optimization is not performed for that particular function, thus
3858 making assignment to local variables in exec statements less
3859 confusing. (As a consequence, os.exec and python.exec have been
3862 * There is a new keyword 'lambda'. An expression of the form
3864 lambda <parameters> : <expression>
3866 yields an anonymous function. This is really only syntactic sugar;
3867 you can just as well define a local function using
3869 def some_temporary_name(<parameters>): return <expression>
3871 Lambda expressions are particularly useful in combination with map(),
3872 filter() and reduce(), described below. Thanks to Amrit Prem for
3873 submitting this code (as well as map(), filter(), reduce() and
3880 * The built-in module containing the built-in functions is called
3881 __builtin__ instead of builtin.
3883 * New built-in functions map(), filter() and reduce() perform standard
3884 functional programming operations (though not lazily):
3886 - map(f, seq) returns a new sequence whose items are the items from
3887 seq with f() applied to them.
3889 - filter(f, seq) returns a subsequence of seq consisting of those
3890 items for which f() is true.
3892 - reduce(f, seq, initial) returns a value computed as follows:
3894 for item in seq: acc = f(acc, item)
3897 * New function xrange() creates a "range object". Its arguments are
3898 the same as those of range(), and when used in a for loop a range
3899 objects also behaves identical. The advantage of xrange() over
3900 range() is that its representation (if the range contains many
3901 elements) is much more compact than that of range(). The disadvantage
3902 is that the result cannot be used to initialize a list object or for
3903 the "Python idiom" [RED, GREEN, BLUE] = range(3). On some modern
3904 architectures, benchmarks have shown that "for i in range(...): ..."
3905 actually executes *faster* than "for i in xrange(...): ...", but on
3906 memory starved machines like PCs running DOS range(100000) may be just
3907 too big to be represented at all...
3909 * Built-in function exec() has been replaced by the exec statement --
3916 * Syntax errors are now not printed to stderr by the parser, but
3917 rather the offending line and other relevant information are packed up
3918 in the SyntaxError exception argument. When the main loop catches a
3919 SyntaxError exception it will print the error in the same format as
3920 previously, but at the proper position in the stack traceback.
3922 * You can now set a maximum to the number of traceback entries
3923 printed by assigning to sys.tracebacklimit. The default is 1000.
3925 * The version number in .pyc files has changed yet again.
3927 * It is now possible to have a .pyc file without a corresponding .py
3928 file. (Warning: this may break existing installations if you have an
3929 old .pyc file lingering around somewhere on your module search path
3930 without a corresponding .py file, when there is a .py file for a
3931 module of the same name further down the path -- the new interpreter
3932 will find the first .pyc file and complain about it, while the old
3933 interpreter would ignore it and use the .py file further down.)
3935 * The list sys.builtin_module_names is now sorted and also contains
3936 the names of a few hardwired built-in modules (sys, __main__ and
3939 * A module can now find its own name by accessing the global variable
3940 __name__. Assigning to this variable essentially renames the module
3941 (it should also be stored under a different key in sys.modules).
3942 A neat hack follows from this: a module that wants to execute a main
3943 program when called as a script no longer needs to compare
3944 sys.argv[0]; it can simply do "if __name__ == '__main__': main()".
3946 * When an object is printed by the print statement, its implementation
3947 of str() is used. This means that classes can define __str__(self) to
3948 direct how their instances are printed. This is different from
3949 __repr__(self), which should define an unambigous string
3950 representation of the instance. (If __str__() is not defined, it
3951 defaults to __repr__().)
3953 * Functions and code objects can now be compared meaningfully.
3955 * On systems supporting SunOS or SVR4 style shared libraries, dynamic
3956 loading of modules using shared libraries is automatically configured.
3957 Thanks to Bill Jansen and Denis Severson for contributing this change!
3963 * File objects have acquired a new method writelines() which is the
3964 reverse of readlines(). (It does not actually write lines, just a
3965 list of strings, but the symmetry makes the choice of name OK.)
3971 * Socket objects no longer support the avail() method. Use the select
3972 module instead, or use this function to replace it:
3976 return f in select.select([f], [], [], 0)[0]
3978 * Initialization of stdwin is done differently. It actually modifies
3979 sys.argv (taking out the options the X version of stdwin recognizes)
3980 the first time it is imported.
3982 * A new built-in module parser provides a rudimentary interface to the
3983 python parser. Corresponding standard library modules token and symbol
3984 defines the numeric values of tokens and non-terminal symbols.
3986 * The posix module has aquired new functions setuid(), setgid(),
3987 execve(), and exec() has been renamed to execv().
3989 * The array module is extended with 8-byte object swaps, the 'i'
3990 format character, and a reverse() method. The read() and write()
3991 methods are renamed to fromfile() and tofile().
3993 * The rotor module has freed of portability bugs. This introduces a
3994 backward compatibility problem: strings encoded with the old rotor
3995 module can't be decoded by the new version.
3997 * For select.select(), a timeout (4th) argument of None means the same
3998 as leaving the timeout argument out.
4000 * Module strop (and hence standard library module string) has aquired
4001 a new function: rindex(). Thanks to Amrit Prem!
4003 * Module regex defines a new function symcomp() which uses an extended
4004 regular expression syntax: parenthesized subexpressions may be labeled
4005 using the form "\(<labelname>...\)", and the group() method can return
4006 sub-expressions by name. Thanks to Tracy Tims for these changes!
4008 * Multiple threads are now supported on Solaris 2. Thanks to Sjoerd
4012 Standard library modules
4013 ------------------------
4015 * The library is now split in several subdirectories: all stuff using
4016 stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff
4017 is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all
4018 test modules are in Lib/test. The default module search path will
4019 include all relevant subdirectories by default.
4021 * Module os now knows about trying to import dos. It defines
4022 functions execl(), execle(), execlp() and execvp().
4024 * New module dospath (should be attacked by a DOS hacker though).
4026 * All modules defining classes now define __init__() constructors
4027 instead of init() methods. THIS IS AN INCOMPATIBLE CHANGE!
4029 * Some minor changes and bugfixes module ftplib (mostly Steve
4030 Majewski's suggestions); the debug() method is renamed to
4033 * Some new test modules (not run automatically by testall though):
4034 test_audioop, test_md5, test_rgbimg, test_select.
4036 * Module string now defines rindex() and rfind() in analogy of index()
4037 and find(). It also defines atof() and atol() (and corresponding
4038 exceptions) in analogy to atoi().
4040 * Added help() functions to modules profile and pdb.
4042 * The wdb debugger (now in Lib/stdwin) now shows class or instance
4043 variables on a double click. Thanks to Sjoerd Mullender!
4045 * The (undocumented) module lambda has gone -- you couldn't import it
4046 any more, and it was basically more a demo than a library module...
4049 Multimedia extensions
4050 ---------------------
4052 * The optional built-in modules audioop and imageop are now standard
4053 parts of the interpreter. Thanks to Sjoerd Mullender and Jack Jansen
4054 for contributing this code!
4056 * There's a new operation in audioop: minmax().
4058 * There's a new built-in module called rgbimg which supports portable
4059 efficient reading of SGI RCG image files. Thanks also to Paul
4060 Haeberli for the original code! (Who will contribute a GIF reader?)
4062 * The module aifc is gone -- you should now always use aifc, which has
4063 received a facelift.
4065 * There's a new module sunau., for reading Sun (and NeXT) audio files.
4067 * There's a new module audiodev which provides a uniform interface to
4068 (SGI Indigo and Sun Sparc) audio hardware.
4070 * There's a new module sndhdr which recognizes various sound files by
4071 looking in their header and checking for various magic words.
4077 * Most optimizations below can be configured by compile-time flags.
4078 Thanks to Sjoerd Mullender for submitting these optimizations!
4080 * Small integers (default -1..99) are shared -- i.e. if two different
4081 functions compute the same value it is possible (but not
4082 guaranteed!!!) that they return the same *object*. Python programs
4083 can detect this but should *never* rely on it.
4085 * Empty tuples (which all compare equal) are shared in the same
4088 * Tuples of size up to 20 (default) are put in separate free lists
4091 * There is a compile-time option to cache a string's hash function,
4092 but this appeared to have a negligeable effect, and as it costs 4
4093 bytes per string it is disabled by default.
4099 * The initialization interface has been simplified somewhat. You now
4100 only call "initall()" to initialize the interpreter.
4102 * The previously announced renaming of externally visible identifiers
4103 has not been carried out. It will happen in a later release. Sorry.
4106 Miscellaneous bugs that have been fixed
4107 ---------------------------------------
4109 * All known portability bugs.
4111 * Version 0.9.9 dumped core in <listobject>.sort() which has been
4112 fixed. Thanks to Jaap Vermeulen for fixing this and posting the fix
4113 on the mailing list while I was away!
4115 * Core dump on a format string ending in '%', e.g. in the expression
4118 * The array module yielded a bogus result for concatenation (a+b would
4121 * Some serious memory leaks in strop.split() and strop.splitfields().
4123 * Several problems with the nis module.
4125 * Subtle problem when copying a class method from another class
4126 through assignment (the method could not be called).
4132 * One problem with 64-bit machines remains -- since .pyc files are
4133 portable and use only 4 bytes to represent an integer object, 64-bit
4134 integer literals are silently truncated when written into a .pyc file.
4135 Work-around: use eval('123456789101112').
4137 * The freeze script doesn't work any more. A new and more portable
4138 one can probably be cooked up using tricks from Extensions/mkext.py.
4140 * The dos support hasn't been tested yet. (Really Soon Now we should
4141 have a PC with a working C compiler!)
4144 ===================================
4145 ==> Release 0.9.9 (29 Jul 1993) <==
4146 ===================================
4148 I *believe* these are the main user-visible changes in this release,
4149 but there may be others. SGI users may scan the {src,lib}/ChangeLog
4150 files for improvements of some SGI specific modules, e.g. aifc and
4151 cl. Developers of extension modules should also read src/ChangeLog.
4154 Naming of C symbols used by the Python interpreter
4155 --------------------------------------------------
4157 * This is the last release using the current naming conventions. New
4158 naming conventions are explained in the file misc/NAMING.
4159 Summarizing, all externally visible symbols get (at least) a "Py"
4160 prefix, and most functions are renamed to the standard form
4161 PyModule_FunctionName.
4163 * Writers of extensions are urged to start using the new naming
4164 conventions. The next release will use the new naming conventions
4165 throughout (it will also have a different source directory
4168 * As a result of the preliminary work for the great renaming, many
4169 functions that were accidentally global have been made static.
4175 * There are now modules interfacing to the X11 Toolkit Intrinsics, the
4176 Athena widgets, and the Motif 1.1 widget set. These are not yet
4177 documented except through the examples and README file in the demo/x11
4178 directory. It is expected that this interface will be replaced by a
4179 more powerful and correct one in the future, which may or may not be
4180 backward compatible. In other words, this part of the code is at most
4181 BETA level software! (Note: the rest of Python is rock solid as ever!)
4183 * I understand that the above may be a bit of a disappointment,
4184 however my current schedule does not allow me to change this situation
4185 before putting the release out of the door. By releasing it
4186 undocumented and buggy, at least some of the (working!) demo programs,
4187 like itr (my Internet Talk Radio browser) become available to a larger
4190 * There are also modules interfacing to SGI's "Glx" widget (a GL
4191 window wrapped in a widget) and to NCSA's "HTML" widget (which can
4192 format HyperText Markup Language, the document format used by the
4195 * I've experienced some problems when building the X11 support. In
4196 particular, the Xm and Xaw widget sets don't go together, and it
4197 appears that using X11R5 is better than using X11R4. Also the threads
4198 module and its link time options may spoil things. My own strategy is
4199 to build two Python binaries: one for use with X11 and one without
4200 it, which can contain a richer set of built-in modules. Don't even
4201 *think* of loading the X11 modules dynamically...
4204 Environmental changes
4205 ---------------------
4207 * Compiled files (*.pyc files) created by this Python version are
4208 incompatible with those created by the previous version. Both
4209 versions detect this and silently create a correct version, but it
4210 means that it is not a good idea to use the same library directory for
4211 an old and a new interpreter, since they will start to "fight" over
4214 * When a stack trace is printed, the exception is printed last instead
4215 of first. This means that if the beginning of the stack trace
4216 scrolled out of your window you can still see what exception caused
4219 * Sometimes interrupting a Python operation does not work because it
4220 hangs in a blocking system call. You can now kill the interpreter by
4221 interrupting it three times. The second time you interrupt it, a
4222 message will be printed telling you that the third interrupt will kill
4223 the interpreter. The "sys.exitfunc" feature still makes limited
4224 clean-up possible in this case.
4227 Changes to the command line interface
4228 -------------------------------------
4230 * The python usage message is now much more informative.
4232 * New option -i enters interactive mode after executing a script --
4233 useful for debugging.
4235 * New option -k raises an exception when an expression statement
4236 yields a value other than None.
4238 * For each option there is now also a corresponding environment
4242 Using Python as an embedded language
4243 ------------------------------------
4245 * The distribution now contains (some) documentation on the use of
4246 Python as an "embedded language" in other applications, as well as a
4247 simple example. See the file misc/EMBEDDING and the directory embed/.
4253 * Function local variables are now generally stored in an array and
4254 accessed using an integer indexing operation, instead of through a
4255 dictionary lookup. (This compensates the somewhat slower dictionary
4256 lookup caused by the generalization of the dictionary module.)
4259 Changes to the syntax
4260 ---------------------
4262 * Continuation lines can now *sometimes* be written without a
4263 backslash: if the continuation is contained within nesting (), [] or
4264 {} brackets the \ may be omitted. There's a much improved
4265 python-mode.el in the misc directory which knows about this as well.
4267 * You can no longer use an empty set of parentheses to define a class
4268 without base classes. That is, you no longer write this:
4270 class Foo(): # syntax error
4273 You must write this instead:
4278 This was already the preferred syntax in release 0.9.8 but many
4279 people seemed not to have picked it up. There's a Python script that
4280 fixes old code: demo/scripts/classfix.py.
4282 * There's a new reserved word: "access". The syntax and semantics are
4283 still subject of of research and debate (as well as undocumented), but
4284 the parser knows about the keyword so you must not use it as a
4285 variable, function, or attribute name.
4288 Changes to the semantics of the language proper
4289 -----------------------------------------------
4291 * The following compatibility hack is removed: if a function was
4292 defined with two or more arguments, and called with a single argument
4293 that was a tuple with just as many arguments, the items of this tuple
4294 would be used as the arguments. This is no longer supported.
4297 Changes to the semantics of classes and instances
4298 -------------------------------------------------
4300 * Class variables are now also accessible as instance variables for
4301 reading (assignment creates an instance variable which overrides the
4302 class variable of the same name though).
4304 * If a class attribute is a user-defined function, a new kind of
4305 object is returned: an "unbound method". This contains a pointer to
4306 the class and can only be called with a first argument which is a
4307 member of that class (or a derived class).
4309 * If a class defines a method __init__(self, arg1, ...) then this
4310 method is called when a class instance is created by the classname()
4311 construct. Arguments passed to classname() are passed to the
4312 __init__() method. The __init__() methods of base classes are not
4313 automatically called; the derived __init__() method must call these if
4314 necessary (this was done so the derived __init__() method can choose
4315 the call order and arguments for the base __init__() methods).
4317 * If a class defines a method __del__(self) then this method is called
4318 when an instance of the class is about to be destroyed. This makes it
4319 possible to implement clean-up of external resources attached to the
4320 instance. As with __init__(), the __del__() methods of base classes
4321 are not automatically called. If __del__ manages to store a reference
4322 to the object somewhere, its destruction is postponed; when the object
4323 is again about to be destroyed its __del__() method will be called
4326 * Classes may define a method __hash__(self) to allow their instances
4327 to be used as dictionary keys. This must return a 32-bit integer.
4333 * Function and class objects now know their name (the name given in
4334 the 'def' or 'class' statement that created them).
4336 * Class instances now know their class name.
4339 Additions to built-in operations
4340 --------------------------------
4342 * The % operator with a string left argument implements formatting
4343 similar to sprintf() in C. The right argument is either a single
4344 value or a tuple of values. All features of Standard C sprintf() are
4345 supported except %p.
4347 * Dictionaries now support almost any key type, instead of just
4348 strings. (The key type must be an immutable type or must be a class
4349 instance where the class defines a method __hash__(), in order to
4350 avoid losing track of keys whose value may change.)
4352 * Built-in methods are now compared properly: when comparing x.meth1
4353 and y.meth2, if x is equal to y and the methods are defined by the
4354 same function, x.meth1 compares equal to y.meth2.
4357 Additions to built-in functions
4358 -------------------------------
4360 * str(x) returns a string version of its argument. If the argument is
4361 a string it is returned unchanged, otherwise it returns `x`.
4363 * repr(x) returns the same as `x`. (Some users found it easier to
4364 have this as a function.)
4366 * round(x) returns the floating point number x rounded to an whole
4367 number, represented as a floating point number. round(x, n) returns x
4368 rounded to n digits.
4370 * hasattr(x, name) returns true when x has an attribute with the given
4373 * hash(x) returns a hash code (32-bit integer) of an arbitrary
4374 immutable object's value.
4376 * id(x) returns a unique identifier (32-bit integer) of an arbitrary
4379 * compile() compiles a string to a Python code object.
4381 * exec() and eval() now support execution of code objects.
4384 Changes to the documented part of the library (standard modules)
4385 ----------------------------------------------------------------
4387 * os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
4388 the border case '/foo/..' returns '/' instead of ''.
4390 * A new function string.find() is added with similar semantics to
4391 string.index(); however when it does not find the given substring it
4392 returns -1 instead of raising string.index_error.
4395 Changes to built-in modules
4396 ---------------------------
4398 * New optional module 'array' implements operations on sequences of
4399 integers or floating point numbers of a particular size. This is
4400 useful to manipulate large numerical arrays or to read and write
4401 binary files consisting of numerical data.
4403 * Regular expression objects created by module regex now support a new
4404 method named group(), which returns one or more \(...\) groups by number.
4405 The number of groups is increased from 10 to 100.
4407 * Function compile() in module regex now supports an optional mapping
4408 argument; a variable casefold is added to the module which can be used
4409 as a standard uppercase to lowercase mapping.
4411 * Module time now supports many routines that are defined in the
4412 Standard C time interface (<time.h>): gmtime(), localtime(),
4413 asctime(), ctime(), mktime(), as well as these variables (taken from
4414 System V): timezone, altzone, daylight and tzname. (The corresponding
4415 functions in the undocumented module calendar have been removed; the
4416 undocumented and unfinished module tzparse is now obsolete and will
4417 disappear in a future release.)
4419 * Module strop (the fast built-in version of standard module string)
4420 now uses C's definition of whitespace instead of fixing it to space,
4421 tab and newline; in practice this usually means that vertical tab,
4422 form feed and return are now also considered whitespace. It exports
4423 the string of characters that are considered whitespace as well as the
4424 characters that are considered lowercase or uppercase.
4426 * Module sys now defines the variable builtin_module_names, a list of
4427 names of modules built into the current interpreter (including not
4428 yet imported, but excluding two special modules that always have to be
4429 defined -- sys and builtin).
4431 * Objects created by module sunaudiodev now also support flush() and
4434 * Socket objects created by module socket now support an optional
4435 flags argument for their methods sendto() and recvfrom().
4437 * Module marshal now supports dumping to and loading from strings,
4438 through the functions dumps() and loads().
4440 * Module stdwin now supports some new functionality. You may have to
4441 ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.)
4447 * Fixed comparison of negative long integers.
4449 * The tokenizer no longer botches input lines longer than BUFSIZ.
4451 * Fixed several severe memory leaks in module select.
4453 * Fixed memory leaks in modules socket and sv.
4455 * Fixed memory leak in divmod() for long integers.
4457 * Problems with definition of floatsleep() on Suns fixed.
4459 * Many portability bugs fixed (and undoubtedly new ones added :-).
4462 Changes to the build procedure
4463 ------------------------------
4465 * The Makefile supports some new targets: "make default" and "make
4466 all". Both are by normally equivalent to "make python".
4468 * The Makefile no longer uses $> since it's not supported by all
4471 * The header files now all contain #ifdef constructs designed to make
4472 it safe to include the same header file twice, as well as support for
4473 inclusion from C++ programs (automatic extern "C" { ... } added).
4476 Freezing Python scripts
4477 -----------------------
4479 * There is now some support for "freezing" a Python script as a
4480 stand-alone executable binary file. See the script
4481 demo/scripts/freeze.py. It will require some site-specific tailoring
4482 of the script to get this working, but is quite worthwhile if you write
4483 Python code for other who may not have built and installed Python.
4489 * A new MS-DOS port has been done, using MSC 6.0 (I believe). Thanks,
4490 Marcel van der Peijl! This requires fewer compatibility hacks in
4491 posixmodule.c. The executable is not yet available but will be soon
4492 (check the mailing list).
4494 * The default PYTHONPATH has changed.
4497 Changes for developers of extension modules
4498 -------------------------------------------
4500 * Read src/ChangeLog for full details.
4503 SGI specific changes
4504 --------------------
4506 * Read src/ChangeLog for full details.
4509 ==================================
4510 ==> Release 0.9.8 (9 Jan 1993) <==
4511 ==================================
4513 I claim no completeness here, but I've tried my best to scan the log
4514 files throughout my source tree for interesting bits of news. A more
4515 complete account of the changes is to be found in the various
4516 ChangeLog files. See also "News for release 0.9.7beta" below if you're
4517 still using release 0.9.6, and the file HISTORY if you have an even
4523 Changes to the language proper
4524 ------------------------------
4526 There's only one big change: the conformance checking for function
4527 argument lists (of user-defined functions only) is stricter. Earlier,
4528 you could get away with the following:
4530 (a) define a function of one argument and call it with any
4531 number of arguments; if the actual argument count wasn't
4532 one, the function would receive a tuple containing the
4533 arguments arguments (an empty tuple if there were none).
4535 (b) define a function of two arguments, and call it with more
4536 than two arguments; if there were more than two arguments,
4537 the second argument would be passed as a tuple containing
4538 the second and further actual arguments.
4540 (Note that an argument (formal or actual) that is a tuple is counted as
4541 one; these rules don't apply inside such tuples, only at the top level
4542 of the argument list.)
4544 Case (a) was needed to accommodate variable-length argument lists;
4545 there is now an explicit "varargs" feature (precede the last argument
4546 with a '*'). Case (b) was needed for compatibility with old class
4547 definitions: up to release 0.9.4 a method with more than one argument
4548 had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
4549 Version 0.9.6 provide better ways to handle both casees, bot provided
4550 backward compatibility; version 0.9.8 retracts the compatibility hacks
4551 since they also cause confusing behavior if a function is called with
4552 the wrong number of arguments.
4554 There's a script that helps converting classes that still rely on (b),
4555 provided their methods' first argument is called "self":
4556 demo/scripts/methfix.py.
4558 If this change breaks lots of code you have developed locally, try
4559 #defining COMPAT_HACKS in ceval.c.
4561 (There's a third compatibility hack, which is the reverse of (a): if a
4562 function is defined with two or more arguments, and called with a
4563 single argument that is a tuple with just as many arguments, the items
4564 of this tuple will be used as the arguments. Although this can (and
4565 should!) be done using the built-in function apply() instead, it isn't
4569 One minor change: comparing instance methods works like expected, so
4570 that if x is an instance of a user-defined class and has a method m,
4571 then (x.m==x.m) yields 1.
4574 The following was already present in 0.9.7beta, but not explicitly
4575 mentioned in the NEWS file: user-defined classes can now define types
4576 that behave in almost allrespects like numbers. See
4577 demo/classes/Rat.py for a simple example.
4580 Changes to the build process
4581 ----------------------------
4583 The Configure.py script and the Makefile has been made somewhat more
4584 bullet-proof, after reports of (minor) trouble on certain platforms.
4586 There is now a script to patch Makefile and config.c to add a new
4587 optional built-in module: Addmodule.sh. Read the script before using!
4589 Useing Addmodule.sh, all optional modules can now be configured at
4590 compile time using Configure.py, so there are no modules left that
4591 require dynamic loading.
4593 The Makefile has been fixed to make it easier to use with the VPATH
4594 feature of some Make versions (e.g. SunOS).
4597 Changes affecting portability
4598 -----------------------------
4600 Several minor portability problems have been solved, e.g. "malloc.h"
4601 has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
4602 the system now tolerates malloc(0) returning 0.
4604 For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
4605 distributed with Python. This solves several minor problems, in
4606 particular scripts invoked using #! can now use dynamic loading.
4609 Changes to the interpreter interface
4610 ------------------------------------
4612 On popular demand, there's finally a "profile" feature for interactive
4613 use of the interpreter. If the environment variable $PYTHONSTARTUP is
4614 set to the name of an existing file, Python statements in this file
4615 are executed when the interpreter is started in interactive mode.
4617 There is a new clean-up mechanism, complementing try...finally: if you
4618 assign a function object to sys.exitfunc, it will be called when
4619 Python exits or receives a SIGTERM or SIGHUP signal.
4621 The interpreter is now generally assumed to live in
4622 /usr/local/bin/python (as opposed to /usr/local/python). The script
4623 demo/scripts/fixps.py will update old scripts in place (you can easily
4624 modify it to do other similar changes).
4626 Most I/O that uses sys.stdin/stdout/stderr will now use any object
4627 assigned to those names as long as the object supports readline() or
4630 The parser stack has been increased to 500 to accommodate more
4631 complicated expressions (7 levels used to be the practical maximum,
4634 The limit on the size of the *run-time* stack has completely been
4635 removed -- this means that tuple or list displays can contain any
4636 number of elements (formerly more than 50 would crash the
4640 Changes to existing built-in functions and methods
4641 --------------------------------------------------
4643 The built-in functions int(), long(), float(), oct() and hex() now
4644 also apply to class instalces that define corresponding methods
4648 New built-in functions
4649 ----------------------
4651 The new functions str() and repr() convert any object to a string.
4652 The function repr(x) is in all respects equivalent to `x` -- some
4653 people prefer a function for this. The function str(x) does the same
4654 except if x is already a string -- then it returns x unchanged
4655 (repr(x) adds quotes and escapes "funny" characters as octal escapes).
4657 The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
4660 Changes to general built-in modules
4661 -----------------------------------
4663 The time module's functions are more general: time() returns a
4664 floating point number and sleep() accepts one. Their accuracies
4665 depends on the precision of the system clock. Millisleep is no longer
4666 needed (although it still exists for now), but millitimer is still
4667 needed since on some systems wall clock time is only available with
4668 seconds precision, while a source of more precise time exists that
4669 isn't synchronized with the wall clock. (On UNIX systems that support
4670 the BSD gettimeofday() function, time.time() is as time.millitimer().)
4672 The string representation of a file object now includes an address:
4673 '<file 'filename', mode 'r' at #######>' where ###### is a hex number
4674 (the object's address) to make it unique.
4676 New functions added to posix: nice(), setpgrp(), and if your system
4677 supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
4679 Improvements to the socket module: socket objects have new methods
4680 getpeername() and getsockname(), and the {get,set}sockopt methods can
4681 now get/set any kind of option using strings built with the new struct
4682 module. And there's a new function fromfd() which creates a socket
4683 object given a file descriptor (useful for servers started by inetd,
4684 which have a socket connected to stdin and stdout).
4687 Changes to SGI-specific built-in modules
4688 ----------------------------------------
4690 The FORMS library interface (fl) now requires FORMS 2.1a. Some new
4691 functions have been added and some bugs have been fixed.
4693 Additions to al (audio library interface): added getname(),
4694 getdefault() and getminmax().
4696 The gl modules doesn't call "foreground()" when initialized (this
4697 caused some problems) like it dit in 0.9.7beta (but not before).
4698 There's a new gl function 'gversion() which returns a version string.
4700 The interface to sv (Indigo video interface) has totally changed.
4701 (Sorry, still no documentation, but see the examples in
4702 demo/sgi/{sv,video}.)
4705 Changes to standard library modules
4706 -----------------------------------
4708 Most functions in module string are now much faster: they're actually
4709 implemented in C. The module containing the C versions is called
4710 "strop" but you should still import "string" since strop doesn't
4711 provide all the interfaces defined in string (and strop may be renamed
4712 to string when it is complete in a future release).
4714 string.index() now accepts an optional third argument giving an index
4715 where to start searching in the first argument, so you can find second
4716 and further occurrences (this is similar to the regular expression
4717 functions in regex).
4719 The definition of what string.splitfields(anything, '') should return
4720 is changed for the last time: it returns a singleton list containing
4721 its whole first argument unchanged. This is compatible with
4722 regsub.split() which also ignores empty delimiter matches.
4724 posixpath, macpath: added dirname() and normpath() (and basename() to
4727 The mainloop module (for use with stdwin) can now demultiplex input
4728 from other sources, as long as they can be polled with select().
4731 New built-in modules
4732 --------------------
4734 Module struct defines functions to pack/unpack values to/from strings
4735 representing binary values in native byte order.
4737 Module strop implements C versions of many functions from string (see
4740 Optional module fcntl defines interfaces to fcntl() and ioctl() --
4741 UNIX only. (Not yet properly documented -- see however src/fcntl.doc.)
4743 Optional module mpz defines an interface to an altaernative long
4744 integer implementation, the GNU MPZ library.
4746 Optional module md5 uses the GNU MPZ library to calculate MD5
4747 signatures of strings.
4749 There are also optional new modules specific to SGI machines: imageop
4750 defines some simple operations to images represented as strings; sv
4751 interfaces to the Indigo video board; cl interfaces to the (yet
4752 unreleased) compression library.
4755 New standard library modules
4756 ----------------------------
4758 (Unfortunately the following modules are not all documented; read the
4759 sources to find out more about them!)
4761 autotest: run testall without showing any output unless it differs
4762 from the expected output
4764 bisect: use bisection to insert or find an item in a sorted list
4766 colorsys: defines conversions between various color systems (e.g. RGB
4769 nntplib: a client interface to NNTP servers
4771 pipes: utility to construct pipeline from templates, e.g. for
4772 conversion from one file format to another using several utilities.
4774 regsub: contains three functions that are more or less compatible with
4775 awk functions of the same name: sub() and gsub() do string
4776 substitution, split() splits a string using a regular expression to
4777 define how separators are define.
4779 test_types: test operations on the built-in types of Python
4781 toaiff: convert various audio file formats to AIFF format
4783 tzparse: parse the TZ environment parameter (this may be less general
4784 than it could be, let me know if you fix it).
4786 (Note that the obsolete module "path" no longer exists.)
4789 New SGI-specific library modules
4790 --------------------------------
4792 CL: constants for use with the built-in compression library interface (cl)
4794 Queue: a multi-producer, multi-consumer queue class implemented for
4795 use with the built-in thread module
4797 SOCKET: constants for use with built-in module socket, e.g. to set/get
4798 socket options. This is SGI-specific because the constants to be
4799 passed are system-dependent. You can generate a version for your own
4800 system by running the script demo/scripts/h2py.py with
4801 /usr/include/sys/socket.h as input.
4803 cddb: interface to the database used the the CD player
4805 torgb: convert various image file types to rgb format (requires pbmplus)
4811 There's an experimental interface to define Sun RPC clients and
4812 servers in demo/rpc.
4814 There's a collection of interfaces to WWW, WAIS and Gopher (both
4815 Python classes and program providing a user interface) in demo/www.
4816 This includes a program texi2html.py which converts texinfo files to
4817 HTML files (the format used hy WWW).
4819 The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
4821 For SGI systems, there's a whole collection of programs and classes
4822 that make use of the Indigo video board in demo/sgi/{sv,video}. This
4823 represents a significant amount of work that we're giving away!
4825 There are demos "rsa" and "md5test" that exercise the mpz and md5
4826 modules, respectively. The rsa demo is a complete implementation of
4827 the RSA public-key cryptosystem!
4829 A bunch of games and examples submitted by Stoffel Erasmus have been
4830 included in demo/stoffel.
4832 There are miscellaneous new files in some existing demo
4833 subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
4834 sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
4836 There are also many minor changes to existing files, but I'm too lazy
4837 to run a diff and note the differences -- you can do this yourself if
4838 you save the old distribution's demos. One highlight: the
4839 stdwin/python.py demo is much improved!
4842 Changes to the documentation
4843 ----------------------------
4845 The LaTeX source for the library uses different macros to enable it to
4846 be converted to texinfo, and from there to INFO or HTML format so it
4847 can be browsed as a hypertext. The net result is that you can now
4848 read the Python library documentation in Emacs info mode!
4851 Changes to the source code that affect C extension writers
4852 ----------------------------------------------------------
4854 The function strdup() no longer exists (it was used only in one places
4855 and is somewhat of a a portability problem sice some systems have the
4856 same function in their C library.
4858 The functions NEW() and RENEW() allocate one spare byte to guard
4859 against a NULL return from malloc(0) being taken for an error, but
4860 this should not be relied upon.
4863 =========================
4864 ==> Release 0.9.7beta <==
4865 =========================
4868 Changes to the language proper
4869 ------------------------------
4871 User-defined classes can now implement operations invoked through
4872 special syntax, such as x[i] or `x` by defining methods named
4873 __getitem__(self, i) or __repr__(self), etc.
4876 Changes to the build process
4877 ----------------------------
4879 Instead of extensive manual editing of the Makefile to select
4880 compile-time options, you can now run a Configure.py script.
4881 The Makefile as distributed builds a minimal interpreter sufficient to
4882 run Configure.py. See also misc/BUILD
4884 The Makefile now includes more "utility" targets, e.g. install and
4887 Using the provided strtod.c and strtol.c are now separate options, as
4888 on the Sun the provided strtod.c dumps core :-(
4890 The regex module is now an option chosen by the Makefile, since some
4891 (old) C compilers choke on regexpr.c
4894 Changes affecting portability
4895 -----------------------------
4897 You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
4900 Dynamic loading is now supported for Sun (and other non-COFF systems)
4901 throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
4904 The system-dependent code for the use of the select() system call is
4905 moved to one file: myselect.h
4907 Thanks to Jaap Vermeulen, the code should now port cleanly to the
4911 Changes to the interpreter interface
4912 ------------------------------------
4914 The interpretation of $PYTHONPATH in the environment is different: it
4915 is inserted in front of the default path instead of overriding it
4918 Changes to existing built-in functions and methods
4919 --------------------------------------------------
4921 List objects now support an optional argument to their sort() method,
4922 which is a comparison function similar to qsort(3) in C
4924 File objects now have a method fileno(), used by the new select module
4928 New built-in function
4929 ---------------------
4931 coerce(x, y): take two numbers and return a tuple containing them
4932 both converted to a common type
4935 Changes to built-in modules
4936 ---------------------------
4938 sys: fixed core dumps in settrace() and setprofile()
4940 socket: added socket methods setsockopt() and getsockopt(); and
4941 fileno(), used by the new select module (see below)
4943 stdwin: added fileno() == connectionnumber(), in support of new module
4946 posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
4950 fl: added several new functions, fixed several obscure bugs, adapted
4954 Changes to standard modules
4955 ---------------------------
4957 posixpath: changed implementation of ismount()
4959 string: atoi() no longer mistakes leading zero for octal number
4964 New built-in modules
4965 --------------------
4967 Modules marked "dynamic only" are not configured at compile time but
4968 can be loaded dynamically. You need to turn on the DL or DLD option in
4969 the Makefile for support dynamic loading of modules (this requires
4972 select: interfaces to the BSD select() system call
4974 dbm: interfaces to the (new) dbm library (dynamic only)
4976 nis: interfaces to some NIS functions (aka yellow pages)
4978 thread: limited form of multiple threads (sgi only)
4980 audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
4981 coding (dynamic only)
4983 cd: interface to Indigo SCSI CDROM player audio library (sgi only)
4985 jpeg: read files in JPEG format (dynamic only, sgi only; needs
4988 imgfile: read SGI image files (dynamic only, sgi only)
4990 sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
4992 sv: interface to Indigo video library (sgi only)
4994 pc: a minimal set of MS-DOS interfaces (MS-DOS only)
4996 rotor: encryption, by Lance Ellinghouse (dynamic only)
4999 New standard modules
5000 --------------------
5002 Not all these modules are documented. Read the source:
5003 lib/<modulename>.py. Sometimes a file lib/<modulename>.doc contains
5004 additional documentation.
5006 imghdr: recognizes image file headers
5008 sndhdr: recognizes sound file headers
5010 profile: print run-time statistics of Python code
5012 readcd, cdplayer: companion modules for built-in module cd (sgi only)
5014 emacs: interface to Emacs using py-connect.el (see below).
5016 SOCKET: symbolic constant definitions for socket options
5018 SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
5020 SV: symbolic constat definitions for sv (sgi only)
5022 CD: symbolic constat definitions for cd (sgi only)
5028 scripts/pp.py: execute Python as a filter with a Perl-like command
5031 classes/: examples using the new class features
5033 threads/: examples using the new thread module
5035 sgi/cd/: examples using the new cd module
5038 Changes to the documentation
5039 ----------------------------
5041 The last-minute syntax changes of release 0.9.6 are now reflected
5042 everywhere in the manuals
5044 The reference manual has a new section (3.2) on implementing new kinds
5045 of numbers, sequences or mappings with user classes
5047 Classes are now treated extensively in the tutorial (chapter 9)
5049 Slightly restructured the system-dependent chapters of the library
5052 The file misc/EXTENDING incorporates documentation for mkvalue() and
5053 a new section on error handling
5055 The files misc/CLASSES and misc/ERRORS are no longer necessary
5057 The doc/Makefile now creates PostScript files automatically
5060 Miscellaneous changes
5061 ---------------------
5063 Incorporated Tim Peters' changes to python-mode.el, it's now version
5066 A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
5067 program running in an Emacs buffer execute Emacs lisp code. The
5068 necessary Python code is in lib/emacs.py. The Emacs code is
5069 misc/py-connect.el (it needs some external Emacs lisp code)
5072 Changes to the source code that affect C extension writers
5073 ----------------------------------------------------------
5075 New service function mkvalue() to construct a Python object from C
5076 values according to a "format" string a la getargs()
5078 Most functions from pythonmain.c moved to new pythonrun.c which is
5079 in libpython.a. This should make embedded versions of Python easier
5081 ceval.h is split in eval.h (which needs compile.h and only declares
5082 eval_code) and ceval.h (which doesn't need compile.hand declares the
5085 ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
5086 improve the parallellism of multi-threaded programs by letting other
5087 Python code run when a blocking system call or something similar is
5090 In structmember.[ch], new member types BYTE, CHAR and unsigned
5091 variants have been added
5093 New file xxmodule.c is a template for new extension modules.
5096 ==================================
5097 ==> RELEASE 0.9.6 (6 Apr 1992) <==
5098 ==================================
5101 - Restructured the misc subdirectory
5102 - Reference manual completed, library manual much extended (with indexes!)
5103 - the GNU Readline library is now distributed standard with Python
5104 - the script "../demo/scripts/classfix.py" fixes Python modules using old
5106 - Emacs python-mode.el (was python.el) vastly improved (thanks, Tim!)
5107 - Because of the GNU copyleft business I am not using the GNU regular
5108 expression implementation but a free re-implementation by Tatu Ylonen
5109 that recently appeared in comp.sources.misc (Bravo, Tatu!)
5111 New features in 0.9.6:
5112 - stricter try stmt syntax: cannot mix except and finally clauses on 1 try
5113 - New module 'os' supplants modules 'mac' and 'posix' for most cases;
5114 module 'path' is replaced by 'os.path'
5115 - os.path.split() return value differs from that of old path.split()
5116 - sys.exc_type, sys.exc_value, sys.exc_traceback are set to the exception
5117 currently being handled
5118 - sys.last_type, sys.last_value, sys.last_traceback remember last unhandled
5120 - New function string.expandtabs() expands tabs in a string
5121 - Added times() interface to posix (user & sys time of process & children)
5122 - Added uname() interface to posix (returns OS type, hostname, etc.)
5123 - New built-in function execfile() is like exec() but from a file
5124 - Functions exec() and eval() are less picky about whitespace/newlines
5125 - New built-in functions getattr() and setattr() access arbitrary attributes
5126 - More generic argument handling in built-in functions (see "./EXTENDING")
5127 - Dynamic loading of modules written in C or C++ (see "./DYNLOAD")
5128 - Division and modulo for long and plain integers with negative operands
5129 have changed; a/b is now floor(float(a)/float(b)) and a%b is defined
5130 as a-(a/b)*b. So now the outcome of divmod(a,b) is the same as
5131 (a/b, a%b) for integers. For floats, % is also changed, but of course
5132 / is unchanged, and divmod(x,y) does not yield (x/y, x%y)...
5133 - A function with explicit variable-length argument list can be declared
5134 like this: def f(*args): ...; or even like this: def f(a, b, *rest): ...
5135 - Code tracing and profiling features have been added, and two source
5136 code debuggers are provided in the library (pdb.py, tty-oriented,
5137 and wdb, window-oriented); you can now step through Python programs!
5138 See sys.settrace() and sys.setprofile(), and "../lib/pdb.doc"
5139 - '==' is now the only equality operator; "../demo/scripts/eqfix.py" is
5140 a script that fixes old Python modules
5141 - Plain integer right shift now uses sign extension
5142 - Long integer shift/mask operations now simulate 2's complement
5143 to give more useful results for negative operands
5144 - Changed/added range checks for long/plain integer shifts
5145 - Options found after "-c command" are now passed to the command in sys.argv
5146 (note subtle incompatiblity with "python -c command -- -options"!)
5147 - Module stdwin is better protected against touching objects after they've
5148 been closed; menus can now also be closed explicitly
5149 - Stdwin now uses its own exception (stdwin.error)
5151 New features in 0.9.5 (released as Macintosh application only, 2 Jan 1992):
5152 - dictionary objects can now be compared properly; e.g., {}=={} is true
5153 - new exception SystemExit causes termination if not caught;
5154 it is raised by sys.exit() so that 'finally' clauses can clean up,
5155 and it may even be caught. It does work interactively!
5156 - new module "regex" implements GNU Emacs style regular expressions;
5157 module "regexp" is rewritten in Python for backward compatibility
5158 - formal parameter lists may contain trailing commas
5160 Bugs fixed in 0.9.6:
5161 - assigning to or deleting a list item with a negative index dumped core
5162 - divmod(-10L,5L) returned (-3L, 5L) instead of (-2L, 0L)
5164 Bugs fixed in 0.9.5:
5165 - masking operations involving negative long integers gave wrong results
5168 ===================================
5169 ==> RELEASE 0.9.4 (24 Dec 1991) <==
5170 ===================================
5172 - new function argument handling (see below)
5173 - built-in apply(func, args) means func(args[0], args[1], ...)
5174 - new, more refined exceptions
5175 - new exception string values (NameError = 'NameError' etc.)
5176 - better checking for math exceptions
5177 - for sequences (string/tuple/list), x[-i] is now equivalent to x[len(x)-i]
5178 - fixed list assignment bug: "a[1:1] = a" now works correctly
5179 - new class syntax, without extraneous parentheses
5180 - new 'global' statement to assign global variables from within a function
5186 You can now declare a base class as follows:
5188 class B: # Was: class B():
5189 def some_method(self): ...
5192 and a derived class thusly:
5194 class D(B): # Was: class D() = B():
5195 def another_method(self, arg): ...
5197 Multiple inheritance looks like this:
5199 class M(B, D): # Was: class M() = B(), D():
5200 def this_or_that_method(self, arg): ...
5202 The old syntax is still accepted by Python 0.9.4, but will disappear
5203 in Python 1.0 (to be posted to comp.sources).
5206 New 'global' statement
5207 ----------------------
5209 Every now and then you have a global variable in a module that you
5210 want to change from within a function in that module -- say, a count
5211 of calls to a function, or an option flag, etc. Until now this was
5212 not directly possible. While several kludges are known that
5213 circumvent the problem, and often the need for a global variable can
5214 be avoided by rewriting the module as a class, this does not always
5215 lead to clearer code.
5217 The 'global' statement solves this dilemma. Its occurrence in a
5218 function body means that, for the duration of that function, the
5219 names listed there refer to global variables. For instance:
5224 def add_to_total(amount):
5226 total = total + amount
5229 'global' must be repeated in each function where it is needed. The
5230 names listed in a 'global' statement must not be used in the function
5231 before the statement is reached.
5233 Remember that you don't need to use 'global' if you only want to *use*
5234 a global variable in a function; nor do you need ot for assignments to
5235 parts of global variables (e.g., list or dictionary items or
5236 attributes of class instances). This has not changed; in fact
5237 assignment to part of a global variable was the standard workaround.
5243 Several new exceptions have been defined, to distinguish more clearly
5244 between different types of errors.
5248 AttributeError reference to non-existing attribute NameError
5249 IOError unexpected I/O error RuntimeError
5250 ImportError import of non-existing module or name NameError
5251 IndexError invalid string, tuple or list index RuntimeError
5252 KeyError key not in dictionary RuntimeError
5253 OverflowError numeric overflow RuntimeError
5254 SyntaxError invalid syntax RuntimeError
5255 ValueError invalid argument value RuntimeError
5256 ZeroDivisionError division by zero RuntimeError
5258 The string value of each exception is now its name -- this makes it
5259 easier to experimentally find out which operations raise which
5262 >>> KeyboardInterrupt
5267 New argument passing semantics
5268 ------------------------------
5270 Off-line discussions with Steve Majewski and Daniel LaLiberte have
5271 convinced me that Python's parameter mechanism could be changed in a
5272 way that made both of them happy (I hope), kept me happy, fixed a
5273 number of outstanding problems, and, given some backward compatibility
5274 provisions, would only break a very small amount of existing code --
5275 probably all mine anyway. In fact I suspect that most Python users
5276 will hardly notice the difference. And yet it has cost me at least
5277 one sleepless night to decide to make the change...
5279 Philosophically, the change is quite radical (to me, anyway): a
5280 function is no longer called with either zero or one argument, which
5281 is a tuple if there appear to be more arguments. Every function now
5282 has an argument list containing 0, 1 or more arguments. This list is
5283 always implemented as a tuple, and it is a (run-time) error if a
5284 function is called with a different number of arguments than expected.
5286 What's the difference? you may ask. The answer is, very little unless
5287 you want to write variadic functions -- functions that may be called
5288 with a variable number of arguments. Formerly, you could write a
5289 function that accepted one or more arguments with little trouble, but
5290 writing a function that could be called with either 0 or 1 argument
5291 (or more) was next to impossible. This is now a piece of cake: you
5292 can simply declare an argument that receives the entire argument
5293 tuple, and check its length -- it will be of size 0 if there are no
5296 Another anomaly of the old system was the way multi-argument methods
5297 (in classes) had to be declared, e.g.:
5300 def init(self, (x, y, color)): ...
5301 def setcolor(self, color): ...
5302 dev moveto(self, (x, y)): ...
5305 Using the new scheme there is no need to enclose the method arguments
5306 in an extra set of parentheses, so the above class could become:
5309 def init(self, x, y, color): ...
5310 def setcolor(self, color): ...
5311 dev moveto(self, x, y): ...
5314 That is, the equivalence rule between methods and functions has
5315 changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y)
5316 while formerly it was equivalent to Point.moveto(p,(x,y)).
5318 A special backward compatibility rule makes that the old version also
5319 still works: whenever a function with exactly two arguments (at the top
5320 level) is called with more than two arguments, the second and further
5321 arguments are packed into a tuple and passed as the second argument.
5322 This rule is invoked independently of whether the function is actually a
5323 method, so there is a slight chance that some erroneous calls of
5324 functions expecting two arguments with more than that number of
5325 arguments go undetected at first -- when the function tries to use the
5326 second argument it may find it is a tuple instead of what was expected.
5327 Note that this rule will be removed from future versions of the
5328 language; it is a backward compatibility provision *only*.
5330 Two other rules and a new built-in function handle conversion between
5331 tuples and argument lists:
5333 Rule (a): when a function with more than one argument is called with a
5334 single argument that is a tuple of the right size, the tuple's items
5335 are used as arguments.
5337 Rule (b): when a function with exactly one argument receives no
5338 arguments or more than one, that one argument will receive a tuple
5339 containing the arguments (the tuple will be empty if there were no
5343 A new built-in function, apply(), was added to support functions that
5344 need to call other functions with a constructed argument list. The call
5346 apply(function, tuple)
5350 function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
5353 While no new argument syntax was added in this phase, it would now be
5354 quite sensible to add explicit syntax to Python for default argument
5355 values (as in C++ or Modula-3), or a "rest" argument to receive the
5356 remaining arguments of a variable-length argument list.
5359 ========================================================
5360 ==> Release 0.9.3 (never made available outside CWI) <==
5361 ========================================================
5363 - string sys.version shows current version (also printed on interactive entry)
5364 - more detailed exceptions, e.g., IOError, ZeroDivisionError, etc.
5365 - 'global' statement to declare module-global variables assigned in functions.
5366 - new class declaration syntax: class C(Base1, Base2, ...): suite
5367 (the old syntax is still accepted -- be sure to convert your classes now!)
5368 - C shifting and masking operators: << >> ~ & ^ | (for ints and longs).
5369 - C comparison operators: == != (the old = and <> remain valid).
5370 - floating point numbers may now start with a period (e.g., .14).
5371 - definition of integer division tightened (always truncates towards zero).
5372 - new builtins hex(x), oct(x) return hex/octal string from (long) integer.
5373 - new list method l.count(x) returns the number of occurrences of x in l.
5374 - new SGI module: al (Indigo and 4D/35 audio library).
5375 - the FORMS interface (modules fl and FL) now uses FORMS 2.0
5376 - module gl: added lrect{read,write}, rectzoom and pixmode;
5377 added (non-GL) functions (un)packrect.
5378 - new socket method: s.allowbroadcast(flag).
5379 - many objects support __dict__, __methods__ or __members__.
5380 - dir() lists anything that has __dict__.
5381 - class attributes are no longer read-only.
5382 - classes support __bases__, instances support __class__ (and __dict__).
5383 - divmod() now also works for floats.
5384 - fixed obscure bug in eval('1 ').
5387 ===================================
5388 ==> Release 0.9.2 (Autumn 1991) <==
5389 ===================================
5394 - tutorial now (almost) complete; library reference reorganized
5395 - new syntax: continue statement; semicolons; dictionary constructors;
5396 restrictions on blank lines in source files removed
5397 - dramatically improved module load time through precompiled modules
5398 - arbitrary precision integers: compute 2 to the power 1000 and more...
5399 - arithmetic operators now accept mixed type operands, e.g., 3.14/4
5400 - more operations on list: remove, index, reverse; repetition
5401 - improved/new file operations: readlines, seek, tell, flush, ...
5402 - process management added to the posix module: fork/exec/wait/kill etc.
5403 - BSD socket operations (with example servers and clients!)
5404 - many new STDWIN features (color, fonts, polygons, ...)
5405 - new SGI modules: font manager and FORMS library interface
5408 Extended list of changes in 0.9.2
5409 ---------------------------------
5411 Here is a summary of the most important user-visible changes in 0.9.2,
5412 in somewhat arbitrary order. Changes in later versions are listed in
5413 the "highlights" section above.
5416 1. Changes to the interpreter proper
5418 - Simple statements can now be separated by semicolons.
5419 If you write "if t: s1; s2", both s1 and s2 are executed
5421 - The 'continue' statement was added, with semantics as in C.
5422 - Dictionary displays are now allowed on input: {key: value, ...}.
5423 - Blank lines and lines bearing only a comment no longer need to
5424 be indented properly. (A completely empty line still ends a multi-
5425 line statement interactively.)
5426 - Mixed arithmetic is supported, 1 compares equal to 1.0, etc.
5427 - Option "-c command" to execute statements from the command line
5428 - Compiled versions of modules are cached in ".pyc" files, giving a
5429 dramatic improvement of start-up time
5430 - Other, smaller speed improvements, e.g., extracting characters from
5431 strings, looking up single-character keys, and looking up global
5433 - Interrupting a print operation raises KeyboardInterrupt instead of
5434 only cancelling the print operation
5435 - Fixed various portability problems (it now passes gcc with only
5436 warnings -- more Standard C compatibility will be provided in later
5438 - Source is prepared for porting to MS-DOS
5439 - Numeric constants are now checked for overflow (this requires
5440 standard-conforming strtol() and strtod() functions; a correct
5441 strtol() implementation is provided, but the strtod() provided
5442 relies on atof() for everything, including error checking
5445 2. Changes to the built-in types, functions and modules
5447 - New module socket: interface to BSD socket primitives
5448 - New modules pwd and grp: access the UNIX password and group databases
5449 - (SGI only:) New module "fm" interfaces to the SGI IRIX Font Manager
5450 - (SGI only:) New module "fl" interfaces to Mark Overmars' FORMS library
5451 - New numeric type: long integer, for unlimited precision
5452 - integer constants suffixed with 'L' or 'l' are long integers
5453 - new built-in function long(x) converts int or float to long
5454 - int() and float() now also convert from long integers
5455 - New built-in function:
5456 - pow(x, y) returns x to the power y
5457 - New operation and methods for lists:
5458 - l*n returns a new list consisting of n concatenated copies of l
5459 - l.remove(x) removes the first occurrence of the value x from l
5460 - l.index(x) returns the index of the first occurrence of x in l
5461 - l.reverse() reverses l in place
5462 - New operation for tuples:
5463 - t*n returns a tuple consisting of n concatenated copies of t
5464 - Improved file handling:
5465 - f.readline() no longer restricts the line length, is faster,
5466 and isn't confused by null bytes; same for raw_input()
5467 - f.read() without arguments reads the entire (rest of the) file
5468 - mixing of print and sys.stdout.write() has different effect
5469 - New methods for files:
5470 - f.readlines() returns a list containing the lines of the file,
5471 as read with f.readline()
5472 - f.flush(), f.tell(), f.seek() call their stdio counterparts
5473 - f.isatty() tests for "tty-ness"
5474 - New posix functions:
5475 - _exit(), exec(), fork(), getpid(), getppid(), kill(), wait()
5476 - popen() returns a file object connected to a pipe
5477 - utime() replaces utimes() (the latter is not a POSIX name)
5478 - New stdwin features, including:
5481 - scroll bars made optional
5483 - filled and xor shapes
5484 - text editing objects now have a 'settext' method
5487 3. Changes to the standard library
5489 - Name change: the functions path.cat and macpath.cat are now called
5490 path.join and macpath.join
5491 - Added new modules: formatter, mutex, persist, sched, mainloop
5492 - Added some modules and functionality to the "widget set" (which is
5493 still under development, so please bear with me):
5494 DirList, FormSplit, TextEdit, WindowSched
5495 - Fixed module testall to work non-interactively
5497 - added functions join() and joinfields()
5498 - fixed center() to work correct and make it "transitive"
5499 - Obsolete modules were removed: util, minmax
5500 - Some modules were moved to the demo directory
5503 4. Changes to the demonstration programs
5505 - Added new useful scipts: byteyears, eptags, fact, from, lfact,
5506 objgraph, pdeps, pi, primes, ptags, which
5507 - Added a bunch of socket demos
5508 - Doubled the speed of ptags
5509 - Added new stdwin demos: microedit, miniedit
5510 - Added a windowing interface to the Python interpreter: python (most
5512 - Added a browser for Emacs info files: demo/stdwin/ibrowse
5513 (yes, I plan to put all STDWIN and Python documentation in texinfo
5517 5. Other changes to the distribution
5519 - An Emacs Lisp file "python.el" is provided to facilitate editing
5520 Python programs in GNU Emacs (slightly improved since posted to
5522 - Some info on writing an extension in C is provided
5523 - Some info on building Python on non-UNIX platforms is provided
5526 =====================================
5527 ==> Release 0.9.1 (February 1991) <==
5528 =====================================
5530 - Micro changes only
5531 - Added file "patchlevel.h"
5534 =====================================
5535 ==> Release 0.9.0 (February 1991) <==
5536 =====================================
5538 Original posting to alt.sources.