blob: 2e9ed48991144730a1a12531f78f48bfd7ec5211 [file] [log] [blame]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001Python history
2--------------
3
4This file contains the release messages for previous Python releases
5(slightly edited to adapt them to the format of this file). As you
6read on you go back to the dark ages of Python's history.
7
Guido van Rossumaa253861994-10-06 17:18:57 +00008
Guido van Rossumf456b6d1995-01-04 19:20:37 +00009===================================
10==> Release 1.1.1 (10 Nov 1994) <==
11===================================
12
13This is a pure bugfix release again. See the ChangeLog file for details.
14
15One exception: a few new features were added to tkinter.
16
17
18=================================
19==> Release 1.1 (11 Oct 1994) <==
20=================================
21
22This release adds several new features, improved configuration and
23portability, and fixes more bugs than I can list here (including some
24memory leaks).
25
26The source compiles and runs out of the box on more platforms than
27ever -- including Windows NT. Makefiles or projects for a variety of
28non-UNIX platforms are provided.
29
30APOLOGY: some new features are badly documented or not at all. I had
31the choice -- postpone the new release indefinitely, or release it
32now, with working code but some undocumented areas. The problem with
33postponing the release is that people continue to suffer from existing
34bugs, and send me patches based on the previous release -- which I
35can't apply directly because my own source has changed. Also, some
36new modules (like signal) have been ready for release for quite some
37time, and people are anxiously waiting for them. In the case of
38signal, the interface is simple enough to figure out without
39documentation (if you're anxious enough :-). In this case it was not
40simple to release the module on its own, since it relies on many small
41patches elsewhere in the source.
42
43For most new Python modules, the source code contains comments that
44explain how to use them. Documentation for the Tk interface, written
45by Matt Conway, is available as tkinter-doc.tar.gz from the Python
46home and mirror ftp sites (see Misc/FAQ for ftp addresses). For the
47new operator overloading facilities, have a look at Demo/classes:
48Complex.py and Rat.py show how to implement a numeric type without and
49with __coerce__ method. Also have a look at the end of the Tutorial
50document (Doc/tut.tex). If you're still confused: use the newsgroup
51or mailing list.
52
53
54New language features:
55
56 - More flexible operator overloading for user-defined classes
57 (INCOMPATIBLE WITH PREVIOUS VERSIONS!) See end of tutorial.
58
59 - Classes can define methods named __getattr__, __setattr__ and
60 __delattr__ to trap attribute accesses. See end of tutorial.
61
62 - Classes can define method __call__ so instances can be called
63 directly. See end of tutorial.
64
65
66New support facilities:
67
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.
71
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!)
74
75 - New Freeze script, to create independently distributable "binaries"
76 of Python programs -- look in Demo/freeze
77
78 - Improved h2py script (in Demo/scripts) follows #includes and
79 supports macros with one argument
80
81 - New module compileall generates .pyc files for all modules in a
82 directory (tree) without also executing them
83
84 - Threads should work on more platforms
85
86
87New built-in modules:
88
89 - tkinter (support for Tcl's Tk widget set) is now part of the base
90 distribution
91
92 - signal allows catching or ignoring UNIX signals (unfortunately still
93 undocumented -- any taker?)
94
95 - termios provides portable access to POSIX tty settings
96
97 - curses provides an interface to the System V curses library
98
99 - syslog provides an interface to the (BSD?) syslog daemon
100
101 - 'new' provides interfaces to create new built-in object types
102 (e.g. modules and functions)
103
104 - sybase provides an interface to SYBASE database
105
106
107New/obsolete built-in methods:
108
109 - callable(x) tests whether x can be called
110
111 - sockets now have a setblocking() method
112
113 - sockets no longer have an allowbroadcast() method
114
115 - socket methods send() and sendto() return byte count
116
117
118New standard library modules:
119
120 - types.py defines standard names for built-in types, e.g. StringType
121
122 - urlparse.py parses URLs according to the latest Internet draft
123
124 - uu.py does uuencode/uudecode (not the fastest in the world, but
125 quicker than installing uuencode on a non-UNIX machine :-)
126
127 - New, faster and more powerful profile module.py
128
129 - mhlib.py provides interface to MH folders and messages
130
131
132New facilities for extension writers (unfortunately still
133undocumented):
134
135 - newgetargs() supports optional arguments and improved error messages
136
137 - O!, O& O? formats for getargs allow more versatile type checking of
138 non-standard types
139
140 - can register pending asynchronous callback, to be called the next
141 time the Python VM begins a new instruction (Py_AddPendingCall)
142
143 - can register cleanup routines to be called when Python exits
144 (Py_AtExit)
145
146 - makesetup script understands C++ files in Setup file (use file.C
147 or file.cc)
148
149 - Make variable OPT is passed on to sub-Makefiles
150
151 - An init<module>() routine may signal an error by not entering
152 the module in the module table and raising an exception instead
153
154 - For long module names, instead of foobarbletchmodule.c you can
155 use foobarbletch.c
156
157 - getintvalue() and getfloatvalue() try to convert any object
158 instead of requiring an "intobject" or "floatobject"
159
160 - All the [new]getargs() formats that retrieve an integer value
161 will now also work if a float is passed
162
163 - C function listtuple() converts list to tuple, fast
164
165 - You should now call sigcheck() instead of intrcheck();
166 sigcheck() also sets an exception when it returns nonzero
167
168
Guido van Rossumaa253861994-10-06 17:18:57 +0000169====================================
170==> Release 1.0.3 (14 July 1994) <==
171====================================
172
173This release consists entirely of bug fixes to the C sources; see the
174head of ../ChangeLog for a complete list. Most important bugs fixed:
175
176- Sometimes the format operator (string%expr) would drop the last
177character of the format string
178
179- Tokenizer looped when last line did not end in \n
180
181- Bug when triple-quoted string ended in quote plus newline
182
183- Typo in socketmodule (listen) (== instead of =)
184
185- typing vars() at the >>> prompt would cause recursive output
186
187
188==================================
189==> Release 1.0.2 (4 May 1994) <==
190==================================
191
192Overview of the most visible changes. Bug fixes are not listed. See
193also ChangeLog.
194
195Tokens
196------
197
198* String literals follow Standard C rules: they may be continued on
199the next line using a backslash; adjacent literals are concatenated
200at compile time.
201
202* A new kind of string literals, surrounded by triple quotes (""" or
203'''), can be continued on the next line without a backslash.
204
205Syntax
206------
207
208* Function arguments may have a default value, e.g. def f(a, b=1);
209defaults are evaluated at function definition time. This also applies
210to lambda.
211
212* The try-except statement has an optional else clause, which is
213executed when no exception occurs in the try clause.
214
215Interpreter
216-----------
217
218* The result of a statement-level expression is no longer printed,
219except_ for expressions entered interactively. Consequently, the -k
220command line option is gone.
221
222* The result of the last printed interactive expression is assigned to
223the variable '_'.
224
225* Access to implicit global variables has been speeded up by removing
226an always-failing dictionary lookup in the dictionary of local
227variables (mod suggested by Steve Makewski and Tim Peters).
228
229* There is a new command line option, -u, to force stdout and stderr
230to be unbuffered.
231
232* Incorporated Steve Majewski's mods to import.c for dynamic loading
233under AIX.
234
235* Fewer chances of dumping core when trying to reload or re-import
236static built-in, dynamically loaded built-in, or frozen modules.
237
238* Loops over sequences now don't ask for the sequence's length when
239they start, but try to access items 0, 1, 2, and so on until they hit
240an IndexError. This makes it possible to create classes that generate
241infinite or indefinite sequences a la Steve Majewski. This affects
242for loops, the (not) in operator, and the built-in functions filter(),
243map(), max(), min(), reduce().
244
245Changed Built-in operations
246---------------------------
247
248* The '%' operator on strings (printf-style formatting) supports a new
249feature (adapted from a patch by Donald Beaudry) to allow
250'%(<key>)<format>' % {...} to take values from a dictionary by name
251instead of from a tuple by position (see also the new function
252vars()).
253
254* The '%s' formatting operator is changed to accept any type and
255convert it to a string using str().
256
257* Dictionaries with more than 20,000 entries can now be created
258(thanks to Steve Kirsch).
259
260New Built-in Functions
261----------------------
262
263* vars() returns a dictionary containing the local variables; vars(m)
264returns a dictionary containing the variables of module m. Note:
265dir(x) is now equivalent to vars(x).keys().
266
267Changed Built-in Functions
268--------------------------
269
270* open() has an optional third argument to specify the buffer size: 0
271for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0
272for default.
273
274* open()'s second argument is now optional; it defaults to "r".
275
276* apply() now checks that its second argument is indeed a tuple.
277
278New Built-in Modules
279--------------------
280
281Changed Built-in Modules
282------------------------
283
284The thread module no longer supports exit_prog().
285
286New Python Modules
287------------------
288
289* Module addpack contains a standard interface to modify sys.path to
290find optional packages (groups of related modules).
291
292* Module urllib contains a number of functions to access
293World-Wide-Web files specified by their URL.
294
295* Module httplib implements the client side of the HTTP protocol used
296by World-Wide-Web servers.
297
298* Module gopherlib implements the client side of the Gopher protocol.
299
300* Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
301style mailbox files.
302
303* Module random contains various random distributions, e.g. gauss().
304
305* Module lockfile locks and unlocks open files using fcntl (inspired
306by a similar module by Andy Bensky).
307
308* Module ntpath (by Jaap Vermeulen) implements path operations for
309Windows/NT.
310
311* Module test_thread (in Lib/test) contains a small test set for the
312thread module.
313
314Changed Python Modules
315----------------------
316
317* The string module's expandvars() function is now documented and is
318implemented in Python (using regular expressions) instead of forking
319off a shell process.
320
321* Module rfc822 now supports accessing the header fields using the
322mapping/dictionary interface, e.g. h['subject'].
323
324* Module pdb now makes it possible to set a break on a function
325(syntax: break <expression>, where <expression> yields a function
326object).
327
328Changed Demos
329-------------
330
331* The Demo/scripts/freeze.py script is working again (thanks to Jaap
332Vermeulen).
333
334New Demos
335---------
336
337* Demo/threads/Generator.py is a proposed interface for restartable
338functions a la Tim Peters.
339
340* Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a
341directory full of HTML pages which between them contain links to all
342the newsgroups available on your server.
343
344* Demo/dns contains a DNS (Domain Name Server) client.
345
346* Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
347nice enhanced Python shell!!!).
348
349* Demo/turing contains a Turing machine by Amrit Prem.
350
351Documentation
352-------------
353
354* Documented new language features mentioned above (but not all new
355modules).
356
357* Added a chapter to the Tutorial describing recent additions to
358Python.
359
360* Clarified some sentences in the reference manual,
361e.g. break/continue, local/global scope, slice assignment.
362
363Source Structure
364----------------
365
366* Moved Include/tokenizer.h to Parser/tokenizer.h.
367
368* Added Python/getopt.c for systems that don't have it.
369
370Emacs mode
371----------
372
373* Indentation of continuated lines is done more intelligently;
374consequently the variable py-continuation-offset is gone.
375
376========================================
377==> Release 1.0.1 (15 February 1994) <==
378========================================
379
380* Many portability fixes should make it painless to build Python on
381several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
382
383* Fixed test for <stdarg.h> -- this broke on some platforms.
384
385* Fixed test for shared library dynalic loading -- this broke on SunOS
3864.x using the GNU loader.
387
388* Changed order and number of SVR4 networking libraries (it is now
389-lsocket -linet -lnsl, if these libraries exist).
390
391* Installing the build intermediate stages with "make libainstall" now
392also installs config.c.in, Setup and makesetup, which are used by the
393new Extensions mechanism.
394
395* Improved README file contains more hints and new troubleshooting
396section.
397
398* The built-in module strop now defines fast versions of three more
399functions of the standard string module: atoi(), atol() and atof().
400The strop versions of atoi() and atol() support an optional second
401argument to specify the base (default 10). NOTE: you don't have to
402explicitly import strop to use the faster versions -- the string
403module contains code to let versions from stop override the default
404versions.
405
406* There is now a working Lib/dospath.py for those who use Python under
407DOS (or Windows). Thanks, Jaap!
408
409* There is now a working Modules/dosmodule.c for DOS (or Windows)
410system calls.
411
412* Lib.os.py has been reorganized (making it ready for more operating
413systems).
414
415* Lib/ospath.py is now obsolete (use os.path instead).
416
417* Many fixes to the tutorial to make it match Python 1.0. Thanks,
418Tim!
419
420* Fixed Doc/Makefile, Doc/README and various scripts there.
421
422* Added missing description of fdopen to Doc/libposix.tex.
423
424* Made cleanup() global, for the benefit of embedded applications.
425
426* Added parsing of addresses and dates to Lib/rfc822.py.
427
428* Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
429them usable at all.
430
431* New module Lib/wave.py reads RIFF (*.wav) audio files.
432
433* Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
434belongs.
435
436* New options and comments for Modules/makesetup (used by new
437Extension mechanism).
438
439* Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
440and elsewhere.
441
442* Fixed coredump in filter(None, 'abcdefg').
443
444
445=======================================
446==> Release 1.0.0 (26 January 1994) <==
447=======================================
448
449As is traditional, so many things have changed that I can't pretend to
450be complete in these release notes, but I'll try anyway :-)
451
452Note that the very last section is labeled "remaining bugs".
453
454
455Source organization and build process
456-------------------------------------
457
458* The sources have finally been split: instead of a single src
459subdirectory there are now separate directories Include, Parser,
460Grammar, Objects, Python and Modules. Other directories also start
461with a capital letter: Misc, Doc, Lib, Demo.
462
463* A few extensions (notably Amoeba and X support) have been moved to a
464separate subtree Extensions, which is no longer in the core
465distribution, but separately ftp'able as extensions.tar.Z. (The
466distribution contains a placeholder Ext-dummy with a description of
467the Extensions subtree as well as the most recent versions of the
468scripts used there.)
469
470* A few large specialized demos (SGI video and www) have been
471moved to a separate subdirectory Demo2, which is no longer in the core
472distribution, but separately ftp'able as demo2.tar.Z.
473
474* Parts of the standard library have been moved to subdirectories:
475there are now standard subdirectories stdwin, test, sgi and sun4.
476
477* The configuration process has radically changed: I now use GNU
478autoconf. This makes it much easier to build on new Unix flavors, as
479well as fully supporting VPATH (if your Make has it). The scripts
480Configure.py and Addmodule.sh are no longer needed. Many source files
481have been adapted in order to work with the symbols that the configure
482script generated by autoconf defines (or not); the resulting source is
483much more portable to different C compilers and operating systems,
484even non Unix systems (a Mac port was done in an afternoon). See the
485toplevel README file for a description of the new build process.
486
487* GNU readline (a slightly newer version) is now a subdirectory of the
488Python toplevel. It is still not automatically configured (being
489totally autoconf-unaware :-). One problem has been solved: typing
490Control-C to a readline prompt will now work. The distribution no
491longer contains a "super-level" directory (above the python toplevel
492directory), and dl, dl-dld and GNU dld are no longer part of the
493Python distribution (you can still ftp them from
494ftp.cwi.nl:/pub/dynload).
495
496* The DOS functions have been taken out of posixmodule.c and moved
497into a separate file dosmodule.c.
498
499* There's now a separate file version.c which contains nothing but
500the version number.
501
502* The actual main program is now contained in config.c (unless NO_MAIN
503is defined); pythonmain.c now contains a function realmain() which is
504called from config.c's main().
505
506* All files needed to use the built-in module md5 are now contained in
507the distribution. The module has been cleaned up considerably.
508
509
510Documentation
511-------------
512
513* The library manual has been split into many more small latex files,
514so it is easier to edit Doc/lib.tex file to create a custom library
515manual, describing only those modules supported on your system. (This
516is not automated though.)
517
518* A fourth manual has been added, titled "Extending and Embedding the
519Python Interpreter" (Doc/ext.tex), which collects information about
520the interpreter which was previously spread over several files in the
521misc subdirectory.
522
523* The entire documentation is now also available on-line for those who
524have a WWW browser (e.g. NCSA Mosaic). Point your browser to the URL
525"http://www.cwi.nl/~guido/Python.html".
526
527
528Syntax
529------
530
531* Strings may now be enclosed in double quotes as well as in single
532quotes. There is no difference in interpretation. The repr() of
533string objects will use double quotes if the string contains a single
534quote and no double quotes. Thanks to Amrit Prem for these changes!
535
536* There is a new keyword 'exec'. This replaces the exec() built-in
537function. If a function contains an exec statement, local variable
538optimization is not performed for that particular function, thus
539making assignment to local variables in exec statements less
540confusing. (As a consequence, os.exec and python.exec have been
541renamed to execv.)
542
543* There is a new keyword 'lambda'. An expression of the form
544
545 lambda <parameters> : <expression>
546
547yields an anonymous function. This is really only syntactic sugar;
548you can just as well define a local function using
549
550 def some_temporary_name(<parameters>): return <expression>
551
552Lambda expressions are particularly useful in combination with map(),
553filter() and reduce(), described below. Thanks to Amrit Prem for
554submitting this code (as well as map(), filter(), reduce() and
555xrange())!
556
557
558Built-in functions
559------------------
560
561* The built-in module containing the built-in functions is called
562__builtin__ instead of builtin.
563
564* New built-in functions map(), filter() and reduce() perform standard
565functional programming operations (though not lazily):
566
567- map(f, seq) returns a new sequence whose items are the items from
568seq with f() applied to them.
569
570- filter(f, seq) returns a subsequence of seq consisting of those
571items for which f() is true.
572
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
577
578* New function xrange() creates a "range object". Its arguments are
579the same as those of range(), and when used in a for loop a range
580objects also behaves identical. The advantage of xrange() over
581range() is that its representation (if the range contains many
582elements) is much more compact than that of range(). The disadvantage
583is that the result cannot be used to initialize a list object or for
584the "Python idiom" [RED, GREEN, BLUE] = range(3). On some modern
585architectures, benchmarks have shown that "for i in range(...): ..."
586actually executes *faster* than "for i in xrange(...): ...", but on
587memory starved machines like PCs running DOS range(100000) may be just
588too big to be represented at all...
589
590* Built-in function exec() has been replaced by the exec statement --
591see above.
592
593
594The interpreter
595---------------
596
597* Syntax errors are now not printed to stderr by the parser, but
598rather the offending line and other relevant information are packed up
599in the SyntaxError exception argument. When the main loop catches a
600SyntaxError exception it will print the error in the same format as
601previously, but at the proper position in the stack traceback.
602
603* You can now set a maximum to the number of traceback entries
604printed by assigning to sys.tracebacklimit. The default is 1000.
605
606* The version number in .pyc files has changed yet again.
607
608* It is now possible to have a .pyc file without a corresponding .py
609file. (Warning: this may break existing installations if you have an
610old .pyc file lingering around somewhere on your module search path
611without a corresponding .py file, when there is a .py file for a
612module of the same name further down the path -- the new interpreter
613will find the first .pyc file and complain about it, while the old
614interpreter would ignore it and use the .py file further down.)
615
616* The list sys.builtin_module_names is now sorted and also contains
617the names of a few hardwired built-in modules (sys, __main__ and
618__builtin__).
619
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).
623A neat hack follows from this: a module that wants to execute a main
624program when called as a script no longer needs to compare
625sys.argv[0]; it can simply do "if __name__ == '__main__': main()".
626
627* When an object is printed by the print statement, its implementation
628of str() is used. This means that classes can define __str__(self) to
629direct how their instances are printed. This is different from
630__repr__(self), which should define an unambigous string
631representation of the instance. (If __str__() is not defined, it
632defaults to __repr__().)
633
634* Functions and code objects can now be compared meaningfully.
635
636* On systems supporting SunOS or SVR4 style shared libraries, dynamic
637loading of modules using shared libraries is automatically configured.
638Thanks to Bill Jansen and Denis Severson for contributing this change!
639
640
641Built-in objects
642----------------
643
644* File objects have acquired a new method writelines() which is the
645reverse of readlines(). (It does not actually write lines, just a
646list of strings, but the symmetry makes the choice of name OK.)
647
648
649Built-in modules
650----------------
651
652* Socket objects no longer support the avail() method. Use the select
653module instead, or use this function to replace it:
654
655 def avail(f):
656 import select
657 return f in select.select([f], [], [], 0)[0]
658
659* Initialization of stdwin is done differently. It actually modifies
660sys.argv (taking out the options the X version of stdwin recognizes)
661the first time it is imported.
662
663* A new built-in module parser provides a rudimentary interface to the
664python parser. Corresponding standard library modules token and symbol
665defines the numeric values of tokens and non-terminal symbols.
666
667* The posix module has aquired new functions setuid(), setgid(),
668execve(), and exec() has been renamed to execv().
669
670* The array module is extended with 8-byte object swaps, the 'i'
671format character, and a reverse() method. The read() and write()
672methods are renamed to fromfile() and tofile().
673
674* The rotor module has freed of portability bugs. This introduces a
675backward compatibility problem: strings encoded with the old rotor
676module can't be decoded by the new version.
677
678* For select.select(), a timeout (4th) argument of None means the same
679as leaving the timeout argument out.
680
681* Module strop (and hence standard library module string) has aquired
682a new function: rindex(). Thanks to Amrit Prem!
683
684* Module regex defines a new function symcomp() which uses an extended
685regular expression syntax: parenthesized subexpressions may be labeled
686using the form "\(<labelname>...\)", and the group() method can return
687sub-expressions by name. Thanks to Tracy Tims for these changes!
688
689* Multiple threads are now supported on Solaris 2. Thanks to Sjoerd
690Mullender!
691
692
693Standard library modules
694------------------------
695
696* The library is now split in several subdirectories: all stuff using
697stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff
698is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all
699test modules are in Lib/test. The default module search path will
700include all relevant subdirectories by default.
701
702* Module os now knows about trying to import dos. It defines
703functions execl(), execle(), execlp() and execvp().
704
705* New module dospath (should be attacked by a DOS hacker though).
706
707* All modules defining classes now define __init__() constructors
708instead of init() methods. THIS IS AN INCOMPATIBLE CHANGE!
709
710* Some minor changes and bugfixes module ftplib (mostly Steve
711Majewski's suggestions); the debug() method is renamed to
712set_debuglevel().
713
714* Some new test modules (not run automatically by testall though):
715test_audioop, test_md5, test_rgbimg, test_select.
716
717* Module string now defines rindex() and rfind() in analogy of index()
718and find(). It also defines atof() and atol() (and corresponding
719exceptions) in analogy to atoi().
720
721* Added help() functions to modules profile and pdb.
722
723* The wdb debugger (now in Lib/stdwin) now shows class or instance
724variables on a double click. Thanks to Sjoerd Mullender!
725
726* The (undocumented) module lambda has gone -- you couldn't import it
727any more, and it was basically more a demo than a library module...
728
729
730Multimedia extensions
731---------------------
732
733* The optional built-in modules audioop and imageop are now standard
734parts of the interpreter. Thanks to Sjoerd Mullender and Jack Jansen
735for contributing this code!
736
737* There's a new operation in audioop: minmax().
738
739* There's a new built-in module called rgbimg which supports portable
740efficient reading of SGI RCG image files. Thanks also to Paul
741Haeberli for the original code! (Who will contribute a GIF reader?)
742
743* The module aifc is gone -- you should now always use aifc, which has
744received a facelift.
745
746* There's a new module sunau., for reading Sun (and NeXT) audio files.
747
748* There's a new module audiodev which provides a uniform interface to
749(SGI Indigo and Sun Sparc) audio hardware.
750
751* There's a new module sndhdr which recognizes various sound files by
752looking in their header and checking for various magic words.
753
754
755Optimizations
756-------------
757
758* Most optimizations below can be configured by compile-time flags.
759Thanks to Sjoerd Mullender for submitting these optimizations!
760
761* Small integers (default -1..99) are shared -- i.e. if two different
762functions compute the same value it is possible (but not
763guaranteed!!!) that they return the same *object*. Python programs
764can detect this but should *never* rely on it.
765
766* Empty tuples (which all compare equal) are shared in the same
767manner.
768
769* Tuples of size up to 20 (default) are put in separate free lists
770when deallocated.
771
772* There is a compile-time option to cache a string's hash function,
773but this appeared to have a negligeable effect, and as it costs 4
774bytes per string it is disabled by default.
775
776
777Embedding Python
778----------------
779
780* The initialization interface has been simplified somewhat. You now
781only call "initall()" to initialize the interpreter.
782
783* The previously announced renaming of externally visible identifiers
784has not been carried out. It will happen in a later release. Sorry.
785
786
787Miscellaneous bugs that have been fixed
788---------------------------------------
789
790* All known portability bugs.
791
792* Version 0.9.9 dumped core in <listobject>.sort() which has been
793fixed. Thanks to Jaap Vermeulen for fixing this and posting the fix
794on the mailing list while I was away!
795
796* Core dump on a format string ending in '%', e.g. in the expression
797'%' % None.
798
799* The array module yielded a bogus result for concatenation (a+b would
800yield a+a).
801
802* Some serious memory leaks in strop.split() and strop.splitfields().
803
804* Several problems with the nis module.
805
806* Subtle problem when copying a class method from another class
807through assignment (the method could not be called).
808
809
810Remaining bugs
811--------------
812
813* One problem with 64-bit machines remains -- since .pyc files are
814portable and use only 4 bytes to represent an integer object, 64-bit
815integer literals are silently truncated when written into a .pyc file.
816Work-around: use eval('123456789101112').
817
818* The freeze script doesn't work any more. A new and more portable
819one can probably be cooked up using tricks from Extensions/mkext.py.
820
821* The dos support hasn't been tested yet. (Really Soon Now we should
822have a PC with a working C compiler!)
823
824
Guido van Rossuma7925f11994-01-26 10:20:16 +0000825===================================
826==> Release 0.9.9 (29 Jul 1993) <==
827===================================
828
829I *believe* these are the main user-visible changes in this release,
830but there may be others. SGI users may scan the {src,lib}/ChangeLog
831files for improvements of some SGI specific modules, e.g. aifc and
832cl. Developers of extension modules should also read src/ChangeLog.
833
834
835Naming of C symbols used by the Python interpreter
836--------------------------------------------------
837
838* This is the last release using the current naming conventions. New
839naming conventions are explained in the file misc/NAMING.
840Summarizing, all externally visible symbols get (at least) a "Py"
841prefix, and most functions are renamed to the standard form
842PyModule_FunctionName.
843
844* Writers of extensions are urged to start using the new naming
845conventions. The next release will use the new naming conventions
846throughout (it will also have a different source directory
847structure).
848
849* As a result of the preliminary work for the great renaming, many
850functions that were accidentally global have been made static.
851
852
853BETA X11 support
854----------------
855
856* There are now modules interfacing to the X11 Toolkit Intrinsics, the
857Athena widgets, and the Motif 1.1 widget set. These are not yet
858documented except through the examples and README file in the demo/x11
859directory. It is expected that this interface will be replaced by a
860more powerful and correct one in the future, which may or may not be
861backward compatible. In other words, this part of the code is at most
862BETA level software! (Note: the rest of Python is rock solid as ever!)
863
864* I understand that the above may be a bit of a disappointment,
865however my current schedule does not allow me to change this situation
866before putting the release out of the door. By releasing it
867undocumented and buggy, at least some of the (working!) demo programs,
868like itr (my Internet Talk Radio browser) become available to a larger
869audience.
870
871* There are also modules interfacing to SGI's "Glx" widget (a GL
872window wrapped in a widget) and to NCSA's "HTML" widget (which can
873format HyperText Markup Language, the document format used by the
874World Wide Web).
875
876* I've experienced some problems when building the X11 support. In
877particular, the Xm and Xaw widget sets don't go together, and it
878appears that using X11R5 is better than using X11R4. Also the threads
879module and its link time options may spoil things. My own strategy is
880to build two Python binaries: one for use with X11 and one without
881it, which can contain a richer set of built-in modules. Don't even
882*think* of loading the X11 modules dynamically...
883
884
885Environmental changes
886---------------------
887
888* Compiled files (*.pyc files) created by this Python version are
889incompatible with those created by the previous version. Both
890versions detect this and silently create a correct version, but it
891means that it is not a good idea to use the same library directory for
892an old and a new interpreter, since they will start to "fight" over
893the *.pyc files...
894
895* When a stack trace is printed, the exception is printed last instead
896of first. This means that if the beginning of the stack trace
897scrolled out of your window you can still see what exception caused
898it.
899
900* Sometimes interrupting a Python operation does not work because it
901hangs in a blocking system call. You can now kill the interpreter by
902interrupting it three times. The second time you interrupt it, a
903message will be printed telling you that the third interrupt will kill
904the interpreter. The "sys.exitfunc" feature still makes limited
905clean-up possible in this case.
906
907
908Changes to the command line interface
909-------------------------------------
910
911* The python usage message is now much more informative.
912
913* New option -i enters interactive mode after executing a script --
914useful for debugging.
915
916* New option -k raises an exception when an expression statement
917yields a value other than None.
918
919* For each option there is now also a corresponding environment
920variable.
921
922
923Using Python as an embedded language
924------------------------------------
925
926* The distribution now contains (some) documentation on the use of
927Python as an "embedded language" in other applications, as well as a
928simple example. See the file misc/EMBEDDING and the directory embed/.
929
930
931Speed improvements
932------------------
933
934* Function local variables are now generally stored in an array and
935accessed using an integer indexing operation, instead of through a
936dictionary lookup. (This compensates the somewhat slower dictionary
937lookup caused by the generalization of the dictionary module.)
938
939
940Changes to the syntax
941---------------------
942
943* Continuation lines can now *sometimes* be written without a
944backslash: if the continuation is contained within nesting (), [] or
945{} brackets the \ may be omitted. There's a much improved
946python-mode.el in the misc directory which knows about this as well.
947
948* You can no longer use an empty set of parentheses to define a class
949without base classes. That is, you no longer write this:
950
951 class Foo(): # syntax error
952 ...
953
954You must write this instead:
955
956 class Foo:
957 ...
958
959This was already the preferred syntax in release 0.9.8 but many
960people seemed not to have picked it up. There's a Python script that
961fixes old code: demo/scripts/classfix.py.
962
963* There's a new reserved word: "access". The syntax and semantics are
964still subject of of research and debate (as well as undocumented), but
965the parser knows about the keyword so you must not use it as a
966variable, function, or attribute name.
967
968
969Changes to the semantics of the language proper
970-----------------------------------------------
971
972* The following compatibility hack is removed: if a function was
973defined with two or more arguments, and called with a single argument
974that was a tuple with just as many arguments, the items of this tuple
975would be used as the arguments. This is no longer supported.
976
977
978Changes to the semantics of classes and instances
979-------------------------------------------------
980
981* Class variables are now also accessible as instance variables for
982reading (assignment creates an instance variable which overrides the
983class variable of the same name though).
984
985* If a class attribute is a user-defined function, a new kind of
986object is returned: an "unbound method". This contains a pointer to
987the class and can only be called with a first argument which is a
988member of that class (or a derived class).
989
990* If a class defines a method __init__(self, arg1, ...) then this
991method is called when a class instance is created by the classname()
992construct. Arguments passed to classname() are passed to the
993__init__() method. The __init__() methods of base classes are not
994automatically called; the derived __init__() method must call these if
995necessary (this was done so the derived __init__() method can choose
996the call order and arguments for the base __init__() methods).
997
998* If a class defines a method __del__(self) then this method is called
999when an instance of the class is about to be destroyed. This makes it
1000possible to implement clean-up of external resources attached to the
1001instance. As with __init__(), the __del__() methods of base classes
1002are not automatically called. If __del__ manages to store a reference
1003to the object somewhere, its destruction is postponed; when the object
1004is again about to be destroyed its __del__() method will be called
1005again.
1006
1007* Classes may define a method __hash__(self) to allow their instances
1008to be used as dictionary keys. This must return a 32-bit integer.
1009
1010
1011Minor improvements
1012------------------
1013
1014* Function and class objects now know their name (the name given in
1015the 'def' or 'class' statement that created them).
1016
1017* Class instances now know their class name.
1018
1019
1020Additions to built-in operations
1021--------------------------------
1022
1023* The % operator with a string left argument implements formatting
1024similar to sprintf() in C. The right argument is either a single
1025value or a tuple of values. All features of Standard C sprintf() are
1026supported except %p.
1027
1028* Dictionaries now support almost any key type, instead of just
1029strings. (The key type must be an immutable type or must be a class
1030instance where the class defines a method __hash__(), in order to
1031avoid losing track of keys whose value may change.)
1032
1033* Built-in methods are now compared properly: when comparing x.meth1
1034and y.meth2, if x is equal to y and the methods are defined by the
1035same function, x.meth1 compares equal to y.meth2.
1036
1037
1038Additions to built-in functions
1039-------------------------------
1040
1041* str(x) returns a string version of its argument. If the argument is
1042a string it is returned unchanged, otherwise it returns `x`.
1043
1044* repr(x) returns the same as `x`. (Some users found it easier to
1045have this as a function.)
1046
1047* round(x) returns the floating point number x rounded to an whole
1048number, represented as a floating point number. round(x, n) returns x
1049rounded to n digits.
1050
1051* hasattr(x, name) returns true when x has an attribute with the given
1052name.
1053
1054* hash(x) returns a hash code (32-bit integer) of an arbitrary
1055immutable object's value.
1056
1057* id(x) returns a unique identifier (32-bit integer) of an arbitrary
1058object.
1059
1060* compile() compiles a string to a Python code object.
1061
1062* exec() and eval() now support execution of code objects.
1063
1064
1065Changes to the documented part of the library (standard modules)
1066----------------------------------------------------------------
1067
1068* os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
1069the border case '/foo/..' returns '/' instead of ''.
1070
1071* A new function string.find() is added with similar semantics to
1072string.index(); however when it does not find the given substring it
1073returns -1 instead of raising string.index_error.
1074
1075
1076Changes to built-in modules
1077---------------------------
1078
1079* New optional module 'array' implements operations on sequences of
1080integers or floating point numbers of a particular size. This is
1081useful to manipulate large numerical arrays or to read and write
1082binary files consisting of numerical data.
1083
1084* Regular expression objects created by module regex now support a new
1085method named group(), which returns one or more \(...\) groups by number.
1086The number of groups is increased from 10 to 100.
1087
1088* Function compile() in module regex now supports an optional mapping
1089argument; a variable casefold is added to the module which can be used
1090as a standard uppercase to lowercase mapping.
1091
1092* Module time now supports many routines that are defined in the
1093Standard C time interface (<time.h>): gmtime(), localtime(),
1094asctime(), ctime(), mktime(), as well as these variables (taken from
1095System V): timezone, altzone, daylight and tzname. (The corresponding
1096functions in the undocumented module calendar have been removed; the
1097undocumented and unfinished module tzparse is now obsolete and will
1098disappear in a future release.)
1099
1100* Module strop (the fast built-in version of standard module string)
1101now uses C's definition of whitespace instead of fixing it to space,
1102tab and newline; in practice this usually means that vertical tab,
1103form feed and return are now also considered whitespace. It exports
1104the string of characters that are considered whitespace as well as the
1105characters that are considered lowercase or uppercase.
1106
1107* Module sys now defines the variable builtin_module_names, a list of
1108names of modules built into the current interpreter (including not
1109yet imported, but excluding two special modules that always have to be
1110defined -- sys and builtin).
1111
1112* Objects created by module sunaudiodev now also support flush() and
1113close() methods.
1114
1115* Socket objects created by module socket now support an optional
1116flags argument for their methods sendto() and recvfrom().
1117
1118* Module marshal now supports dumping to and loading from strings,
1119through the functions dumps() and loads().
1120
1121* Module stdwin now supports some new functionality. You may have to
1122ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.)
1123
1124
1125Bugs fixed
1126----------
1127
1128* Fixed comparison of negative long integers.
1129
1130* The tokenizer no longer botches input lines longer than BUFSIZ.
1131
1132* Fixed several severe memory leaks in module select.
1133
1134* Fixed memory leaks in modules socket and sv.
1135
1136* Fixed memory leak in divmod() for long integers.
1137
1138* Problems with definition of floatsleep() on Suns fixed.
1139
1140* Many portability bugs fixed (and undoubtedly new ones added :-).
1141
1142
1143Changes to the build procedure
1144------------------------------
1145
1146* The Makefile supports some new targets: "make default" and "make
1147all". Both are by normally equivalent to "make python".
1148
1149* The Makefile no longer uses $> since it's not supported by all
1150versions of Make.
1151
1152* The header files now all contain #ifdef constructs designed to make
1153it safe to include the same header file twice, as well as support for
1154inclusion from C++ programs (automatic extern "C" { ... } added).
1155
1156
1157Freezing Python scripts
1158-----------------------
1159
1160* There is now some support for "freezing" a Python script as a
1161stand-alone executable binary file. See the script
1162demo/scripts/freeze.py. It will require some site-specific tailoring
1163of the script to get this working, but is quite worthwhile if you write
1164Python code for other who may not have built and installed Python.
1165
1166
1167MS-DOS
1168------
1169
1170* A new MS-DOS port has been done, using MSC 6.0 (I believe). Thanks,
1171Marcel van der Peijl! This requires fewer compatibility hacks in
1172posixmodule.c. The executable is not yet available but will be soon
1173(check the mailing list).
1174
1175* The default PYTHONPATH has changed.
1176
1177
1178Changes for developers of extension modules
1179-------------------------------------------
1180
1181* Read src/ChangeLog for full details.
1182
1183
1184SGI specific changes
1185--------------------
1186
1187* Read src/ChangeLog for full details.
1188
Guido van Rossumaa253861994-10-06 17:18:57 +00001189
Guido van Rossuma7925f11994-01-26 10:20:16 +00001190==================================
1191==> Release 0.9.8 (9 Jan 1993) <==
1192==================================
1193
1194I claim no completeness here, but I've tried my best to scan the log
1195files throughout my source tree for interesting bits of news. A more
1196complete account of the changes is to be found in the various
1197ChangeLog files. See also "News for release 0.9.7beta" below if you're
1198still using release 0.9.6, and the file HISTORY if you have an even
1199older release.
1200
1201 --Guido
1202
1203
1204Changes to the language proper
1205------------------------------
1206
1207There's only one big change: the conformance checking for function
1208argument lists (of user-defined functions only) is stricter. Earlier,
1209you could get away with the following:
1210
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).
1215
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.
1220
1221(Note that an argument (formal or actual) that is a tuple is counted as
1222one; these rules don't apply inside such tuples, only at the top level
1223of the argument list.)
1224
1225Case (a) was needed to accommodate variable-length argument lists;
1226there is now an explicit "varargs" feature (precede the last argument
1227with a '*'). Case (b) was needed for compatibility with old class
1228definitions: up to release 0.9.4 a method with more than one argument
1229had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
1230Version 0.9.6 provide better ways to handle both casees, bot provided
1231backward compatibility; version 0.9.8 retracts the compatibility hacks
1232since they also cause confusing behavior if a function is called with
1233the wrong number of arguments.
1234
1235There's a script that helps converting classes that still rely on (b),
1236provided their methods' first argument is called "self":
1237demo/scripts/methfix.py.
1238
1239If this change breaks lots of code you have developed locally, try
1240#defining COMPAT_HACKS in ceval.c.
1241
1242(There's a third compatibility hack, which is the reverse of (a): if a
1243function is defined with two or more arguments, and called with a
1244single argument that is a tuple with just as many arguments, the items
1245of this tuple will be used as the arguments. Although this can (and
1246should!) be done using the built-in function apply() instead, it isn't
1247withdrawn yet.)
1248
1249
1250One minor change: comparing instance methods works like expected, so
1251that if x is an instance of a user-defined class and has a method m,
1252then (x.m==x.m) yields 1.
1253
1254
1255The following was already present in 0.9.7beta, but not explicitly
1256mentioned in the NEWS file: user-defined classes can now define types
1257that behave in almost allrespects like numbers. See
1258demo/classes/Rat.py for a simple example.
1259
1260
1261Changes to the build process
1262----------------------------
1263
1264The Configure.py script and the Makefile has been made somewhat more
1265bullet-proof, after reports of (minor) trouble on certain platforms.
1266
1267There is now a script to patch Makefile and config.c to add a new
1268optional built-in module: Addmodule.sh. Read the script before using!
1269
1270Useing Addmodule.sh, all optional modules can now be configured at
1271compile time using Configure.py, so there are no modules left that
1272require dynamic loading.
1273
1274The Makefile has been fixed to make it easier to use with the VPATH
1275feature of some Make versions (e.g. SunOS).
1276
1277
1278Changes affecting portability
1279-----------------------------
1280
1281Several minor portability problems have been solved, e.g. "malloc.h"
1282has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
1283the system now tolerates malloc(0) returning 0.
1284
1285For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
1286distributed with Python. This solves several minor problems, in
1287particular scripts invoked using #! can now use dynamic loading.
1288
1289
1290Changes to the interpreter interface
1291------------------------------------
1292
1293On popular demand, there's finally a "profile" feature for interactive
1294use of the interpreter. If the environment variable $PYTHONSTARTUP is
1295set to the name of an existing file, Python statements in this file
1296are executed when the interpreter is started in interactive mode.
1297
1298There is a new clean-up mechanism, complementing try...finally: if you
1299assign a function object to sys.exitfunc, it will be called when
1300Python exits or receives a SIGTERM or SIGHUP signal.
1301
1302The interpreter is now generally assumed to live in
1303/usr/local/bin/python (as opposed to /usr/local/python). The script
1304demo/scripts/fixps.py will update old scripts in place (you can easily
1305modify it to do other similar changes).
1306
1307Most I/O that uses sys.stdin/stdout/stderr will now use any object
1308assigned to those names as long as the object supports readline() or
1309write() methods.
1310
1311The parser stack has been increased to 500 to accommodate more
1312complicated expressions (7 levels used to be the practical maximum,
1313it's now about 38).
1314
1315The limit on the size of the *run-time* stack has completely been
1316removed -- this means that tuple or list displays can contain any
1317number of elements (formerly more than 50 would crash the
1318interpreter).
1319
1320
1321Changes to existing built-in functions and methods
1322--------------------------------------------------
1323
1324The built-in functions int(), long(), float(), oct() and hex() now
1325also apply to class instalces that define corresponding methods
1326(__int__ etc.).
1327
1328
1329New built-in functions
1330----------------------
1331
1332The new functions str() and repr() convert any object to a string.
1333The function repr(x) is in all respects equivalent to `x` -- some
1334people prefer a function for this. The function str(x) does the same
1335except if x is already a string -- then it returns x unchanged
1336(repr(x) adds quotes and escapes "funny" characters as octal escapes).
1337
1338The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
1339
1340
1341Changes to general built-in modules
1342-----------------------------------
1343
1344The time module's functions are more general: time() returns a
1345floating point number and sleep() accepts one. Their accuracies
1346depends on the precision of the system clock. Millisleep is no longer
1347needed (although it still exists for now), but millitimer is still
1348needed since on some systems wall clock time is only available with
1349seconds precision, while a source of more precise time exists that
1350isn't synchronized with the wall clock. (On UNIX systems that support
1351the BSD gettimeofday() function, time.time() is as time.millitimer().)
1352
1353The 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.
1356
1357New functions added to posix: nice(), setpgrp(), and if your system
1358supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
1359
1360Improvements to the socket module: socket objects have new methods
1361getpeername() and getsockname(), and the {get,set}sockopt methods can
1362now get/set any kind of option using strings built with the new struct
1363module. And there's a new function fromfd() which creates a socket
1364object given a file descriptor (useful for servers started by inetd,
1365which have a socket connected to stdin and stdout).
1366
1367
1368Changes to SGI-specific built-in modules
1369----------------------------------------
1370
1371The FORMS library interface (fl) now requires FORMS 2.1a. Some new
1372functions have been added and some bugs have been fixed.
1373
1374Additions to al (audio library interface): added getname(),
1375getdefault() and getminmax().
1376
1377The gl modules doesn't call "foreground()" when initialized (this
1378caused some problems) like it dit in 0.9.7beta (but not before).
1379There's a new gl function 'gversion() which returns a version string.
1380
1381The interface to sv (Indigo video interface) has totally changed.
1382(Sorry, still no documentation, but see the examples in
1383demo/sgi/{sv,video}.)
1384
1385
1386Changes to standard library modules
1387-----------------------------------
1388
1389Most functions in module string are now much faster: they're actually
1390implemented in C. The module containing the C versions is called
1391"strop" but you should still import "string" since strop doesn't
1392provide all the interfaces defined in string (and strop may be renamed
1393to string when it is complete in a future release).
1394
1395string.index() now accepts an optional third argument giving an index
1396where to start searching in the first argument, so you can find second
1397and further occurrences (this is similar to the regular expression
1398functions in regex).
1399
1400The definition of what string.splitfields(anything, '') should return
1401is changed for the last time: it returns a singleton list containing
1402its whole first argument unchanged. This is compatible with
1403regsub.split() which also ignores empty delimiter matches.
1404
1405posixpath, macpath: added dirname() and normpath() (and basename() to
1406macpath).
1407
1408The mainloop module (for use with stdwin) can now demultiplex input
1409from other sources, as long as they can be polled with select().
1410
1411
1412New built-in modules
1413--------------------
1414
1415Module struct defines functions to pack/unpack values to/from strings
1416representing binary values in native byte order.
1417
1418Module strop implements C versions of many functions from string (see
1419above).
1420
1421Optional module fcntl defines interfaces to fcntl() and ioctl() --
1422UNIX only. (Not yet properly documented -- see however src/fcntl.doc.)
1423
1424Optional module mpz defines an interface to an altaernative long
1425integer implementation, the GNU MPZ library.
1426
1427Optional module md5 uses the GNU MPZ library to calculate MD5
1428signatures of strings.
1429
1430There are also optional new modules specific to SGI machines: imageop
1431defines some simple operations to images represented as strings; sv
1432interfaces to the Indigo video board; cl interfaces to the (yet
1433unreleased) compression library.
1434
1435
1436New standard library modules
1437----------------------------
1438
1439(Unfortunately the following modules are not all documented; read the
1440sources to find out more about them!)
1441
1442autotest: run testall without showing any output unless it differs
1443from the expected output
1444
1445bisect: use bisection to insert or find an item in a sorted list
1446
1447colorsys: defines conversions between various color systems (e.g. RGB
1448<-> YUV)
1449
1450nntplib: a client interface to NNTP servers
1451
1452pipes: utility to construct pipeline from templates, e.g. for
1453conversion from one file format to another using several utilities.
1454
1455regsub: contains three functions that are more or less compatible with
1456awk functions of the same name: sub() and gsub() do string
1457substitution, split() splits a string using a regular expression to
1458define how separators are define.
1459
1460test_types: test operations on the built-in types of Python
1461
1462toaiff: convert various audio file formats to AIFF format
1463
1464tzparse: parse the TZ environment parameter (this may be less general
1465than it could be, let me know if you fix it).
1466
1467(Note that the obsolete module "path" no longer exists.)
1468
1469
1470New SGI-specific library modules
1471--------------------------------
1472
1473CL: constants for use with the built-in compression library interface (cl)
1474
1475Queue: a multi-producer, multi-consumer queue class implemented for
1476use with the built-in thread module
1477
1478SOCKET: constants for use with built-in module socket, e.g. to set/get
1479socket options. This is SGI-specific because the constants to be
1480passed are system-dependent. You can generate a version for your own
1481system by running the script demo/scripts/h2py.py with
1482/usr/include/sys/socket.h as input.
1483
1484cddb: interface to the database used the the CD player
1485
1486torgb: convert various image file types to rgb format (requires pbmplus)
1487
1488
1489New demos
1490---------
1491
1492There's an experimental interface to define Sun RPC clients and
1493servers in demo/rpc.
1494
1495There's a collection of interfaces to WWW, WAIS and Gopher (both
1496Python classes and program providing a user interface) in demo/www.
1497This includes a program texi2html.py which converts texinfo files to
1498HTML files (the format used hy WWW).
1499
1500The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
1501
1502For SGI systems, there's a whole collection of programs and classes
1503that make use of the Indigo video board in demo/sgi/{sv,video}. This
1504represents a significant amount of work that we're giving away!
1505
1506There are demos "rsa" and "md5test" that exercise the mpz and md5
1507modules, respectively. The rsa demo is a complete implementation of
1508the RSA public-key cryptosystem!
1509
1510A bunch of games and examples submitted by Stoffel Erasmus have been
1511included in demo/stoffel.
1512
1513There are miscellaneous new files in some existing demo
1514subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
1515sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
1516
1517There are also many minor changes to existing files, but I'm too lazy
1518to run a diff and note the differences -- you can do this yourself if
1519you save the old distribution's demos. One highlight: the
1520stdwin/python.py demo is much improved!
1521
1522
1523Changes to the documentation
1524----------------------------
1525
1526The LaTeX source for the library uses different macros to enable it to
1527be converted to texinfo, and from there to INFO or HTML format so it
1528can be browsed as a hypertext. The net result is that you can now
1529read the Python library documentation in Emacs info mode!
1530
1531
1532Changes to the source code that affect C extension writers
1533----------------------------------------------------------
1534
1535The function strdup() no longer exists (it was used only in one places
1536and is somewhat of a a portability problem sice some systems have the
1537same function in their C library.
1538
1539The functions NEW() and RENEW() allocate one spare byte to guard
1540against a NULL return from malloc(0) being taken for an error, but
1541this should not be relied upon.
1542
1543
1544=========================
1545==> Release 0.9.7beta <==
1546=========================
1547
1548
1549Changes to the language proper
1550------------------------------
1551
1552User-defined classes can now implement operations invoked through
1553special syntax, such as x[i] or `x` by defining methods named
1554__getitem__(self, i) or __repr__(self), etc.
1555
1556
1557Changes to the build process
1558----------------------------
1559
1560Instead of extensive manual editing of the Makefile to select
1561compile-time options, you can now run a Configure.py script.
1562The Makefile as distributed builds a minimal interpreter sufficient to
1563run Configure.py. See also misc/BUILD
1564
1565The Makefile now includes more "utility" targets, e.g. install and
1566tags/TAGS
1567
1568Using the provided strtod.c and strtol.c are now separate options, as
1569on the Sun the provided strtod.c dumps core :-(
1570
1571The regex module is now an option chosen by the Makefile, since some
1572(old) C compilers choke on regexpr.c
1573
1574
1575Changes affecting portability
1576-----------------------------
1577
1578You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
1579interface
1580
1581Dynamic loading is now supported for Sun (and other non-COFF systems)
1582throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
1583DL is out, 1.4)
1584
1585The system-dependent code for the use of the select() system call is
1586moved to one file: myselect.h
1587
1588Thanks to Jaap Vermeulen, the code should now port cleanly to the
1589SEQUENT
1590
1591
1592Changes to the interpreter interface
1593------------------------------------
1594
1595The interpretation of $PYTHONPATH in the environment is different: it
1596is inserted in front of the default path instead of overriding it
1597
1598
1599Changes to existing built-in functions and methods
1600--------------------------------------------------
1601
1602List objects now support an optional argument to their sort() method,
1603which is a comparison function similar to qsort(3) in C
1604
1605File objects now have a method fileno(), used by the new select module
1606(see below)
1607
1608
1609New built-in function
1610---------------------
1611
1612coerce(x, y): take two numbers and return a tuple containing them
1613both converted to a common type
1614
1615
1616Changes to built-in modules
1617---------------------------
1618
1619sys: fixed core dumps in settrace() and setprofile()
1620
1621socket: added socket methods setsockopt() and getsockopt(); and
1622fileno(), used by the new select module (see below)
1623
1624stdwin: added fileno() == connectionnumber(), in support of new module
1625select (see below)
1626
1627posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
1628
1629gl: added qgetfd()
1630
1631fl: added several new functions, fixed several obscure bugs, adapted
1632to FORMS 2.1
1633
1634
1635Changes to standard modules
1636---------------------------
1637
1638posixpath: changed implementation of ismount()
1639
1640string: atoi() no longer mistakes leading zero for octal number
1641
1642...
1643
1644
1645New built-in modules
1646--------------------
1647
1648Modules marked "dynamic only" are not configured at compile time but
1649can be loaded dynamically. You need to turn on the DL or DLD option in
1650the Makefile for support dynamic loading of modules (this requires
1651external code).
1652
1653select: interfaces to the BSD select() system call
1654
1655dbm: interfaces to the (new) dbm library (dynamic only)
1656
1657nis: interfaces to some NIS functions (aka yellow pages)
1658
1659thread: limited form of multiple threads (sgi only)
1660
1661audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
1662coding (dynamic only)
1663
1664cd: interface to Indigo SCSI CDROM player audio library (sgi only)
1665
1666jpeg: read files in JPEG format (dynamic only, sgi only; needs
1667external code)
1668
1669imgfile: read SGI image files (dynamic only, sgi only)
1670
1671sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
1672
1673sv: interface to Indigo video library (sgi only)
1674
1675pc: a minimal set of MS-DOS interfaces (MS-DOS only)
1676
1677rotor: encryption, by Lance Ellinghouse (dynamic only)
1678
1679
1680New standard modules
1681--------------------
1682
1683Not all these modules are documented. Read the source:
1684lib/<modulename>.py. Sometimes a file lib/<modulename>.doc contains
1685additional documentation.
1686
1687imghdr: recognizes image file headers
1688
1689sndhdr: recognizes sound file headers
1690
1691profile: print run-time statistics of Python code
1692
1693readcd, cdplayer: companion modules for built-in module cd (sgi only)
1694
1695emacs: interface to Emacs using py-connect.el (see below).
1696
1697SOCKET: symbolic constant definitions for socket options
1698
1699SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
1700
1701SV: symbolic constat definitions for sv (sgi only)
1702
1703CD: symbolic constat definitions for cd (sgi only)
1704
1705
1706New demos
1707---------
1708
1709scripts/pp.py: execute Python as a filter with a Perl-like command
1710line interface
1711
1712classes/: examples using the new class features
1713
1714threads/: examples using the new thread module
1715
1716sgi/cd/: examples using the new cd module
1717
1718
1719Changes to the documentation
1720----------------------------
1721
1722The last-minute syntax changes of release 0.9.6 are now reflected
1723everywhere in the manuals
1724
1725The reference manual has a new section (3.2) on implementing new kinds
1726of numbers, sequences or mappings with user classes
1727
1728Classes are now treated extensively in the tutorial (chapter 9)
1729
1730Slightly restructured the system-dependent chapters of the library
1731manual
1732
1733The file misc/EXTENDING incorporates documentation for mkvalue() and
1734a new section on error handling
1735
1736The files misc/CLASSES and misc/ERRORS are no longer necessary
1737
1738The doc/Makefile now creates PostScript files automatically
1739
1740
1741Miscellaneous changes
1742---------------------
1743
1744Incorporated Tim Peters' changes to python-mode.el, it's now version
17451.06
1746
1747A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
1748program running in an Emacs buffer execute Emacs lisp code. The
1749necessary Python code is in lib/emacs.py. The Emacs code is
1750misc/py-connect.el (it needs some external Emacs lisp code)
1751
1752
1753Changes to the source code that affect C extension writers
1754----------------------------------------------------------
1755
1756New service function mkvalue() to construct a Python object from C
1757values according to a "format" string a la getargs()
1758
1759Most functions from pythonmain.c moved to new pythonrun.c which is
1760in libpython.a. This should make embedded versions of Python easier
1761
1762ceval.h is split in eval.h (which needs compile.h and only declares
1763eval_code) and ceval.h (which doesn't need compile.hand declares the
1764rest)
1765
1766ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
1767improve the parallellism of multi-threaded programs by letting other
1768Python code run when a blocking system call or something similar is
1769made)
1770
1771In structmember.[ch], new member types BYTE, CHAR and unsigned
1772variants have been added
1773
1774New file xxmodule.c is a template for new extension modules.
1775
Guido van Rossumaa253861994-10-06 17:18:57 +00001776
Guido van Rossuma7925f11994-01-26 10:20:16 +00001777==================================
1778==> RELEASE 0.9.6 (6 Apr 1992) <==
1779==================================
1780
1781Misc 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!)
1791
1792New 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)
1831
1832New 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
1840
1841Bugs 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)
1844
1845Bugs fixed in 0.9.5:
1846- masking operations involving negative long integers gave wrong results
1847
1848
1849===================================
1850==> RELEASE 0.9.4 (24 Dec 1991) <==
1851===================================
1852
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
1862
1863
1864New class syntax
1865----------------
1866
1867You can now declare a base class as follows:
1868
1869 class B: # Was: class B():
1870 def some_method(self): ...
1871 ...
1872
1873and a derived class thusly:
1874
1875 class D(B): # Was: class D() = B():
1876 def another_method(self, arg): ...
1877
1878Multiple inheritance looks like this:
1879
1880 class M(B, D): # Was: class M() = B(), D():
1881 def this_or_that_method(self, arg): ...
1882
1883The old syntax is still accepted by Python 0.9.4, but will disappear
1884in Python 1.0 (to be posted to comp.sources).
1885
1886
1887New 'global' statement
1888----------------------
1889
1890Every now and then you have a global variable in a module that you
1891want to change from within a function in that module -- say, a count
1892of calls to a function, or an option flag, etc. Until now this was
1893not directly possible. While several kludges are known that
1894circumvent the problem, and often the need for a global variable can
1895be avoided by rewriting the module as a class, this does not always
1896lead to clearer code.
1897
1898The 'global' statement solves this dilemma. Its occurrence in a
1899function body means that, for the duration of that function, the
1900names listed there refer to global variables. For instance:
1901
1902 total = 0.0
1903 count = 0
1904
1905 def add_to_total(amount):
1906 global total, count
1907 total = total + amount
1908 count = count + 1
1909
1910'global' must be repeated in each function where it is needed. The
1911names listed in a 'global' statement must not be used in the function
1912before the statement is reached.
1913
1914Remember that you don't need to use 'global' if you only want to *use*
1915a global variable in a function; nor do you need ot for assignments to
1916parts of global variables (e.g., list or dictionary items or
1917attributes of class instances). This has not changed; in fact
1918assignment to part of a global variable was the standard workaround.
1919
1920
1921New exceptions
1922--------------
1923
1924Several new exceptions have been defined, to distinguish more clearly
1925between different types of errors.
1926
1927name meaning was
1928
1929AttributeError reference to non-existing attribute NameError
1930IOError unexpected I/O error RuntimeError
1931ImportError import of non-existing module or name NameError
1932IndexError invalid string, tuple or list index RuntimeError
1933KeyError key not in dictionary RuntimeError
1934OverflowError numeric overflow RuntimeError
1935SyntaxError invalid syntax RuntimeError
1936ValueError invalid argument value RuntimeError
1937ZeroDivisionError division by zero RuntimeError
1938
1939The string value of each exception is now its name -- this makes it
1940easier to experimentally find out which operations raise which
1941exceptions; e.g.:
1942
1943 >>> KeyboardInterrupt
1944 'KeyboardInterrupt'
1945 >>>
1946
1947
1948New argument passing semantics
1949------------------------------
1950
1951Off-line discussions with Steve Majewski and Daniel LaLiberte have
1952convinced me that Python's parameter mechanism could be changed in a
1953way that made both of them happy (I hope), kept me happy, fixed a
1954number of outstanding problems, and, given some backward compatibility
1955provisions, would only break a very small amount of existing code --
1956probably all mine anyway. In fact I suspect that most Python users
1957will hardly notice the difference. And yet it has cost me at least
1958one sleepless night to decide to make the change...
1959
1960Philosophically, the change is quite radical (to me, anyway): a
1961function is no longer called with either zero or one argument, which
1962is a tuple if there appear to be more arguments. Every function now
1963has an argument list containing 0, 1 or more arguments. This list is
1964always implemented as a tuple, and it is a (run-time) error if a
1965function is called with a different number of arguments than expected.
1966
1967What's the difference? you may ask. The answer is, very little unless
1968you want to write variadic functions -- functions that may be called
1969with a variable number of arguments. Formerly, you could write a
1970function that accepted one or more arguments with little trouble, but
1971writing 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
1973can simply declare an argument that receives the entire argument
1974tuple, and check its length -- it will be of size 0 if there are no
1975arguments.
1976
1977Another anomaly of the old system was the way multi-argument methods
1978(in classes) had to be declared, e.g.:
1979
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): ...
1985
1986Using the new scheme there is no need to enclose the method arguments
1987in an extra set of parentheses, so the above class could become:
1988
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): ...
1994
1995That is, the equivalence rule between methods and functions has
1996changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y)
1997while formerly it was equivalent to Point.moveto(p,(x,y)).
1998
1999A special backward compatibility rule makes that the old version also
2000still works: whenever a function with exactly two arguments (at the top
2001level) is called with more than two arguments, the second and further
2002arguments are packed into a tuple and passed as the second argument.
2003This rule is invoked independently of whether the function is actually a
2004method, so there is a slight chance that some erroneous calls of
2005functions expecting two arguments with more than that number of
2006arguments go undetected at first -- when the function tries to use the
2007second argument it may find it is a tuple instead of what was expected.
2008Note that this rule will be removed from future versions of the
2009language; it is a backward compatibility provision *only*.
2010
2011Two other rules and a new built-in function handle conversion between
2012tuples and argument lists:
2013
2014Rule (a): when a function with more than one argument is called with a
2015single argument that is a tuple of the right size, the tuple's items
2016are used as arguments.
2017
2018Rule (b): when a function with exactly one argument receives no
2019arguments or more than one, that one argument will receive a tuple
2020containing the arguments (the tuple will be empty if there were no
2021arguments).
2022
2023
2024A new built-in function, apply(), was added to support functions that
2025need to call other functions with a constructed argument list. The call
2026
2027 apply(function, tuple)
2028
2029is equivalent to
2030
2031 function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
2032
2033
2034While no new argument syntax was added in this phase, it would now be
2035quite sensible to add explicit syntax to Python for default argument
2036values (as in C++ or Modula-3), or a "rest" argument to receive the
2037remaining arguments of a variable-length argument list.
2038
2039
2040========================================================
2041==> Release 0.9.3 (never made available outside CWI) <==
2042========================================================
2043
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 ').
2066
2067
2068===================================
2069==> Release 0.9.2 (Autumn 1991) <==
2070===================================
2071
2072Highlights
2073----------
2074
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
2087
2088
2089Extended list of changes in 0.9.2
2090---------------------------------
2091
2092Here is a summary of the most important user-visible changes in 0.9.2,
2093in somewhat arbitrary order. Changes in later versions are listed in
2094the "highlights" section above.
2095
2096
20971. Changes to the interpreter proper
2098
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
2124
2125
21262. Changes to the built-in types, functions and modules
2127
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
2166
2167
21683. Changes to the standard library
2169
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
2182
2183
21844. Changes to the demonstration programs
2185
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)
2196
2197
21985. Other changes to the distribution
2199
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
2205
2206
2207=====================================
2208==> Release 0.9.1 (February 1991) <==
2209=====================================
2210
2211- Micro changes only
2212- Added file "patchlevel.h"
2213
2214
2215=====================================
2216==> Release 0.9.0 (February 1991) <==
2217=====================================
2218
2219Original posting to alt.sources.