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