(py-electric-colon): use a save-excursion instead of a progn in
[python/dscho.git] / Misc / HISTORY
blob2e9ed48991144730a1a12531f78f48bfd7ec5211
1 Python history
2 --------------
4 This file contains the release messages for previous Python releases
5 (slightly edited to adapt them to the format of this file).  As you
6 read on you go back to the dark ages of Python's history.
9 ===================================
10 ==> Release 1.1.1 (10 Nov 1994) <==
11 ===================================
13 This is a pure bugfix release again.  See the ChangeLog file for details.
15 One exception: a few new features were added to tkinter.
18 =================================
19 ==> Release 1.1 (11 Oct 1994) <==
20 =================================
22 This release adds several new features, improved configuration and
23 portability, and fixes more bugs than I can list here (including some
24 memory leaks).
26 The source compiles and runs out of the box on more platforms than
27 ever -- including Windows NT.  Makefiles or projects for a variety of
28 non-UNIX platforms are provided.
30 APOLOGY: some new features are badly documented or not at all.  I had
31 the choice -- postpone the new release indefinitely, or release it
32 now, with working code but some undocumented areas.  The problem with
33 postponing the release is that people continue to suffer from existing
34 bugs, and send me patches based on the previous release -- which I
35 can't apply directly because my own source has changed.  Also, some
36 new modules (like signal) have been ready for release for quite some
37 time, and people are anxiously waiting for them.  In the case of
38 signal, the interface is simple enough to figure out without
39 documentation (if you're anxious enough :-).  In this case it was not
40 simple to release the module on its own, since it relies on many small
41 patches elsewhere in the source.
43 For most new Python modules, the source code contains comments that
44 explain how to use them.  Documentation for the Tk interface, written
45 by Matt Conway, is available as tkinter-doc.tar.gz from the Python
46 home and mirror ftp sites (see Misc/FAQ for ftp addresses).  For the
47 new operator overloading facilities, have a look at Demo/classes:
48 Complex.py and Rat.py show how to implement a numeric type without and
49 with __coerce__ method.  Also have a look at the end of the Tutorial
50 document (Doc/tut.tex).  If you're still confused: use the newsgroup
51 or mailing list.
54 New language features:
56     - More flexible operator overloading for user-defined classes
57     (INCOMPATIBLE WITH PREVIOUS VERSIONS!)  See end of tutorial.
59     - Classes can define methods named __getattr__, __setattr__ and
60     __delattr__ to trap attribute accesses.  See end of tutorial.
62     - Classes can define method __call__ so instances can be called
63     directly.  See end of tutorial.
66 New support facilities:
68     - The Makefiles (for the base interpreter as well as for extensions)
69     now support creating dynamically loadable modules if the platform
70     supports shared libraries.
72     - Passing the interpreter a .pyc file as script argument will execute
73     the code in that file.  (On the Mac such files can be double-clicked!)
75     - New Freeze script, to create independently distributable "binaries"
76     of Python programs -- look in Demo/freeze
78     - Improved h2py script (in Demo/scripts) follows #includes and
79     supports macros with one argument
81     - New module compileall generates .pyc files for all modules in a
82     directory (tree) without also executing them
84     - Threads should work on more platforms
87 New built-in modules:
89     - tkinter (support for Tcl's Tk widget set) is now part of the base
90     distribution
92     - signal allows catching or ignoring UNIX signals (unfortunately still
93     undocumented -- any taker?)
95     - termios provides portable access to POSIX tty settings
97     - curses provides an interface to the System V curses library
99     - syslog provides an interface to the (BSD?) syslog daemon
101     - 'new' provides interfaces to create new built-in object types
102     (e.g. modules and functions)
104     - sybase provides an interface to SYBASE database
107 New/obsolete built-in methods:
109     - callable(x) tests whether x can be called
111     - sockets now have a setblocking() method
113     - sockets no longer have an allowbroadcast() method
115     - socket methods send() and sendto() return byte count
118 New standard library modules:
120     - types.py defines standard names for built-in types, e.g. StringType
122     - urlparse.py parses URLs according to the latest Internet draft
124     - uu.py does uuencode/uudecode (not the fastest in the world, but
125     quicker than installing uuencode on a non-UNIX machine :-)
127     - New, faster and more powerful profile module.py
129     - mhlib.py provides interface to MH folders and messages
132 New facilities for extension writers (unfortunately still
133 undocumented):
135     - newgetargs() supports optional arguments and improved error messages
137     - O!, O& O? formats for getargs allow more versatile type checking of
138     non-standard types
140     - can register pending asynchronous callback, to be called the next
141     time the Python VM begins a new instruction (Py_AddPendingCall)
143     - can register cleanup routines to be called when Python exits
144     (Py_AtExit)
146     - makesetup script understands C++ files in Setup file (use file.C
147     or file.cc)
149     - Make variable OPT is passed on to sub-Makefiles
151     - An init<module>() routine may signal an error by not entering
152     the module in the module table and raising an exception instead
154     - For long module names, instead of foobarbletchmodule.c you can
155     use foobarbletch.c
157     - getintvalue() and getfloatvalue() try to convert any object
158     instead of requiring an "intobject" or "floatobject"
160     - All the [new]getargs() formats that retrieve an integer value
161     will now also work if a float is passed
163     - C function listtuple() converts list to tuple, fast
165     - You should now call sigcheck() instead of intrcheck();
166     sigcheck() also sets an exception when it returns nonzero
169 ====================================
170 ==> Release 1.0.3 (14 July 1994) <==
171 ====================================
173 This release consists entirely of bug fixes to the C sources; see the
174 head of ../ChangeLog for a complete list.  Most important bugs fixed:
176 - Sometimes the format operator (string%expr) would drop the last
177 character of the format string
179 - Tokenizer looped when last line did not end in \n
181 - Bug when triple-quoted string ended in quote plus newline
183 - Typo in socketmodule (listen) (== instead of =)
185 - typing vars() at the >>> prompt would cause recursive output
188 ==================================
189 ==> Release 1.0.2 (4 May 1994) <==
190 ==================================
192 Overview of the most visible changes.  Bug fixes are not listed.  See
193 also ChangeLog.
195 Tokens
196 ------
198 * String literals follow Standard C rules: they may be continued on
199 the next line using a backslash; adjacent literals are concatenated
200 at compile time.
202 * A new kind of string literals, surrounded by triple quotes (""" or
203 '''), can be continued on the next line without a backslash.
205 Syntax
206 ------
208 * Function arguments may have a default value, e.g. def f(a, b=1);
209 defaults are evaluated at function definition time.  This also applies
210 to lambda.
212 * The try-except statement has an optional else clause, which is
213 executed when no exception occurs in the try clause.
215 Interpreter
216 -----------
218 * The result of a statement-level expression is no longer printed,
219 except_ for expressions entered interactively.  Consequently, the -k
220 command line option is gone.
222 * The result of the last printed interactive expression is assigned to
223 the variable '_'.
225 * Access to implicit global variables has been speeded up by removing
226 an always-failing dictionary lookup in the dictionary of local
227 variables (mod suggested by Steve Makewski and Tim Peters).
229 * There is a new command line option, -u, to force stdout and stderr
230 to be unbuffered.
232 * Incorporated Steve Majewski's mods to import.c for dynamic loading
233 under AIX.
235 * Fewer chances of dumping core when trying to reload or re-import
236 static built-in, dynamically loaded built-in, or frozen modules.
238 * Loops over sequences now don't ask for the sequence's length when
239 they start, but try to access items 0, 1, 2, and so on until they hit
240 an IndexError.  This makes it possible to create classes that generate
241 infinite or indefinite sequences a la Steve Majewski.  This affects
242 for loops, the (not) in operator, and the built-in functions filter(),
243 map(), max(), min(), reduce().
245 Changed Built-in operations
246 ---------------------------
248 * The '%' operator on strings (printf-style formatting) supports a new
249 feature (adapted from a patch by Donald Beaudry) to allow
250 '%(<key>)<format>' % {...} to take values from a dictionary by name
251 instead of from a tuple by position (see also the new function
252 vars()).
254 * The '%s' formatting operator is changed to accept any type and
255 convert it to a string using str().
257 * Dictionaries with more than 20,000 entries can now be created
258 (thanks to Steve Kirsch).
260 New Built-in Functions
261 ----------------------
263 * vars() returns a dictionary containing the local variables; vars(m)
264 returns a dictionary containing the variables of module m.  Note:
265 dir(x) is now equivalent to vars(x).keys().
267 Changed Built-in Functions
268 --------------------------
270 * open() has an optional third argument to specify the buffer size: 0
271 for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0
272 for default.
274 * open()'s second argument is now optional; it defaults to "r".
276 * apply() now checks that its second argument is indeed a tuple.
278 New Built-in Modules
279 --------------------
281 Changed Built-in Modules
282 ------------------------
284 The thread module no longer supports exit_prog().
286 New Python Modules
287 ------------------
289 * Module addpack contains a standard interface to modify sys.path to
290 find optional packages (groups of related modules).
292 * Module urllib contains a number of functions to access
293 World-Wide-Web files specified by their URL.
295 * Module httplib implements the client side of the HTTP protocol used
296 by World-Wide-Web servers.
298 * Module gopherlib implements the client side of the Gopher protocol.
300 * Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
301 style mailbox files.
303 * Module random contains various random distributions, e.g. gauss().
305 * Module lockfile locks and unlocks open files using fcntl (inspired
306 by a similar module by Andy Bensky).
308 * Module ntpath (by Jaap Vermeulen) implements path operations for
309 Windows/NT.
311 * Module test_thread (in Lib/test) contains a small test set for the
312 thread module.
314 Changed Python Modules
315 ----------------------
317 * The string module's expandvars() function is now documented and is
318 implemented in Python (using regular expressions) instead of forking
319 off a shell process.
321 * Module rfc822 now supports accessing the header fields using the
322 mapping/dictionary interface, e.g. h['subject'].
324 * Module pdb now makes it possible to set a break on a function
325 (syntax: break <expression>, where <expression> yields a function
326 object).
328 Changed Demos
329 -------------
331 * The Demo/scripts/freeze.py script is working again (thanks to Jaap
332 Vermeulen).
334 New Demos
335 ---------
337 * Demo/threads/Generator.py is a proposed interface for restartable
338 functions a la Tim Peters.
340 * Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a
341 directory full of HTML pages which between them contain links to all
342 the newsgroups available on your server.
344 * Demo/dns contains a DNS (Domain Name Server) client.
346 * Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
347 nice enhanced Python shell!!!).
349 * Demo/turing contains a Turing machine by Amrit Prem.
351 Documentation
352 -------------
354 * Documented new language features mentioned above (but not all new
355 modules).
357 * Added a chapter to the Tutorial describing recent additions to
358 Python.
360 * Clarified some sentences in the reference manual,
361 e.g. break/continue, local/global scope, slice assignment.
363 Source Structure
364 ----------------
366 * Moved Include/tokenizer.h to Parser/tokenizer.h.
368 * Added Python/getopt.c for systems that don't have it.
370 Emacs mode
371 ----------
373 * Indentation of continuated lines is done more intelligently;
374 consequently the variable py-continuation-offset is gone.
376 ========================================
377 ==> Release 1.0.1 (15 February 1994) <==
378 ========================================
380 * Many portability fixes should make it painless to build Python on
381 several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
383 * Fixed test for <stdarg.h> -- this broke on some platforms.
385 * Fixed test for shared library dynalic loading -- this broke on SunOS
386 4.x using the GNU loader.
388 * Changed order and number of SVR4 networking libraries (it is now
389 -lsocket -linet -lnsl, if these libraries exist).
391 * Installing the build intermediate stages with "make libainstall" now
392 also installs config.c.in, Setup and makesetup, which are used by the
393 new Extensions mechanism.
395 * Improved README file contains more hints and new troubleshooting
396 section.
398 * The built-in module strop now defines fast versions of three more
399 functions of the standard string module: atoi(), atol() and atof().
400 The strop versions of atoi() and atol() support an optional second
401 argument to specify the base (default 10).  NOTE: you don't have to
402 explicitly import strop to use the faster versions -- the string
403 module contains code to let versions from stop override the default
404 versions.
406 * There is now a working Lib/dospath.py for those who use Python under
407 DOS (or Windows).  Thanks, Jaap!
409 * There is now a working Modules/dosmodule.c for DOS (or Windows)
410 system calls.
412 * Lib.os.py has been reorganized (making it ready for more operating
413 systems).
415 * Lib/ospath.py is now obsolete (use os.path instead).
417 * Many fixes to the tutorial to make it match Python 1.0.  Thanks,
418 Tim!
420 * Fixed Doc/Makefile, Doc/README and various scripts there.
422 * Added missing description of fdopen to Doc/libposix.tex.
424 * Made cleanup() global, for the benefit of embedded applications.
426 * Added parsing of addresses and dates to Lib/rfc822.py.
428 * Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
429 them usable at all.
431 * New module Lib/wave.py reads RIFF (*.wav) audio files.
433 * Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
434 belongs.
436 * New options and comments for Modules/makesetup (used by new
437 Extension mechanism).
439 * Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
440 and elsewhere.
442 * Fixed coredump in filter(None, 'abcdefg').
445 =======================================
446 ==> Release 1.0.0 (26 January 1994) <==
447 =======================================
449 As is traditional, so many things have changed that I can't pretend to
450 be complete in these release notes, but I'll try anyway :-)
452 Note that the very last section is labeled "remaining bugs".
455 Source organization and build process
456 -------------------------------------
458 * The sources have finally been split: instead of a single src
459 subdirectory there are now separate directories Include, Parser,
460 Grammar, Objects, Python and Modules.  Other directories also start
461 with a capital letter: Misc, Doc, Lib, Demo.
463 * A few extensions (notably Amoeba and X support) have been moved to a
464 separate subtree Extensions, which is no longer in the core
465 distribution, but separately ftp'able as extensions.tar.Z.  (The
466 distribution contains a placeholder Ext-dummy with a description of
467 the Extensions subtree as well as the most recent versions of the
468 scripts used there.)
470 * A few large specialized demos (SGI video and www) have been
471 moved to a separate subdirectory Demo2, which is no longer in the core
472 distribution, but separately ftp'able as demo2.tar.Z.
474 * Parts of the standard library have been moved to subdirectories:
475 there are now standard subdirectories stdwin, test, sgi and sun4.
477 * The configuration process has radically changed: I now use GNU
478 autoconf.  This makes it much easier to build on new Unix flavors, as
479 well as fully supporting VPATH (if your Make has it).  The scripts
480 Configure.py and Addmodule.sh are no longer needed.  Many source files
481 have been adapted in order to work with the symbols that the configure
482 script generated by autoconf defines (or not); the resulting source is
483 much more portable to different C compilers and operating systems,
484 even non Unix systems (a Mac port was done in an afternoon).  See the
485 toplevel README file for a description of the new build process.
487 * GNU readline (a slightly newer version) is now a subdirectory of the
488 Python toplevel.  It is still not automatically configured (being
489 totally autoconf-unaware :-).  One problem has been solved: typing
490 Control-C to a readline prompt will now work.  The distribution no
491 longer contains a "super-level" directory (above the python toplevel
492 directory), and dl, dl-dld and GNU dld are no longer part of the
493 Python distribution (you can still ftp them from
494 ftp.cwi.nl:/pub/dynload).
496 * The DOS functions have been taken out of posixmodule.c and moved
497 into a separate file dosmodule.c.
499 * There's now a separate file version.c which contains nothing but
500 the version number.
502 * The actual main program is now contained in config.c (unless NO_MAIN
503 is defined); pythonmain.c now contains a function realmain() which is
504 called from config.c's main().
506 * All files needed to use the built-in module md5 are now contained in
507 the distribution.  The module has been cleaned up considerably.
510 Documentation
511 -------------
513 * The library manual has been split into many more small latex files,
514 so it is easier to edit Doc/lib.tex file to create a custom library
515 manual, describing only those modules supported on your system.  (This
516 is not automated though.)
518 * A fourth manual has been added, titled "Extending and Embedding the
519 Python Interpreter" (Doc/ext.tex), which collects information about
520 the interpreter which was previously spread over several files in the
521 misc subdirectory.
523 * The entire documentation is now also available on-line for those who
524 have a WWW browser (e.g. NCSA Mosaic).  Point your browser to the URL
525 "http://www.cwi.nl/~guido/Python.html".
528 Syntax
529 ------
531 * Strings may now be enclosed in double quotes as well as in single
532 quotes.  There is no difference in interpretation.  The repr() of
533 string objects will use double quotes if the string contains a single
534 quote and no double quotes.  Thanks to Amrit Prem for these changes!
536 * There is a new keyword 'exec'.  This replaces the exec() built-in
537 function.  If a function contains an exec statement, local variable
538 optimization is not performed for that particular function, thus
539 making assignment to local variables in exec statements less
540 confusing.  (As a consequence, os.exec and python.exec have been
541 renamed to execv.)
543 * There is a new keyword 'lambda'.  An expression of the form
545         lambda <parameters> : <expression>
547 yields an anonymous function.  This is really only syntactic sugar;
548 you can just as well define a local function using
550         def some_temporary_name(<parameters>): return <expression>
552 Lambda expressions are particularly useful in combination with map(),
553 filter() and reduce(), described below.  Thanks to Amrit Prem for
554 submitting this code (as well as map(), filter(), reduce() and
555 xrange())!
558 Built-in functions
559 ------------------
561 * The built-in module containing the built-in functions is called
562 __builtin__ instead of builtin.
564 * New built-in functions map(), filter() and reduce() perform standard
565 functional programming operations (though not lazily):
567 - map(f, seq) returns a new sequence whose items are the items from
568 seq with f() applied to them.
570 - filter(f, seq) returns a subsequence of seq consisting of those
571 items for which f() is true.
573 - reduce(f, seq, initial) returns a value computed as follows:
574         acc = initial
575         for item in seq: acc = f(acc, item)
576         return acc
578 * New function xrange() creates a "range object".  Its arguments are
579 the same as those of range(), and when used in a for loop a range
580 objects also behaves identical.  The advantage of xrange() over
581 range() is that its representation (if the range contains many
582 elements) is much more compact than that of range().  The disadvantage
583 is that the result cannot be used to initialize a list object or for
584 the "Python idiom" [RED, GREEN, BLUE] = range(3).  On some modern
585 architectures, benchmarks have shown that "for i in range(...): ..."
586 actually executes *faster* than "for i in xrange(...): ...", but on
587 memory starved machines like PCs running DOS range(100000) may be just
588 too big to be represented at all...
590 * Built-in function exec() has been replaced by the exec statement --
591 see above.
594 The interpreter
595 ---------------
597 * Syntax errors are now not printed to stderr by the parser, but
598 rather the offending line and other relevant information are packed up
599 in the SyntaxError exception argument.  When the main loop catches a
600 SyntaxError exception it will print the error in the same format as
601 previously, but at the proper position in the stack traceback.
603 * You can now set a maximum to the number of traceback entries
604 printed by assigning to sys.tracebacklimit.  The default is 1000.
606 * The version number in .pyc files has changed yet again.
608 * It is now possible to have a .pyc file without a corresponding .py
609 file.  (Warning: this may break existing installations if you have an
610 old .pyc file lingering around somewhere on your module search path
611 without a corresponding .py file, when there is a .py file for a
612 module of the same name further down the path -- the new interpreter
613 will find the first .pyc file and complain about it, while the old
614 interpreter would ignore it and use the .py file further down.)
616 * The list sys.builtin_module_names is now sorted and also contains
617 the names of a few hardwired built-in modules (sys, __main__ and
618 __builtin__).
620 * A module can now find its own name by accessing the global variable
621 __name__.  Assigning to this variable essentially renames the module
622 (it should also be stored under a different key in sys.modules).
623 A neat hack follows from this: a module that wants to execute a main
624 program when called as a script no longer needs to compare
625 sys.argv[0]; it can simply do "if __name__ == '__main__': main()".
627 * When an object is printed by the print statement, its implementation
628 of str() is used.  This means that classes can define __str__(self) to
629 direct how their instances are printed.  This is different from
630 __repr__(self), which should define an unambigous string
631 representation of the instance.  (If __str__() is not defined, it
632 defaults to __repr__().)
634 * Functions and code objects can now be compared meaningfully.
636 * On systems supporting SunOS or SVR4 style shared libraries, dynamic
637 loading of modules using shared libraries is automatically configured.
638 Thanks to Bill Jansen and Denis Severson for contributing this change!
641 Built-in objects
642 ----------------
644 * File objects have acquired a new method writelines() which is the
645 reverse of readlines().  (It does not actually write lines, just a
646 list of strings, but the symmetry makes the choice of name OK.)
649 Built-in modules
650 ----------------
652 * Socket objects no longer support the avail() method.  Use the select
653 module instead, or use this function to replace it:
655         def avail(f):
656                 import select
657                 return f in select.select([f], [], [], 0)[0]
659 * Initialization of stdwin is done differently.  It actually modifies
660 sys.argv (taking out the options the X version of stdwin recognizes)
661 the first time it is imported.
663 * A new built-in module parser provides a rudimentary interface to the
664 python parser.  Corresponding standard library modules token and symbol
665 defines the numeric values of tokens and non-terminal symbols.
667 * The posix module has aquired new functions setuid(), setgid(),
668 execve(), and exec() has been renamed to execv().
670 * The array module is extended with 8-byte object swaps, the 'i'
671 format character, and a reverse() method.  The read() and write()
672 methods are renamed to fromfile() and tofile().
674 * The rotor module has freed of portability bugs.  This introduces a
675 backward compatibility problem: strings encoded with the old rotor
676 module can't be decoded by the new version.
678 * For select.select(), a timeout (4th) argument of None means the same
679 as leaving the timeout argument out.
681 * Module strop (and hence standard library module string) has aquired
682 a new function: rindex().  Thanks to Amrit Prem!
684 * Module regex defines a new function symcomp() which uses an extended
685 regular expression syntax: parenthesized subexpressions may be labeled
686 using the form "\(<labelname>...\)", and the group() method can return
687 sub-expressions by name.  Thanks to Tracy Tims for these changes!
689 * Multiple threads are now supported on Solaris 2.  Thanks to Sjoerd
690 Mullender!
693 Standard library modules
694 ------------------------
696 * The library is now split in several subdirectories: all stuff using
697 stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff
698 is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all
699 test modules are in Lib/test.  The default module search path will
700 include all relevant subdirectories by default.
702 * Module os now knows about trying to import dos.  It defines
703 functions execl(), execle(), execlp() and execvp().
705 * New module dospath (should be attacked by a DOS hacker though).
707 * All modules defining classes now define __init__() constructors
708 instead of init() methods.  THIS IS AN INCOMPATIBLE CHANGE!
710 * Some minor changes and bugfixes module ftplib (mostly Steve
711 Majewski's suggestions); the debug() method is renamed to
712 set_debuglevel().
714 * Some new test modules (not run automatically by testall though):
715 test_audioop, test_md5, test_rgbimg, test_select.
717 * Module string now defines rindex() and rfind() in analogy of index()
718 and find().  It also defines atof() and atol() (and corresponding
719 exceptions) in analogy to atoi().
721 * Added help() functions to modules profile and pdb.
723 * The wdb debugger (now in Lib/stdwin) now shows class or instance
724 variables on a double click.  Thanks to Sjoerd Mullender!
726 * The (undocumented) module lambda has gone -- you couldn't import it
727 any more, and it was basically more a demo than a library module...
730 Multimedia extensions
731 ---------------------
733 * The optional built-in modules audioop and imageop are now standard
734 parts of the interpreter.  Thanks to Sjoerd Mullender and Jack Jansen
735 for contributing this code!
737 * There's a new operation in audioop: minmax().
739 * There's a new built-in module called rgbimg which supports portable
740 efficient reading of SGI RCG image files.  Thanks also to Paul
741 Haeberli for the original code!  (Who will contribute a GIF reader?)
743 * The module aifc is gone -- you should now always use aifc, which has
744 received a facelift.
746 * There's a new module sunau., for reading Sun (and NeXT) audio files.
748 * There's a new module audiodev which provides a uniform interface to
749 (SGI Indigo and Sun Sparc) audio hardware.
751 * There's a new module sndhdr which recognizes various sound files by
752 looking in their header and checking for various magic words.
755 Optimizations
756 -------------
758 * Most optimizations below can be configured by compile-time flags.
759 Thanks to Sjoerd Mullender for submitting these optimizations!
761 * Small integers (default -1..99) are shared -- i.e. if two different
762 functions compute the same value it is possible (but not
763 guaranteed!!!) that they return the same *object*.  Python programs
764 can detect this but should *never* rely on it.
766 * Empty tuples (which all compare equal) are shared in the same
767 manner.
769 * Tuples of size up to 20 (default) are put in separate free lists
770 when deallocated.
772 * There is a compile-time option to cache a string's hash function,
773 but this appeared to have a negligeable effect, and as it costs 4
774 bytes per string it is disabled by default.
777 Embedding Python
778 ----------------
780 * The initialization interface has been simplified somewhat.  You now
781 only call "initall()" to initialize the interpreter.
783 * The previously announced renaming of externally visible identifiers
784 has not been carried out.  It will happen in a later release.  Sorry.
787 Miscellaneous bugs that have been fixed
788 ---------------------------------------
790 * All known portability bugs.
792 * Version 0.9.9 dumped core in <listobject>.sort() which has been
793 fixed.  Thanks to Jaap Vermeulen for fixing this and posting the fix
794 on the mailing list while I was away!
796 * Core dump on a format string ending in '%', e.g. in the expression
797 '%' % None.
799 * The array module yielded a bogus result for concatenation (a+b would
800 yield a+a).
802 * Some serious memory leaks in strop.split() and strop.splitfields().
804 * Several problems with the nis module.
806 * Subtle problem when copying a class method from another class
807 through assignment (the method could not be called).
810 Remaining bugs
811 --------------
813 * One problem with 64-bit machines remains -- since .pyc files are
814 portable and use only 4 bytes to represent an integer object, 64-bit
815 integer literals are silently truncated when written into a .pyc file.
816 Work-around: use eval('123456789101112').
818 * The freeze script doesn't work any more.  A new and more portable
819 one can probably be cooked up using tricks from Extensions/mkext.py.
821 * The dos support hasn't been tested yet.  (Really Soon Now we should
822 have a PC with a working C compiler!)
825 ===================================
826 ==> Release 0.9.9 (29 Jul 1993) <==
827 ===================================
829 I *believe* these are the main user-visible changes in this release,
830 but there may be others.  SGI users may scan the {src,lib}/ChangeLog
831 files for improvements of some SGI specific modules, e.g. aifc and
832 cl.  Developers of extension modules should also read src/ChangeLog.
835 Naming of C symbols used by the Python interpreter
836 --------------------------------------------------
838 * This is the last release using the current naming conventions.  New
839 naming conventions are explained in the file misc/NAMING.
840 Summarizing, all externally visible symbols get (at least) a "Py"
841 prefix, and most functions are renamed to the standard form
842 PyModule_FunctionName.
844 * Writers of extensions are urged to start using the new naming
845 conventions.  The next release will use the new naming conventions
846 throughout (it will also have a different source directory
847 structure).
849 * As a result of the preliminary work for the great renaming, many
850 functions that were accidentally global have been made static.
853 BETA X11 support
854 ----------------
856 * There are now modules interfacing to the X11 Toolkit Intrinsics, the
857 Athena widgets, and the Motif 1.1 widget set.  These are not yet
858 documented except through the examples and README file in the demo/x11
859 directory.  It is expected that this interface will be replaced by a
860 more powerful and correct one in the future, which may or may not be
861 backward compatible.  In other words, this part of the code is at most
862 BETA level software!  (Note: the rest of Python is rock solid as ever!)
864 * I understand that the above may be a bit of a disappointment,
865 however my current schedule does not allow me to change this situation
866 before putting the release out of the door.  By releasing it
867 undocumented and buggy, at least some of the (working!) demo programs,
868 like itr (my Internet Talk Radio browser) become available to a larger
869 audience.
871 * There are also modules interfacing to SGI's "Glx" widget (a GL
872 window wrapped in a widget) and to NCSA's "HTML" widget (which can
873 format HyperText Markup Language, the document format used by the
874 World Wide Web).
876 * I've experienced some problems when building the X11 support.  In
877 particular, the Xm and Xaw widget sets don't go together, and it
878 appears that using X11R5 is better than using X11R4.  Also the threads
879 module and its link time options may spoil things.  My own strategy is
880 to build two Python binaries: one for use with X11 and one without
881 it, which can contain a richer set of built-in modules.  Don't even
882 *think* of loading the X11 modules dynamically...
885 Environmental changes
886 ---------------------
888 * Compiled files (*.pyc files) created by this Python version are
889 incompatible with those created by the previous version.  Both
890 versions detect this and silently create a correct version, but it
891 means that it is not a good idea to use the same library directory for
892 an old and a new interpreter, since they will start to "fight" over
893 the *.pyc files...
895 * When a stack trace is printed, the exception is printed last instead
896 of first.  This means that if the beginning of the stack trace
897 scrolled out of your window you can still see what exception caused
900 * Sometimes interrupting a Python operation does not work because it
901 hangs in a blocking system call.  You can now kill the interpreter by
902 interrupting it three times.  The second time you interrupt it, a
903 message will be printed telling you that the third interrupt will kill
904 the interpreter.  The "sys.exitfunc" feature still makes limited
905 clean-up possible in this case.
908 Changes to the command line interface
909 -------------------------------------
911 * The python usage message is now much more informative.
913 * New option -i enters interactive mode after executing a script --
914 useful for debugging.
916 * New option -k raises an exception when an expression statement
917 yields a value other than None.
919 * For each option there is now also a corresponding environment
920 variable.
923 Using Python as an embedded language
924 ------------------------------------
926 * The distribution now contains (some) documentation on the use of
927 Python as an "embedded language" in other applications, as well as a
928 simple example.  See the file misc/EMBEDDING and the directory embed/.
931 Speed improvements
932 ------------------
934 * Function local variables are now generally stored in an array and
935 accessed using an integer indexing operation, instead of through a
936 dictionary lookup.  (This compensates the somewhat slower dictionary
937 lookup caused by the generalization of the dictionary module.)
940 Changes to the syntax
941 ---------------------
943 * Continuation lines can now *sometimes* be written without a
944 backslash: if the continuation is contained within nesting (), [] or
945 {} brackets the \ may be omitted.  There's a much improved
946 python-mode.el in the misc directory which knows about this as well.
948 * You can no longer use an empty set of parentheses to define a class
949 without base classes.  That is, you no longer write this:
951         class Foo(): # syntax error
952                 ...
954 You must write this instead:
956         class Foo:
957                 ...
959 This was already the preferred syntax in release 0.9.8 but many
960 people seemed not to have picked it up.  There's a Python script that
961 fixes old code: demo/scripts/classfix.py.
963 * There's a new reserved word: "access".  The syntax and semantics are
964 still subject of of research and debate (as well as undocumented), but
965 the parser knows about the keyword so you must not use it as a
966 variable, function, or attribute name.
969 Changes to the semantics of the language proper
970 -----------------------------------------------
972 * The following compatibility hack is removed: if a function was
973 defined with two or more arguments, and called with a single argument
974 that was a tuple with just as many arguments, the items of this tuple
975 would be used as the arguments.  This is no longer supported.
978 Changes to the semantics of classes and instances
979 -------------------------------------------------
981 * Class variables are now also accessible as instance variables for
982 reading (assignment creates an instance variable which overrides the
983 class variable of the same name though).
985 * If a class attribute is a user-defined function, a new kind of
986 object is returned: an "unbound method".  This contains a pointer to
987 the class and can only be called with a first argument which is a
988 member of that class (or a derived class).
990 * If a class defines a method __init__(self, arg1, ...) then this
991 method is called when a class instance is created by the classname()
992 construct.  Arguments passed to classname() are passed to the
993 __init__() method.  The __init__() methods of base classes are not
994 automatically called; the derived __init__() method must call these if
995 necessary (this was done so the derived __init__() method can choose
996 the call order and arguments for the base __init__() methods).
998 * If a class defines a method __del__(self) then this method is called
999 when an instance of the class is about to be destroyed.  This makes it
1000 possible to implement clean-up of external resources attached to the
1001 instance.  As with __init__(), the __del__() methods of base classes
1002 are not automatically called.  If __del__ manages to store a reference
1003 to the object somewhere, its destruction is postponed; when the object
1004 is again about to be destroyed its __del__() method will be called
1005 again.
1007 * Classes may define a method __hash__(self) to allow their instances
1008 to be used as dictionary keys.  This must return a 32-bit integer.
1011 Minor improvements
1012 ------------------
1014 * Function and class objects now know their name (the name given in
1015 the 'def' or 'class' statement that created them).
1017 * Class instances now know their class name.
1020 Additions to built-in operations
1021 --------------------------------
1023 * The % operator with a string left argument implements formatting
1024 similar to sprintf() in C.  The right argument is either a single
1025 value or a tuple of values.  All features of Standard C sprintf() are
1026 supported except %p.
1028 * Dictionaries now support almost any key type, instead of just
1029 strings.  (The key type must be an immutable type or must be a class
1030 instance where the class defines a method __hash__(), in order to
1031 avoid losing track of keys whose value may change.)
1033 * Built-in methods are now compared properly: when comparing x.meth1
1034 and y.meth2, if x is equal to y and the methods are defined by the
1035 same function, x.meth1 compares equal to y.meth2.
1038 Additions to built-in functions
1039 -------------------------------
1041 * str(x) returns a string version of its argument.  If the argument is
1042 a string it is returned unchanged, otherwise it returns `x`.
1044 * repr(x) returns the same as `x`.  (Some users found it easier to
1045 have this as a function.)
1047 * round(x) returns the floating point number x rounded to an whole
1048 number, represented as a floating point number.  round(x, n) returns x
1049 rounded to n digits.
1051 * hasattr(x, name) returns true when x has an attribute with the given
1052 name.
1054 * hash(x) returns a hash code (32-bit integer) of an arbitrary
1055 immutable object's value.
1057 * id(x) returns a unique identifier (32-bit integer) of an arbitrary
1058 object.
1060 * compile() compiles a string to a Python code object.
1062 * exec() and eval() now support execution of code objects.
1065 Changes to the documented part of the library (standard modules)
1066 ----------------------------------------------------------------
1068 * os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
1069 the border case '/foo/..' returns '/' instead of ''.
1071 * A new function string.find() is added with similar semantics to
1072 string.index(); however when it does not find the given substring it
1073 returns -1 instead of raising string.index_error.
1076 Changes to built-in modules
1077 ---------------------------
1079 * New optional module 'array' implements operations on sequences of
1080 integers or floating point numbers of a particular size.  This is
1081 useful to manipulate large numerical arrays or to read and write
1082 binary files consisting of numerical data.
1084 * Regular expression objects created by module regex now support a new
1085 method named group(), which returns one or more \(...\) groups by number.
1086 The number of groups is increased from 10 to 100.
1088 * Function compile() in module regex now supports an optional mapping
1089 argument; a variable casefold is added to the module which can be used
1090 as a standard uppercase to lowercase mapping.
1092 * Module time now supports many routines that are defined in the
1093 Standard C time interface (<time.h>): gmtime(), localtime(),
1094 asctime(), ctime(), mktime(), as well as these variables (taken from
1095 System V): timezone, altzone, daylight and tzname.  (The corresponding
1096 functions in the undocumented module calendar have been removed; the
1097 undocumented and unfinished module tzparse is now obsolete and will
1098 disappear in a future release.)
1100 * Module strop (the fast built-in version of standard module string)
1101 now uses C's definition of whitespace instead of fixing it to space,
1102 tab and newline; in practice this usually means that vertical tab,
1103 form feed and return are now also considered whitespace.  It exports
1104 the string of characters that are considered whitespace as well as the
1105 characters that are considered lowercase or uppercase.
1107 * Module sys now defines the variable builtin_module_names, a list of
1108 names of modules built into the current interpreter (including not
1109 yet imported, but excluding two special modules that always have to be
1110 defined -- sys and builtin).
1112 * Objects created by module sunaudiodev now also support flush() and
1113 close() methods.
1115 * Socket objects created by module socket now support an optional
1116 flags argument for their methods sendto() and recvfrom().
1118 * Module marshal now supports dumping to and loading from strings,
1119 through the functions dumps() and loads().
1121 * Module stdwin now supports some new functionality.  You may have to
1122 ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.)
1125 Bugs fixed
1126 ----------
1128 * Fixed comparison of negative long integers.
1130 * The tokenizer no longer botches input lines longer than BUFSIZ.
1132 * Fixed several severe memory leaks in module select.
1134 * Fixed memory leaks in modules socket and sv.
1136 * Fixed memory leak in divmod() for long integers.
1138 * Problems with definition of floatsleep() on Suns fixed.
1140 * Many portability bugs fixed (and undoubtedly new ones added :-).
1143 Changes to the build procedure
1144 ------------------------------
1146 * The Makefile supports some new targets: "make default" and "make
1147 all".  Both are by normally equivalent to "make python".
1149 * The Makefile no longer uses $> since it's not supported by all
1150 versions of Make.
1152 * The header files now all contain #ifdef constructs designed to make
1153 it safe to include the same header file twice, as well as support for
1154 inclusion from C++ programs (automatic extern "C" { ... } added).
1157 Freezing Python scripts
1158 -----------------------
1160 * There is now some support for "freezing" a Python script as a
1161 stand-alone executable binary file.  See the script
1162 demo/scripts/freeze.py.  It will require some site-specific tailoring
1163 of the script to get this working, but is quite worthwhile if you write
1164 Python code for other who may not have built and installed Python.
1167 MS-DOS
1168 ------
1170 * A new MS-DOS port has been done, using MSC 6.0 (I believe).  Thanks,
1171 Marcel van der Peijl!  This requires fewer compatibility hacks in
1172 posixmodule.c.  The executable is not yet available but will be soon
1173 (check the mailing list).
1175 * The default PYTHONPATH has changed.
1178 Changes for developers of extension modules
1179 -------------------------------------------
1181 * Read src/ChangeLog for full details.
1184 SGI specific changes
1185 --------------------
1187 * Read src/ChangeLog for full details.
1190 ==================================
1191 ==> Release 0.9.8 (9 Jan 1993) <==
1192 ==================================
1194 I claim no completeness here, but I've tried my best to scan the log
1195 files throughout my source tree for interesting bits of news.  A more
1196 complete account of the changes is to be found in the various
1197 ChangeLog files. See also "News for release 0.9.7beta" below if you're
1198 still using release 0.9.6, and the file HISTORY if you have an even
1199 older release.
1201         --Guido
1204 Changes to the language proper
1205 ------------------------------
1207 There's only one big change: the conformance checking for function
1208 argument lists (of user-defined functions only) is stricter.  Earlier,
1209 you could get away with the following:
1211         (a) define a function of one argument and call it with any
1212             number of arguments; if the actual argument count wasn't
1213             one, the function would receive a tuple containing the
1214             arguments arguments (an empty tuple if there were none).
1216         (b) define a function of two arguments, and call it with more
1217             than two arguments; if there were more than two arguments,
1218             the second argument would be passed as a tuple containing
1219             the second and further actual arguments.
1221 (Note that an argument (formal or actual) that is a tuple is counted as
1222 one; these rules don't apply inside such tuples, only at the top level
1223 of the argument list.)
1225 Case (a) was needed to accommodate variable-length argument lists;
1226 there is now an explicit "varargs" feature (precede the last argument
1227 with a '*').  Case (b) was needed for compatibility with old class
1228 definitions: up to release 0.9.4 a method with more than one argument
1229 had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
1230 Version 0.9.6 provide better ways to handle both casees, bot provided
1231 backward compatibility; version 0.9.8 retracts the compatibility hacks
1232 since they also cause confusing behavior if a function is called with
1233 the wrong number of arguments.
1235 There's a script that helps converting classes that still rely on (b),
1236 provided their methods' first argument is called "self":
1237 demo/scripts/methfix.py.
1239 If this change breaks lots of code you have developed locally, try
1240 #defining COMPAT_HACKS in ceval.c.
1242 (There's a third compatibility hack, which is the reverse of (a): if a
1243 function is defined with two or more arguments, and called with a
1244 single argument that is a tuple with just as many arguments, the items
1245 of this tuple will be used as the arguments.  Although this can (and
1246 should!) be done using the built-in function apply() instead, it isn't
1247 withdrawn yet.)
1250 One minor change: comparing instance methods works like expected, so
1251 that if x is an instance of a user-defined class and has a method m,
1252 then (x.m==x.m) yields 1.
1255 The following was already present in 0.9.7beta, but not explicitly
1256 mentioned in the NEWS file: user-defined classes can now define types
1257 that behave in almost allrespects like numbers.  See
1258 demo/classes/Rat.py for a simple example.
1261 Changes to the build process
1262 ----------------------------
1264 The Configure.py script and the Makefile has been made somewhat more
1265 bullet-proof, after reports of (minor) trouble on certain platforms.
1267 There is now a script to patch Makefile and config.c to add a new
1268 optional built-in module: Addmodule.sh.  Read the script before using!
1270 Useing Addmodule.sh, all optional modules can now be configured at
1271 compile time using Configure.py, so there are no modules left that
1272 require dynamic loading.
1274 The Makefile has been fixed to make it easier to use with the VPATH
1275 feature of some Make versions (e.g. SunOS).
1278 Changes affecting portability
1279 -----------------------------
1281 Several minor portability problems have been solved, e.g. "malloc.h"
1282 has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
1283 the system now tolerates malloc(0) returning 0.
1285 For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
1286 distributed with Python.  This solves several minor problems, in
1287 particular scripts invoked using #! can now use dynamic loading.
1290 Changes to the interpreter interface
1291 ------------------------------------
1293 On popular demand, there's finally a "profile" feature for interactive
1294 use of the interpreter.  If the environment variable $PYTHONSTARTUP is
1295 set to the name of an existing file, Python statements in this file
1296 are executed when the interpreter is started in interactive mode.
1298 There is a new clean-up mechanism, complementing try...finally: if you
1299 assign a function object to sys.exitfunc, it will be called when
1300 Python exits or receives a SIGTERM or SIGHUP signal.
1302 The interpreter is now generally assumed to live in
1303 /usr/local/bin/python (as opposed to /usr/local/python).  The script
1304 demo/scripts/fixps.py will update old scripts in place (you can easily
1305 modify it to do other similar changes).
1307 Most I/O that uses sys.stdin/stdout/stderr will now use any object
1308 assigned to those names as long as the object supports readline() or
1309 write() methods.
1311 The parser stack has been increased to 500 to accommodate more
1312 complicated expressions (7 levels used to be the practical maximum,
1313 it's now about 38).
1315 The limit on the size of the *run-time* stack has completely been
1316 removed -- this means that tuple or list displays can contain any
1317 number of elements (formerly more than 50 would crash the
1318 interpreter). 
1321 Changes to existing built-in functions and methods
1322 --------------------------------------------------
1324 The built-in functions int(), long(), float(), oct() and hex() now
1325 also apply to class instalces that define corresponding methods
1326 (__int__ etc.).
1329 New built-in functions
1330 ----------------------
1332 The new functions str() and repr() convert any object to a string.
1333 The function repr(x) is in all respects equivalent to `x` -- some
1334 people prefer a function for this.  The function str(x) does the same
1335 except if x is already a string -- then it returns x unchanged
1336 (repr(x) adds quotes and escapes "funny" characters as octal escapes).
1338 The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
1341 Changes to general built-in modules
1342 -----------------------------------
1344 The time module's functions are more general: time() returns a
1345 floating point number and sleep() accepts one.  Their accuracies
1346 depends on the precision of the system clock.  Millisleep is no longer
1347 needed (although it still exists for now), but millitimer is still
1348 needed since on some systems wall clock time is only available with
1349 seconds precision, while a source of more precise time exists that
1350 isn't synchronized with the wall clock.  (On UNIX systems that support
1351 the BSD gettimeofday() function, time.time() is as time.millitimer().)
1353 The string representation of a file object now includes an address:
1354 '<file 'filename', mode 'r' at #######>' where ###### is a hex number
1355 (the object's address) to make it unique.
1357 New functions added to posix: nice(), setpgrp(), and if your system
1358 supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
1360 Improvements to the socket module: socket objects have new methods
1361 getpeername() and getsockname(), and the {get,set}sockopt methods can
1362 now get/set any kind of option using strings built with the new struct
1363 module.  And there's a new function fromfd() which creates a socket
1364 object given a file descriptor (useful for servers started by inetd,
1365 which have a socket connected to stdin and stdout).
1368 Changes to SGI-specific built-in modules
1369 ----------------------------------------
1371 The FORMS library interface (fl) now requires FORMS 2.1a.  Some new
1372 functions have been added and some bugs have been fixed.
1374 Additions to al (audio library interface): added getname(),
1375 getdefault() and getminmax().
1377 The gl modules doesn't call "foreground()" when initialized (this
1378 caused some problems) like it dit in 0.9.7beta (but not before).
1379 There's a new gl function 'gversion() which returns a version string.
1381 The interface to sv (Indigo video interface) has totally changed.
1382 (Sorry, still no documentation, but see the examples in
1383 demo/sgi/{sv,video}.)
1386 Changes to standard library modules
1387 -----------------------------------
1389 Most functions in module string are now much faster: they're actually
1390 implemented in C.  The module containing the C versions is called
1391 "strop" but you should still import "string" since strop doesn't
1392 provide all the interfaces defined in string (and strop may be renamed
1393 to string when it is complete in a future release).
1395 string.index() now accepts an optional third argument giving an index
1396 where to start searching in the first argument, so you can find second
1397 and further occurrences (this is similar to the regular expression
1398 functions in regex).
1400 The definition of what string.splitfields(anything, '') should return
1401 is changed for the last time: it returns a singleton list containing
1402 its whole first argument unchanged.  This is compatible with
1403 regsub.split() which also ignores empty delimiter matches.
1405 posixpath, macpath: added dirname() and normpath() (and basename() to
1406 macpath).
1408 The mainloop module (for use with stdwin) can now demultiplex input
1409 from other sources, as long as they can be polled with select().
1412 New built-in modules
1413 --------------------
1415 Module struct defines functions to pack/unpack values to/from strings
1416 representing binary values in native byte order.
1418 Module strop implements C versions of many functions from string (see
1419 above).
1421 Optional module fcntl defines interfaces to fcntl() and ioctl() --
1422 UNIX only.  (Not yet properly documented -- see however src/fcntl.doc.)
1424 Optional module mpz defines an interface to an altaernative long
1425 integer implementation, the GNU MPZ library.
1427 Optional module md5 uses the GNU MPZ library to calculate MD5
1428 signatures of strings.
1430 There are also optional new modules specific to SGI machines: imageop
1431 defines some simple operations to images represented as strings; sv
1432 interfaces to the Indigo video board; cl interfaces to the (yet
1433 unreleased) compression library.
1436 New standard library modules
1437 ----------------------------
1439 (Unfortunately the following modules are not all documented; read the
1440 sources to find out more about them!)
1442 autotest: run testall without showing any output unless it differs
1443 from the expected output
1445 bisect: use bisection to insert or find an item in a sorted list
1447 colorsys: defines conversions between various color systems (e.g. RGB
1448 <-> YUV)
1450 nntplib: a client interface to NNTP servers
1452 pipes: utility to construct pipeline from templates, e.g. for
1453 conversion from one file format to another using several utilities.
1455 regsub: contains three functions that are more or less compatible with
1456 awk functions of the same name: sub() and gsub() do string
1457 substitution, split() splits a string using a regular expression to
1458 define how separators are define.
1460 test_types: test operations on the built-in types of Python
1462 toaiff: convert various audio file formats to AIFF format
1464 tzparse: parse the TZ environment parameter (this may be less general
1465 than it could be, let me know if you fix it).
1467 (Note that the obsolete module "path" no longer exists.)
1470 New SGI-specific library modules
1471 --------------------------------
1473 CL: constants for use with the built-in compression library interface (cl)
1475 Queue: a multi-producer, multi-consumer queue class implemented for
1476 use with the built-in thread module
1478 SOCKET: constants for use with built-in module socket, e.g. to set/get
1479 socket options.  This is SGI-specific because the constants to be
1480 passed are system-dependent.  You can generate a version for your own
1481 system by running the script demo/scripts/h2py.py with
1482 /usr/include/sys/socket.h as input.
1484 cddb: interface to the database used the the CD player
1486 torgb: convert various image file types to rgb format (requires pbmplus)
1489 New demos
1490 ---------
1492 There's an experimental interface to define Sun RPC clients and
1493 servers in demo/rpc.
1495 There's a collection of interfaces to WWW, WAIS and Gopher (both
1496 Python classes and program providing a user interface) in demo/www.
1497 This includes a program texi2html.py which converts texinfo files to
1498 HTML files (the format used hy WWW).
1500 The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
1502 For SGI systems, there's a whole collection of programs and classes
1503 that make use of the Indigo video board in demo/sgi/{sv,video}.  This
1504 represents a significant amount of work that we're giving away!
1506 There are demos "rsa" and "md5test" that exercise the mpz and md5
1507 modules, respectively.  The rsa demo is a complete implementation of
1508 the RSA public-key cryptosystem!
1510 A bunch of games and examples submitted by Stoffel Erasmus have been
1511 included in demo/stoffel.
1513 There are miscellaneous new files in some existing demo
1514 subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
1515 sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
1517 There are also many minor changes to existing files, but I'm too lazy
1518 to run a diff and note the differences -- you can do this yourself if
1519 you save the old distribution's demos.  One highlight: the
1520 stdwin/python.py demo is much improved!
1523 Changes to the documentation
1524 ----------------------------
1526 The LaTeX source for the library uses different macros to enable it to
1527 be converted to texinfo, and from there to INFO or HTML format so it
1528 can be browsed as a hypertext.  The net result is that you can now
1529 read the Python library documentation in Emacs info mode!
1532 Changes to the source code that affect C extension writers
1533 ----------------------------------------------------------
1535 The function strdup() no longer exists (it was used only in one places
1536 and is somewhat of a a portability problem sice some systems have the
1537 same function in their C library.
1539 The functions NEW() and RENEW() allocate one spare byte to guard
1540 against a NULL return from malloc(0) being taken for an error, but
1541 this should not be relied upon.
1544 =========================
1545 ==> Release 0.9.7beta <==
1546 =========================
1549 Changes to the language proper
1550 ------------------------------
1552 User-defined classes can now implement operations invoked through
1553 special syntax, such as x[i] or `x` by defining methods named
1554 __getitem__(self, i) or __repr__(self), etc.
1557 Changes to the build process
1558 ----------------------------
1560 Instead of extensive manual editing of the Makefile to select
1561 compile-time options, you can now run a Configure.py script.
1562 The Makefile as distributed builds a minimal interpreter sufficient to
1563 run Configure.py.  See also misc/BUILD
1565 The Makefile now includes more "utility" targets, e.g. install and
1566 tags/TAGS
1568 Using the provided strtod.c and strtol.c are now separate options, as
1569 on the Sun the provided strtod.c dumps core :-(
1571 The regex module is now an option chosen by the Makefile, since some
1572 (old) C compilers choke on regexpr.c
1575 Changes affecting portability
1576 -----------------------------
1578 You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
1579 interface
1581 Dynamic loading is now supported for Sun (and other non-COFF systems)
1582 throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
1583 DL is out, 1.4)
1585 The system-dependent code for the use of the select() system call is
1586 moved to one file: myselect.h
1588 Thanks to Jaap Vermeulen, the code should now port cleanly to the
1589 SEQUENT
1592 Changes to the interpreter interface
1593 ------------------------------------
1595 The interpretation of $PYTHONPATH in the environment is different: it
1596 is inserted in front of the default path instead of overriding it
1599 Changes to existing built-in functions and methods
1600 --------------------------------------------------
1602 List objects now support an optional argument to their sort() method,
1603 which is a comparison function similar to qsort(3) in C
1605 File objects now have a method fileno(), used by the new select module
1606 (see below)
1609 New built-in function
1610 ---------------------
1612 coerce(x, y): take two numbers and return a tuple containing them
1613 both converted to a common type
1616 Changes to built-in modules
1617 ---------------------------
1619 sys: fixed core dumps in settrace() and setprofile()
1621 socket: added socket methods setsockopt() and getsockopt(); and
1622 fileno(), used by the new select module (see below)
1624 stdwin: added fileno() == connectionnumber(), in support of new module
1625 select (see below)
1627 posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
1629 gl: added qgetfd()
1631 fl: added several new functions, fixed several obscure bugs, adapted
1632 to FORMS 2.1
1635 Changes to standard modules
1636 ---------------------------
1638 posixpath: changed implementation of ismount()
1640 string: atoi() no longer mistakes leading zero for octal number
1645 New built-in modules
1646 --------------------
1648 Modules marked "dynamic only" are not configured at compile time but
1649 can be loaded dynamically.  You need to turn on the DL or DLD option in
1650 the Makefile for support dynamic loading of modules (this requires
1651 external code).
1653 select: interfaces to the BSD select() system call
1655 dbm: interfaces to the (new) dbm library (dynamic only)
1657 nis: interfaces to some NIS functions (aka yellow pages)
1659 thread: limited form of multiple threads (sgi only)
1661 audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
1662 coding (dynamic only)
1664 cd: interface to Indigo SCSI CDROM player audio library (sgi only)
1666 jpeg: read files in JPEG format (dynamic only, sgi only; needs
1667 external code)
1669 imgfile: read SGI image files (dynamic only, sgi only)
1671 sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
1673 sv: interface to Indigo video library (sgi only)
1675 pc: a minimal set of MS-DOS interfaces (MS-DOS only)
1677 rotor: encryption, by Lance Ellinghouse (dynamic only)
1680 New standard modules
1681 --------------------
1683 Not all these modules are documented.  Read the source:
1684 lib/<modulename>.py.  Sometimes a file lib/<modulename>.doc contains
1685 additional documentation.
1687 imghdr: recognizes image file headers
1689 sndhdr: recognizes sound file headers
1691 profile: print run-time statistics of Python code
1693 readcd, cdplayer: companion modules for built-in module cd (sgi only)
1695 emacs: interface to Emacs using py-connect.el (see below).
1697 SOCKET: symbolic constant definitions for socket options
1699 SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
1701 SV: symbolic constat definitions for sv (sgi only)
1703 CD: symbolic constat definitions for cd (sgi only)
1706 New demos
1707 ---------
1709 scripts/pp.py: execute Python as a filter with a Perl-like command
1710 line interface
1712 classes/: examples using the new class features
1714 threads/: examples using the new thread module
1716 sgi/cd/: examples using the new cd module
1719 Changes to the documentation
1720 ----------------------------
1722 The last-minute syntax changes of release 0.9.6 are now reflected
1723 everywhere in the manuals
1725 The reference manual has a new section (3.2) on implementing new kinds
1726 of numbers, sequences or mappings with user classes
1728 Classes are now treated extensively in the tutorial (chapter 9)
1730 Slightly restructured the system-dependent chapters of the library
1731 manual
1733 The file misc/EXTENDING incorporates documentation for mkvalue() and
1734 a new section on error handling
1736 The files misc/CLASSES and misc/ERRORS are no longer necessary
1738 The doc/Makefile now creates PostScript files automatically
1741 Miscellaneous changes
1742 ---------------------
1744 Incorporated Tim Peters' changes to python-mode.el, it's now version
1745 1.06
1747 A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
1748 program running in an Emacs buffer execute Emacs lisp code.  The
1749 necessary Python code is in lib/emacs.py.  The Emacs code is
1750 misc/py-connect.el (it needs some external Emacs lisp code)
1753 Changes to the source code that affect C extension writers
1754 ----------------------------------------------------------
1756 New service function mkvalue() to construct a Python object from C
1757 values according to a "format" string a la getargs()
1759 Most functions from pythonmain.c moved to new pythonrun.c which is
1760 in libpython.a.  This should make embedded versions of Python easier
1762 ceval.h is split in eval.h (which needs compile.h and only declares
1763 eval_code) and ceval.h (which doesn't need compile.hand declares the
1764 rest)
1766 ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
1767 improve the parallellism of multi-threaded programs by letting other
1768 Python code run when a blocking system call or something similar is
1769 made)
1771 In structmember.[ch], new member types BYTE, CHAR and unsigned
1772 variants have been added
1774 New file xxmodule.c is a template for new extension modules.
1777 ==================================
1778 ==> RELEASE 0.9.6 (6 Apr 1992) <==
1779 ==================================
1781 Misc news in 0.9.6:
1782 - Restructured the misc subdirectory
1783 - Reference manual completed, library manual much extended (with indexes!)
1784 - the GNU Readline library is now distributed standard with Python
1785 - the script "../demo/scripts/classfix.py" fixes Python modules using old
1786   class syntax
1787 - Emacs python-mode.el (was python.el) vastly improved (thanks, Tim!)
1788 - Because of the GNU copyleft business I am not using the GNU regular
1789   expression implementation but a free re-implementation by Tatu Ylonen
1790   that recently appeared in comp.sources.misc (Bravo, Tatu!)
1792 New features in 0.9.6:
1793 - stricter try stmt syntax: cannot mix except and finally clauses on 1 try
1794 - New module 'os' supplants modules 'mac' and 'posix' for most cases;
1795   module 'path' is replaced by 'os.path'
1796 - os.path.split() return value differs from that of old path.split()
1797 - sys.exc_type, sys.exc_value, sys.exc_traceback are set to the exception
1798   currently being handled
1799 - sys.last_type, sys.last_value, sys.last_traceback remember last unhandled
1800   exception
1801 - New function string.expandtabs() expands tabs in a string
1802 - Added times() interface to posix (user & sys time of process & children)
1803 - Added uname() interface to posix (returns OS type, hostname, etc.)
1804 - New built-in function execfile() is like exec() but from a file
1805 - Functions exec() and eval() are less picky about whitespace/newlines
1806 - New built-in functions getattr() and setattr() access arbitrary attributes
1807 - More generic argument handling in built-in functions (see "./EXTENDING")
1808 - Dynamic loading of modules written in C or C++ (see "./DYNLOAD")
1809 - Division and modulo for long and plain integers with negative operands
1810   have changed; a/b is now floor(float(a)/float(b)) and a%b is defined
1811   as a-(a/b)*b.  So now the outcome of divmod(a,b) is the same as
1812   (a/b, a%b) for integers.  For floats, % is also changed, but of course
1813   / is unchanged, and divmod(x,y) does not yield (x/y, x%y)...
1814 - A function with explicit variable-length argument list can be declared
1815   like this: def f(*args): ...; or even like this: def f(a, b, *rest): ...
1816 - Code tracing and profiling features have been added, and two source
1817   code debuggers are provided in the library (pdb.py, tty-oriented,
1818   and wdb, window-oriented); you can now step through Python programs!
1819   See sys.settrace() and sys.setprofile(), and "../lib/pdb.doc"
1820 - '==' is now the only equality operator; "../demo/scripts/eqfix.py" is
1821   a script that fixes old Python modules
1822 - Plain integer right shift now uses sign extension
1823 - Long integer shift/mask operations now simulate 2's complement
1824   to give more useful results for negative operands
1825 - Changed/added range checks for long/plain integer shifts
1826 - Options found after "-c command" are now passed to the command in sys.argv
1827   (note subtle incompatiblity with "python -c command -- -options"!)
1828 - Module stdwin is better protected against touching objects after they've
1829   been closed; menus can now also be closed explicitly
1830 - Stdwin now uses its own exception (stdwin.error)
1832 New features in 0.9.5 (released as Macintosh application only, 2 Jan 1992):
1833 - dictionary objects can now be compared properly; e.g., {}=={} is true
1834 - new exception SystemExit causes termination if not caught;
1835   it is raised by sys.exit() so that 'finally' clauses can clean up,
1836   and it may even be caught.  It does work interactively!
1837 - new module "regex" implements GNU Emacs style regular expressions;
1838   module "regexp" is rewritten in Python for backward compatibility
1839 - formal parameter lists may contain trailing commas
1841 Bugs fixed in 0.9.6:
1842 - assigning to or deleting a list item with a negative index dumped core
1843 - divmod(-10L,5L) returned (-3L, 5L) instead of (-2L, 0L)
1845 Bugs fixed in 0.9.5:
1846 - masking operations involving negative long integers gave wrong results
1849 ===================================
1850 ==> RELEASE 0.9.4 (24 Dec 1991) <==
1851 ===================================
1853 - new function argument handling (see below)
1854 - built-in apply(func, args) means func(args[0], args[1], ...)
1855 - new, more refined exceptions
1856 - new exception string values (NameError = 'NameError' etc.)
1857 - better checking for math exceptions
1858 - for sequences (string/tuple/list), x[-i] is now equivalent to x[len(x)-i]
1859 - fixed list assignment bug: "a[1:1] = a" now works correctly
1860 - new class syntax, without extraneous parentheses
1861 - new 'global' statement to assign global variables from within a function
1864 New class syntax
1865 ----------------
1867 You can now declare a base class as follows:
1869         class B:                        # Was: class B():
1870                 def some_method(self): ...
1871                 ...
1873 and a derived class thusly:
1875         class D(B):                     # Was: class D() = B():
1876                 def another_method(self, arg): ...
1878 Multiple inheritance looks like this:
1880         class M(B, D):                  # Was: class M() = B(), D():
1881                 def this_or_that_method(self, arg): ...
1883 The old syntax is still accepted by Python 0.9.4, but will disappear
1884 in Python 1.0 (to be posted to comp.sources).
1887 New 'global' statement
1888 ----------------------
1890 Every now and then you have a global variable in a module that you
1891 want to change from within a function in that module -- say, a count
1892 of calls to a function, or an option flag, etc.  Until now this was
1893 not directly possible.  While several kludges are known that
1894 circumvent the problem, and often the need for a global variable can
1895 be avoided by rewriting the module as a class, this does not always
1896 lead to clearer code.
1898 The 'global' statement solves this dilemma.  Its occurrence in a
1899 function body means that, for the duration of that function, the
1900 names listed there refer to global variables.  For instance:
1902         total = 0.0
1903         count = 0
1905         def add_to_total(amount):
1906                 global total, count
1907                 total = total + amount
1908                 count = count + 1
1910 'global' must be repeated in each function where it is needed.  The
1911 names listed in a 'global' statement must not be used in the function
1912 before the statement is reached.
1914 Remember that you don't need to use 'global' if you only want to *use*
1915 a global variable in a function; nor do you need ot for assignments to
1916 parts of global variables (e.g., list or dictionary items or
1917 attributes of class instances).  This has not changed; in fact
1918 assignment to part of a global variable was the standard workaround.
1921 New exceptions
1922 --------------
1924 Several new exceptions have been defined, to distinguish more clearly
1925 between different types of errors.
1927 name                    meaning                                 was
1929 AttributeError          reference to non-existing attribute     NameError
1930 IOError                 unexpected I/O error                    RuntimeError
1931 ImportError             import of non-existing module or name   NameError
1932 IndexError              invalid string, tuple or list index     RuntimeError
1933 KeyError                key not in dictionary                   RuntimeError
1934 OverflowError           numeric overflow                        RuntimeError
1935 SyntaxError             invalid syntax                          RuntimeError
1936 ValueError              invalid argument value                  RuntimeError
1937 ZeroDivisionError       division by zero                        RuntimeError
1939 The string value of each exception is now its name -- this makes it
1940 easier to experimentally find out which operations raise which
1941 exceptions; e.g.:
1943         >>> KeyboardInterrupt
1944         'KeyboardInterrupt'
1945         >>>
1948 New argument passing semantics
1949 ------------------------------
1951 Off-line discussions with Steve Majewski and Daniel LaLiberte have
1952 convinced me that Python's parameter mechanism could be changed in a
1953 way that made both of them happy (I hope), kept me happy, fixed a
1954 number of outstanding problems, and, given some backward compatibility
1955 provisions, would only break a very small amount of existing code --
1956 probably all mine anyway.  In fact I suspect that most Python users
1957 will hardly notice the difference.  And yet it has cost me at least
1958 one sleepless night to decide to make the change...
1960 Philosophically, the change is quite radical (to me, anyway): a
1961 function is no longer called with either zero or one argument, which
1962 is a tuple if there appear to be more arguments.  Every function now
1963 has an argument list containing 0, 1 or more arguments.  This list is
1964 always implemented as a tuple, and it is a (run-time) error if a
1965 function is called with a different number of arguments than expected.
1967 What's the difference? you may ask.  The answer is, very little unless
1968 you want to write variadic functions -- functions that may be called
1969 with a variable number of arguments.  Formerly, you could write a
1970 function that accepted one or more arguments with little trouble, but
1971 writing a function that could be called with either 0 or 1 argument
1972 (or more) was next to impossible.  This is now a piece of cake: you
1973 can simply declare an argument that receives the entire argument
1974 tuple, and check its length -- it will be of size 0 if there are no
1975 arguments.
1977 Another anomaly of the old system was the way multi-argument methods
1978 (in classes) had to be declared, e.g.:
1980         class Point():
1981                 def init(self, (x, y, color)): ...
1982                 def setcolor(self, color): ...
1983                 dev moveto(self, (x, y)): ...
1984                 def draw(self): ...
1986 Using the new scheme there is no need to enclose the method arguments
1987 in an extra set of parentheses, so the above class could become:
1989         class Point:
1990                 def init(self, x, y, color): ...
1991                 def setcolor(self, color): ...
1992                 dev moveto(self, x, y): ...
1993                 def draw(self): ...
1995 That is, the equivalence rule between methods and functions has
1996 changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y)
1997 while formerly it was equivalent to Point.moveto(p,(x,y)).
1999 A special backward compatibility rule makes that the old version also
2000 still works: whenever a function with exactly two arguments (at the top
2001 level) is called with more than two arguments, the second and further
2002 arguments are packed into a tuple and passed as the second argument.
2003 This rule is invoked independently of whether the function is actually a
2004 method, so there is a slight chance that some erroneous calls of
2005 functions expecting two arguments with more than that number of
2006 arguments go undetected at first -- when the function tries to use the
2007 second argument it may find it is a tuple instead of what was expected.
2008 Note that this rule will be removed from future versions of the
2009 language; it is a backward compatibility provision *only*.
2011 Two other rules and a new built-in function handle conversion between
2012 tuples and argument lists:
2014 Rule (a): when a function with more than one argument is called with a
2015 single argument that is a tuple of the right size, the tuple's items
2016 are used as arguments.
2018 Rule (b): when a function with exactly one argument receives no
2019 arguments or more than one, that one argument will receive a tuple
2020 containing the arguments (the tuple will be empty if there were no
2021 arguments).
2024 A new built-in function, apply(), was added to support functions that
2025 need to call other functions with a constructed argument list.  The call
2027         apply(function, tuple)
2029 is equivalent to
2031         function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
2034 While no new argument syntax was added in this phase, it would now be
2035 quite sensible to add explicit syntax to Python for default argument
2036 values (as in C++ or Modula-3), or a "rest" argument to receive the
2037 remaining arguments of a variable-length argument list.
2040 ========================================================
2041 ==> Release 0.9.3 (never made available outside CWI) <==
2042 ========================================================
2044 - string sys.version shows current version (also printed on interactive entry)
2045 - more detailed exceptions, e.g., IOError, ZeroDivisionError, etc.
2046 - 'global' statement to declare module-global variables assigned in functions.
2047 - new class declaration syntax: class C(Base1, Base2, ...): suite
2048   (the old syntax is still accepted -- be sure to convert your classes now!)
2049 - C shifting and masking operators: << >> ~ & ^ | (for ints and longs).
2050 - C comparison operators: == != (the old = and <> remain valid).
2051 - floating point numbers may now start with a period (e.g., .14).
2052 - definition of integer division tightened (always truncates towards zero).
2053 - new builtins hex(x), oct(x) return hex/octal string from (long) integer.
2054 - new list method l.count(x) returns the number of occurrences of x in l.
2055 - new SGI module: al (Indigo and 4D/35 audio library).
2056 - the FORMS interface (modules fl and FL) now uses FORMS 2.0
2057 - module gl: added lrect{read,write}, rectzoom and pixmode;
2058   added (non-GL) functions (un)packrect.
2059 - new socket method: s.allowbroadcast(flag).
2060 - many objects support __dict__, __methods__ or __members__.
2061 - dir() lists anything that has __dict__.
2062 - class attributes are no longer read-only.
2063 - classes support __bases__, instances support __class__ (and __dict__).
2064 - divmod() now also works for floats.
2065 - fixed obscure bug in eval('1            ').
2068 ===================================
2069 ==> Release 0.9.2 (Autumn 1991) <==
2070 ===================================
2072 Highlights
2073 ----------
2075 - tutorial now (almost) complete; library reference reorganized
2076 - new syntax: continue statement; semicolons; dictionary constructors;
2077   restrictions on blank lines in source files removed
2078 - dramatically improved module load time through precompiled modules
2079 - arbitrary precision integers: compute 2 to the power 1000 and more...
2080 - arithmetic operators now accept mixed type operands, e.g., 3.14/4
2081 - more operations on list: remove, index, reverse; repetition
2082 - improved/new file operations: readlines, seek, tell, flush, ...
2083 - process management added to the posix module: fork/exec/wait/kill etc.
2084 - BSD socket operations (with example servers and clients!)
2085 - many new STDWIN features (color, fonts, polygons, ...)
2086 - new SGI modules: font manager and FORMS library interface
2089 Extended list of changes in 0.9.2
2090 ---------------------------------
2092 Here is a summary of the most important user-visible changes in 0.9.2,
2093 in somewhat arbitrary order.  Changes in later versions are listed in
2094 the "highlights" section above.
2097 1. Changes to the interpreter proper
2099 - Simple statements can now be separated by semicolons.
2100   If you write "if t: s1; s2", both s1 and s2 are executed
2101   conditionally.
2102 - The 'continue' statement was added, with semantics as in C.
2103 - Dictionary displays are now allowed on input: {key: value, ...}.
2104 - Blank lines and lines bearing only a comment no longer need to
2105   be indented properly.  (A completely empty line still ends a multi-
2106   line statement interactively.)
2107 - Mixed arithmetic is supported, 1 compares equal to 1.0, etc.
2108 - Option "-c command" to execute statements from the command line
2109 - Compiled versions of modules are cached in ".pyc" files, giving a
2110   dramatic improvement of start-up time
2111 - Other, smaller speed improvements, e.g., extracting characters from
2112   strings, looking up single-character keys, and looking up global
2113   variables
2114 - Interrupting a print operation raises KeyboardInterrupt instead of
2115   only cancelling the print operation
2116 - Fixed various portability problems (it now passes gcc with only
2117   warnings -- more Standard C compatibility will be provided in later
2118   versions)
2119 - Source is prepared for porting to MS-DOS
2120 - Numeric constants are now checked for overflow (this requires
2121   standard-conforming strtol() and strtod() functions; a correct
2122   strtol() implementation is provided, but the strtod() provided
2123   relies on atof() for everything, including error checking
2126 2. Changes to the built-in types, functions and modules
2128 - New module socket: interface to BSD socket primitives
2129 - New modules pwd and grp: access the UNIX password and group databases
2130 - (SGI only:) New module "fm" interfaces to the SGI IRIX Font Manager
2131 - (SGI only:) New module "fl" interfaces to Mark Overmars' FORMS library
2132 - New numeric type: long integer, for unlimited precision
2133         - integer constants suffixed with 'L' or 'l' are long integers
2134         - new built-in function long(x) converts int or float to long
2135         - int() and float() now also convert from long integers
2136 - New built-in function:
2137         - pow(x, y) returns x to the power y
2138 - New operation and methods for lists:
2139         - l*n returns a new list consisting of n concatenated copies of l
2140         - l.remove(x) removes the first occurrence of the value x from l
2141         - l.index(x) returns the index of the first occurrence of x in l
2142         - l.reverse() reverses l in place
2143 - New operation for tuples:
2144         - t*n returns a tuple consisting of n concatenated copies of t
2145 - Improved file handling:
2146         - f.readline() no longer restricts the line length, is faster,
2147           and isn't confused by null bytes; same for raw_input()
2148         - f.read() without arguments reads the entire (rest of the) file
2149         - mixing of print and sys.stdout.write() has different effect
2150 - New methods for files:
2151         - f.readlines() returns a list containing the lines of the file,
2152           as read with f.readline()
2153         - f.flush(), f.tell(), f.seek() call their stdio counterparts
2154         - f.isatty() tests for "tty-ness"
2155 - New posix functions:
2156         - _exit(), exec(), fork(), getpid(), getppid(), kill(), wait()
2157         - popen() returns a file object connected to a pipe
2158         - utime() replaces utimes() (the latter is not a POSIX name)
2159 - New stdwin features, including:
2160         - font handling
2161         - color drawing
2162         - scroll bars made optional
2163         - polygons
2164         - filled and xor shapes
2165         - text editing objects now have a 'settext' method
2168 3. Changes to the standard library
2170 - Name change: the functions path.cat and macpath.cat are now called
2171   path.join and macpath.join
2172 - Added new modules: formatter, mutex, persist, sched, mainloop
2173 - Added some modules and functionality to the "widget set" (which is
2174   still under development, so please bear with me):
2175         DirList, FormSplit, TextEdit, WindowSched
2176 - Fixed module testall to work non-interactively
2177 - Module string:
2178         - added functions join() and joinfields()
2179         - fixed center() to work correct and make it "transitive"
2180 - Obsolete modules were removed: util, minmax
2181 - Some modules were moved to the demo directory
2184 4. Changes to the demonstration programs
2186 - Added new useful scipts: byteyears, eptags, fact, from, lfact,
2187   objgraph, pdeps, pi, primes, ptags, which
2188 - Added a bunch of socket demos
2189 - Doubled the speed of ptags
2190 - Added new stdwin demos: microedit, miniedit
2191 - Added a windowing interface to the Python interpreter: python (most
2192   useful on the Mac)
2193 - Added a browser for Emacs info files: demo/stdwin/ibrowse
2194   (yes, I plan to put all STDWIN and Python documentation in texinfo
2195   form in the future)
2198 5. Other changes to the distribution
2200 - An Emacs Lisp file "python.el" is provided to facilitate editing
2201   Python programs in GNU Emacs (slightly improved since posted to
2202   gnu.emacs.sources)
2203 - Some info on writing an extension in C is provided
2204 - Some info on building Python on non-UNIX platforms is provided
2207 =====================================
2208 ==> Release 0.9.1 (February 1991) <==
2209 =====================================
2211 - Micro changes only
2212 - Added file "patchlevel.h"
2215 =====================================
2216 ==> Release 0.9.0 (February 1991) <==
2217 =====================================
2219 Original posting to alt.sources.