blob: 82c4b311de6c9a3a5615d86b3b05d7ee1cc8466b [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
8===================================
9==> Release 0.9.9 (29 Jul 1993) <==
10===================================
11
12I *believe* these are the main user-visible changes in this release,
13but there may be others. SGI users may scan the {src,lib}/ChangeLog
14files for improvements of some SGI specific modules, e.g. aifc and
15cl. Developers of extension modules should also read src/ChangeLog.
16
17
18Naming of C symbols used by the Python interpreter
19--------------------------------------------------
20
21* This is the last release using the current naming conventions. New
22naming conventions are explained in the file misc/NAMING.
23Summarizing, all externally visible symbols get (at least) a "Py"
24prefix, and most functions are renamed to the standard form
25PyModule_FunctionName.
26
27* Writers of extensions are urged to start using the new naming
28conventions. The next release will use the new naming conventions
29throughout (it will also have a different source directory
30structure).
31
32* As a result of the preliminary work for the great renaming, many
33functions that were accidentally global have been made static.
34
35
36BETA X11 support
37----------------
38
39* There are now modules interfacing to the X11 Toolkit Intrinsics, the
40Athena widgets, and the Motif 1.1 widget set. These are not yet
41documented except through the examples and README file in the demo/x11
42directory. It is expected that this interface will be replaced by a
43more powerful and correct one in the future, which may or may not be
44backward compatible. In other words, this part of the code is at most
45BETA level software! (Note: the rest of Python is rock solid as ever!)
46
47* I understand that the above may be a bit of a disappointment,
48however my current schedule does not allow me to change this situation
49before putting the release out of the door. By releasing it
50undocumented and buggy, at least some of the (working!) demo programs,
51like itr (my Internet Talk Radio browser) become available to a larger
52audience.
53
54* There are also modules interfacing to SGI's "Glx" widget (a GL
55window wrapped in a widget) and to NCSA's "HTML" widget (which can
56format HyperText Markup Language, the document format used by the
57World Wide Web).
58
59* I've experienced some problems when building the X11 support. In
60particular, the Xm and Xaw widget sets don't go together, and it
61appears that using X11R5 is better than using X11R4. Also the threads
62module and its link time options may spoil things. My own strategy is
63to build two Python binaries: one for use with X11 and one without
64it, which can contain a richer set of built-in modules. Don't even
65*think* of loading the X11 modules dynamically...
66
67
68Environmental changes
69---------------------
70
71* Compiled files (*.pyc files) created by this Python version are
72incompatible with those created by the previous version. Both
73versions detect this and silently create a correct version, but it
74means that it is not a good idea to use the same library directory for
75an old and a new interpreter, since they will start to "fight" over
76the *.pyc files...
77
78* When a stack trace is printed, the exception is printed last instead
79of first. This means that if the beginning of the stack trace
80scrolled out of your window you can still see what exception caused
81it.
82
83* Sometimes interrupting a Python operation does not work because it
84hangs in a blocking system call. You can now kill the interpreter by
85interrupting it three times. The second time you interrupt it, a
86message will be printed telling you that the third interrupt will kill
87the interpreter. The "sys.exitfunc" feature still makes limited
88clean-up possible in this case.
89
90
91Changes to the command line interface
92-------------------------------------
93
94* The python usage message is now much more informative.
95
96* New option -i enters interactive mode after executing a script --
97useful for debugging.
98
99* New option -k raises an exception when an expression statement
100yields a value other than None.
101
102* For each option there is now also a corresponding environment
103variable.
104
105
106Using Python as an embedded language
107------------------------------------
108
109* The distribution now contains (some) documentation on the use of
110Python as an "embedded language" in other applications, as well as a
111simple example. See the file misc/EMBEDDING and the directory embed/.
112
113
114Speed improvements
115------------------
116
117* Function local variables are now generally stored in an array and
118accessed using an integer indexing operation, instead of through a
119dictionary lookup. (This compensates the somewhat slower dictionary
120lookup caused by the generalization of the dictionary module.)
121
122
123Changes to the syntax
124---------------------
125
126* Continuation lines can now *sometimes* be written without a
127backslash: if the continuation is contained within nesting (), [] or
128{} brackets the \ may be omitted. There's a much improved
129python-mode.el in the misc directory which knows about this as well.
130
131* You can no longer use an empty set of parentheses to define a class
132without base classes. That is, you no longer write this:
133
134 class Foo(): # syntax error
135 ...
136
137You must write this instead:
138
139 class Foo:
140 ...
141
142This was already the preferred syntax in release 0.9.8 but many
143people seemed not to have picked it up. There's a Python script that
144fixes old code: demo/scripts/classfix.py.
145
146* There's a new reserved word: "access". The syntax and semantics are
147still subject of of research and debate (as well as undocumented), but
148the parser knows about the keyword so you must not use it as a
149variable, function, or attribute name.
150
151
152Changes to the semantics of the language proper
153-----------------------------------------------
154
155* The following compatibility hack is removed: if a function was
156defined with two or more arguments, and called with a single argument
157that was a tuple with just as many arguments, the items of this tuple
158would be used as the arguments. This is no longer supported.
159
160
161Changes to the semantics of classes and instances
162-------------------------------------------------
163
164* Class variables are now also accessible as instance variables for
165reading (assignment creates an instance variable which overrides the
166class variable of the same name though).
167
168* If a class attribute is a user-defined function, a new kind of
169object is returned: an "unbound method". This contains a pointer to
170the class and can only be called with a first argument which is a
171member of that class (or a derived class).
172
173* If a class defines a method __init__(self, arg1, ...) then this
174method is called when a class instance is created by the classname()
175construct. Arguments passed to classname() are passed to the
176__init__() method. The __init__() methods of base classes are not
177automatically called; the derived __init__() method must call these if
178necessary (this was done so the derived __init__() method can choose
179the call order and arguments for the base __init__() methods).
180
181* If a class defines a method __del__(self) then this method is called
182when an instance of the class is about to be destroyed. This makes it
183possible to implement clean-up of external resources attached to the
184instance. As with __init__(), the __del__() methods of base classes
185are not automatically called. If __del__ manages to store a reference
186to the object somewhere, its destruction is postponed; when the object
187is again about to be destroyed its __del__() method will be called
188again.
189
190* Classes may define a method __hash__(self) to allow their instances
191to be used as dictionary keys. This must return a 32-bit integer.
192
193
194Minor improvements
195------------------
196
197* Function and class objects now know their name (the name given in
198the 'def' or 'class' statement that created them).
199
200* Class instances now know their class name.
201
202
203Additions to built-in operations
204--------------------------------
205
206* The % operator with a string left argument implements formatting
207similar to sprintf() in C. The right argument is either a single
208value or a tuple of values. All features of Standard C sprintf() are
209supported except %p.
210
211* Dictionaries now support almost any key type, instead of just
212strings. (The key type must be an immutable type or must be a class
213instance where the class defines a method __hash__(), in order to
214avoid losing track of keys whose value may change.)
215
216* Built-in methods are now compared properly: when comparing x.meth1
217and y.meth2, if x is equal to y and the methods are defined by the
218same function, x.meth1 compares equal to y.meth2.
219
220
221Additions to built-in functions
222-------------------------------
223
224* str(x) returns a string version of its argument. If the argument is
225a string it is returned unchanged, otherwise it returns `x`.
226
227* repr(x) returns the same as `x`. (Some users found it easier to
228have this as a function.)
229
230* round(x) returns the floating point number x rounded to an whole
231number, represented as a floating point number. round(x, n) returns x
232rounded to n digits.
233
234* hasattr(x, name) returns true when x has an attribute with the given
235name.
236
237* hash(x) returns a hash code (32-bit integer) of an arbitrary
238immutable object's value.
239
240* id(x) returns a unique identifier (32-bit integer) of an arbitrary
241object.
242
243* compile() compiles a string to a Python code object.
244
245* exec() and eval() now support execution of code objects.
246
247
248Changes to the documented part of the library (standard modules)
249----------------------------------------------------------------
250
251* os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
252the border case '/foo/..' returns '/' instead of ''.
253
254* A new function string.find() is added with similar semantics to
255string.index(); however when it does not find the given substring it
256returns -1 instead of raising string.index_error.
257
258
259Changes to built-in modules
260---------------------------
261
262* New optional module 'array' implements operations on sequences of
263integers or floating point numbers of a particular size. This is
264useful to manipulate large numerical arrays or to read and write
265binary files consisting of numerical data.
266
267* Regular expression objects created by module regex now support a new
268method named group(), which returns one or more \(...\) groups by number.
269The number of groups is increased from 10 to 100.
270
271* Function compile() in module regex now supports an optional mapping
272argument; a variable casefold is added to the module which can be used
273as a standard uppercase to lowercase mapping.
274
275* Module time now supports many routines that are defined in the
276Standard C time interface (<time.h>): gmtime(), localtime(),
277asctime(), ctime(), mktime(), as well as these variables (taken from
278System V): timezone, altzone, daylight and tzname. (The corresponding
279functions in the undocumented module calendar have been removed; the
280undocumented and unfinished module tzparse is now obsolete and will
281disappear in a future release.)
282
283* Module strop (the fast built-in version of standard module string)
284now uses C's definition of whitespace instead of fixing it to space,
285tab and newline; in practice this usually means that vertical tab,
286form feed and return are now also considered whitespace. It exports
287the string of characters that are considered whitespace as well as the
288characters that are considered lowercase or uppercase.
289
290* Module sys now defines the variable builtin_module_names, a list of
291names of modules built into the current interpreter (including not
292yet imported, but excluding two special modules that always have to be
293defined -- sys and builtin).
294
295* Objects created by module sunaudiodev now also support flush() and
296close() methods.
297
298* Socket objects created by module socket now support an optional
299flags argument for their methods sendto() and recvfrom().
300
301* Module marshal now supports dumping to and loading from strings,
302through the functions dumps() and loads().
303
304* Module stdwin now supports some new functionality. You may have to
305ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.)
306
307
308Bugs fixed
309----------
310
311* Fixed comparison of negative long integers.
312
313* The tokenizer no longer botches input lines longer than BUFSIZ.
314
315* Fixed several severe memory leaks in module select.
316
317* Fixed memory leaks in modules socket and sv.
318
319* Fixed memory leak in divmod() for long integers.
320
321* Problems with definition of floatsleep() on Suns fixed.
322
323* Many portability bugs fixed (and undoubtedly new ones added :-).
324
325
326Changes to the build procedure
327------------------------------
328
329* The Makefile supports some new targets: "make default" and "make
330all". Both are by normally equivalent to "make python".
331
332* The Makefile no longer uses $> since it's not supported by all
333versions of Make.
334
335* The header files now all contain #ifdef constructs designed to make
336it safe to include the same header file twice, as well as support for
337inclusion from C++ programs (automatic extern "C" { ... } added).
338
339
340Freezing Python scripts
341-----------------------
342
343* There is now some support for "freezing" a Python script as a
344stand-alone executable binary file. See the script
345demo/scripts/freeze.py. It will require some site-specific tailoring
346of the script to get this working, but is quite worthwhile if you write
347Python code for other who may not have built and installed Python.
348
349
350MS-DOS
351------
352
353* A new MS-DOS port has been done, using MSC 6.0 (I believe). Thanks,
354Marcel van der Peijl! This requires fewer compatibility hacks in
355posixmodule.c. The executable is not yet available but will be soon
356(check the mailing list).
357
358* The default PYTHONPATH has changed.
359
360
361Changes for developers of extension modules
362-------------------------------------------
363
364* Read src/ChangeLog for full details.
365
366
367SGI specific changes
368--------------------
369
370* Read src/ChangeLog for full details.
371
372==================================
373==> Release 0.9.8 (9 Jan 1993) <==
374==================================
375
376I claim no completeness here, but I've tried my best to scan the log
377files throughout my source tree for interesting bits of news. A more
378complete account of the changes is to be found in the various
379ChangeLog files. See also "News for release 0.9.7beta" below if you're
380still using release 0.9.6, and the file HISTORY if you have an even
381older release.
382
383 --Guido
384
385
386Changes to the language proper
387------------------------------
388
389There's only one big change: the conformance checking for function
390argument lists (of user-defined functions only) is stricter. Earlier,
391you could get away with the following:
392
393 (a) define a function of one argument and call it with any
394 number of arguments; if the actual argument count wasn't
395 one, the function would receive a tuple containing the
396 arguments arguments (an empty tuple if there were none).
397
398 (b) define a function of two arguments, and call it with more
399 than two arguments; if there were more than two arguments,
400 the second argument would be passed as a tuple containing
401 the second and further actual arguments.
402
403(Note that an argument (formal or actual) that is a tuple is counted as
404one; these rules don't apply inside such tuples, only at the top level
405of the argument list.)
406
407Case (a) was needed to accommodate variable-length argument lists;
408there is now an explicit "varargs" feature (precede the last argument
409with a '*'). Case (b) was needed for compatibility with old class
410definitions: up to release 0.9.4 a method with more than one argument
411had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
412Version 0.9.6 provide better ways to handle both casees, bot provided
413backward compatibility; version 0.9.8 retracts the compatibility hacks
414since they also cause confusing behavior if a function is called with
415the wrong number of arguments.
416
417There's a script that helps converting classes that still rely on (b),
418provided their methods' first argument is called "self":
419demo/scripts/methfix.py.
420
421If this change breaks lots of code you have developed locally, try
422#defining COMPAT_HACKS in ceval.c.
423
424(There's a third compatibility hack, which is the reverse of (a): if a
425function is defined with two or more arguments, and called with a
426single argument that is a tuple with just as many arguments, the items
427of this tuple will be used as the arguments. Although this can (and
428should!) be done using the built-in function apply() instead, it isn't
429withdrawn yet.)
430
431
432One minor change: comparing instance methods works like expected, so
433that if x is an instance of a user-defined class and has a method m,
434then (x.m==x.m) yields 1.
435
436
437The following was already present in 0.9.7beta, but not explicitly
438mentioned in the NEWS file: user-defined classes can now define types
439that behave in almost allrespects like numbers. See
440demo/classes/Rat.py for a simple example.
441
442
443Changes to the build process
444----------------------------
445
446The Configure.py script and the Makefile has been made somewhat more
447bullet-proof, after reports of (minor) trouble on certain platforms.
448
449There is now a script to patch Makefile and config.c to add a new
450optional built-in module: Addmodule.sh. Read the script before using!
451
452Useing Addmodule.sh, all optional modules can now be configured at
453compile time using Configure.py, so there are no modules left that
454require dynamic loading.
455
456The Makefile has been fixed to make it easier to use with the VPATH
457feature of some Make versions (e.g. SunOS).
458
459
460Changes affecting portability
461-----------------------------
462
463Several minor portability problems have been solved, e.g. "malloc.h"
464has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
465the system now tolerates malloc(0) returning 0.
466
467For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
468distributed with Python. This solves several minor problems, in
469particular scripts invoked using #! can now use dynamic loading.
470
471
472Changes to the interpreter interface
473------------------------------------
474
475On popular demand, there's finally a "profile" feature for interactive
476use of the interpreter. If the environment variable $PYTHONSTARTUP is
477set to the name of an existing file, Python statements in this file
478are executed when the interpreter is started in interactive mode.
479
480There is a new clean-up mechanism, complementing try...finally: if you
481assign a function object to sys.exitfunc, it will be called when
482Python exits or receives a SIGTERM or SIGHUP signal.
483
484The interpreter is now generally assumed to live in
485/usr/local/bin/python (as opposed to /usr/local/python). The script
486demo/scripts/fixps.py will update old scripts in place (you can easily
487modify it to do other similar changes).
488
489Most I/O that uses sys.stdin/stdout/stderr will now use any object
490assigned to those names as long as the object supports readline() or
491write() methods.
492
493The parser stack has been increased to 500 to accommodate more
494complicated expressions (7 levels used to be the practical maximum,
495it's now about 38).
496
497The limit on the size of the *run-time* stack has completely been
498removed -- this means that tuple or list displays can contain any
499number of elements (formerly more than 50 would crash the
500interpreter).
501
502
503Changes to existing built-in functions and methods
504--------------------------------------------------
505
506The built-in functions int(), long(), float(), oct() and hex() now
507also apply to class instalces that define corresponding methods
508(__int__ etc.).
509
510
511New built-in functions
512----------------------
513
514The new functions str() and repr() convert any object to a string.
515The function repr(x) is in all respects equivalent to `x` -- some
516people prefer a function for this. The function str(x) does the same
517except if x is already a string -- then it returns x unchanged
518(repr(x) adds quotes and escapes "funny" characters as octal escapes).
519
520The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
521
522
523Changes to general built-in modules
524-----------------------------------
525
526The time module's functions are more general: time() returns a
527floating point number and sleep() accepts one. Their accuracies
528depends on the precision of the system clock. Millisleep is no longer
529needed (although it still exists for now), but millitimer is still
530needed since on some systems wall clock time is only available with
531seconds precision, while a source of more precise time exists that
532isn't synchronized with the wall clock. (On UNIX systems that support
533the BSD gettimeofday() function, time.time() is as time.millitimer().)
534
535The string representation of a file object now includes an address:
536'<file 'filename', mode 'r' at #######>' where ###### is a hex number
537(the object's address) to make it unique.
538
539New functions added to posix: nice(), setpgrp(), and if your system
540supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
541
542Improvements to the socket module: socket objects have new methods
543getpeername() and getsockname(), and the {get,set}sockopt methods can
544now get/set any kind of option using strings built with the new struct
545module. And there's a new function fromfd() which creates a socket
546object given a file descriptor (useful for servers started by inetd,
547which have a socket connected to stdin and stdout).
548
549
550Changes to SGI-specific built-in modules
551----------------------------------------
552
553The FORMS library interface (fl) now requires FORMS 2.1a. Some new
554functions have been added and some bugs have been fixed.
555
556Additions to al (audio library interface): added getname(),
557getdefault() and getminmax().
558
559The gl modules doesn't call "foreground()" when initialized (this
560caused some problems) like it dit in 0.9.7beta (but not before).
561There's a new gl function 'gversion() which returns a version string.
562
563The interface to sv (Indigo video interface) has totally changed.
564(Sorry, still no documentation, but see the examples in
565demo/sgi/{sv,video}.)
566
567
568Changes to standard library modules
569-----------------------------------
570
571Most functions in module string are now much faster: they're actually
572implemented in C. The module containing the C versions is called
573"strop" but you should still import "string" since strop doesn't
574provide all the interfaces defined in string (and strop may be renamed
575to string when it is complete in a future release).
576
577string.index() now accepts an optional third argument giving an index
578where to start searching in the first argument, so you can find second
579and further occurrences (this is similar to the regular expression
580functions in regex).
581
582The definition of what string.splitfields(anything, '') should return
583is changed for the last time: it returns a singleton list containing
584its whole first argument unchanged. This is compatible with
585regsub.split() which also ignores empty delimiter matches.
586
587posixpath, macpath: added dirname() and normpath() (and basename() to
588macpath).
589
590The mainloop module (for use with stdwin) can now demultiplex input
591from other sources, as long as they can be polled with select().
592
593
594New built-in modules
595--------------------
596
597Module struct defines functions to pack/unpack values to/from strings
598representing binary values in native byte order.
599
600Module strop implements C versions of many functions from string (see
601above).
602
603Optional module fcntl defines interfaces to fcntl() and ioctl() --
604UNIX only. (Not yet properly documented -- see however src/fcntl.doc.)
605
606Optional module mpz defines an interface to an altaernative long
607integer implementation, the GNU MPZ library.
608
609Optional module md5 uses the GNU MPZ library to calculate MD5
610signatures of strings.
611
612There are also optional new modules specific to SGI machines: imageop
613defines some simple operations to images represented as strings; sv
614interfaces to the Indigo video board; cl interfaces to the (yet
615unreleased) compression library.
616
617
618New standard library modules
619----------------------------
620
621(Unfortunately the following modules are not all documented; read the
622sources to find out more about them!)
623
624autotest: run testall without showing any output unless it differs
625from the expected output
626
627bisect: use bisection to insert or find an item in a sorted list
628
629colorsys: defines conversions between various color systems (e.g. RGB
630<-> YUV)
631
632nntplib: a client interface to NNTP servers
633
634pipes: utility to construct pipeline from templates, e.g. for
635conversion from one file format to another using several utilities.
636
637regsub: contains three functions that are more or less compatible with
638awk functions of the same name: sub() and gsub() do string
639substitution, split() splits a string using a regular expression to
640define how separators are define.
641
642test_types: test operations on the built-in types of Python
643
644toaiff: convert various audio file formats to AIFF format
645
646tzparse: parse the TZ environment parameter (this may be less general
647than it could be, let me know if you fix it).
648
649(Note that the obsolete module "path" no longer exists.)
650
651
652New SGI-specific library modules
653--------------------------------
654
655CL: constants for use with the built-in compression library interface (cl)
656
657Queue: a multi-producer, multi-consumer queue class implemented for
658use with the built-in thread module
659
660SOCKET: constants for use with built-in module socket, e.g. to set/get
661socket options. This is SGI-specific because the constants to be
662passed are system-dependent. You can generate a version for your own
663system by running the script demo/scripts/h2py.py with
664/usr/include/sys/socket.h as input.
665
666cddb: interface to the database used the the CD player
667
668torgb: convert various image file types to rgb format (requires pbmplus)
669
670
671New demos
672---------
673
674There's an experimental interface to define Sun RPC clients and
675servers in demo/rpc.
676
677There's a collection of interfaces to WWW, WAIS and Gopher (both
678Python classes and program providing a user interface) in demo/www.
679This includes a program texi2html.py which converts texinfo files to
680HTML files (the format used hy WWW).
681
682The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
683
684For SGI systems, there's a whole collection of programs and classes
685that make use of the Indigo video board in demo/sgi/{sv,video}. This
686represents a significant amount of work that we're giving away!
687
688There are demos "rsa" and "md5test" that exercise the mpz and md5
689modules, respectively. The rsa demo is a complete implementation of
690the RSA public-key cryptosystem!
691
692A bunch of games and examples submitted by Stoffel Erasmus have been
693included in demo/stoffel.
694
695There are miscellaneous new files in some existing demo
696subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
697sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
698
699There are also many minor changes to existing files, but I'm too lazy
700to run a diff and note the differences -- you can do this yourself if
701you save the old distribution's demos. One highlight: the
702stdwin/python.py demo is much improved!
703
704
705Changes to the documentation
706----------------------------
707
708The LaTeX source for the library uses different macros to enable it to
709be converted to texinfo, and from there to INFO or HTML format so it
710can be browsed as a hypertext. The net result is that you can now
711read the Python library documentation in Emacs info mode!
712
713
714Changes to the source code that affect C extension writers
715----------------------------------------------------------
716
717The function strdup() no longer exists (it was used only in one places
718and is somewhat of a a portability problem sice some systems have the
719same function in their C library.
720
721The functions NEW() and RENEW() allocate one spare byte to guard
722against a NULL return from malloc(0) being taken for an error, but
723this should not be relied upon.
724
725
726=========================
727==> Release 0.9.7beta <==
728=========================
729
730
731Changes to the language proper
732------------------------------
733
734User-defined classes can now implement operations invoked through
735special syntax, such as x[i] or `x` by defining methods named
736__getitem__(self, i) or __repr__(self), etc.
737
738
739Changes to the build process
740----------------------------
741
742Instead of extensive manual editing of the Makefile to select
743compile-time options, you can now run a Configure.py script.
744The Makefile as distributed builds a minimal interpreter sufficient to
745run Configure.py. See also misc/BUILD
746
747The Makefile now includes more "utility" targets, e.g. install and
748tags/TAGS
749
750Using the provided strtod.c and strtol.c are now separate options, as
751on the Sun the provided strtod.c dumps core :-(
752
753The regex module is now an option chosen by the Makefile, since some
754(old) C compilers choke on regexpr.c
755
756
757Changes affecting portability
758-----------------------------
759
760You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
761interface
762
763Dynamic loading is now supported for Sun (and other non-COFF systems)
764throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
765DL is out, 1.4)
766
767The system-dependent code for the use of the select() system call is
768moved to one file: myselect.h
769
770Thanks to Jaap Vermeulen, the code should now port cleanly to the
771SEQUENT
772
773
774Changes to the interpreter interface
775------------------------------------
776
777The interpretation of $PYTHONPATH in the environment is different: it
778is inserted in front of the default path instead of overriding it
779
780
781Changes to existing built-in functions and methods
782--------------------------------------------------
783
784List objects now support an optional argument to their sort() method,
785which is a comparison function similar to qsort(3) in C
786
787File objects now have a method fileno(), used by the new select module
788(see below)
789
790
791New built-in function
792---------------------
793
794coerce(x, y): take two numbers and return a tuple containing them
795both converted to a common type
796
797
798Changes to built-in modules
799---------------------------
800
801sys: fixed core dumps in settrace() and setprofile()
802
803socket: added socket methods setsockopt() and getsockopt(); and
804fileno(), used by the new select module (see below)
805
806stdwin: added fileno() == connectionnumber(), in support of new module
807select (see below)
808
809posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
810
811gl: added qgetfd()
812
813fl: added several new functions, fixed several obscure bugs, adapted
814to FORMS 2.1
815
816
817Changes to standard modules
818---------------------------
819
820posixpath: changed implementation of ismount()
821
822string: atoi() no longer mistakes leading zero for octal number
823
824...
825
826
827New built-in modules
828--------------------
829
830Modules marked "dynamic only" are not configured at compile time but
831can be loaded dynamically. You need to turn on the DL or DLD option in
832the Makefile for support dynamic loading of modules (this requires
833external code).
834
835select: interfaces to the BSD select() system call
836
837dbm: interfaces to the (new) dbm library (dynamic only)
838
839nis: interfaces to some NIS functions (aka yellow pages)
840
841thread: limited form of multiple threads (sgi only)
842
843audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
844coding (dynamic only)
845
846cd: interface to Indigo SCSI CDROM player audio library (sgi only)
847
848jpeg: read files in JPEG format (dynamic only, sgi only; needs
849external code)
850
851imgfile: read SGI image files (dynamic only, sgi only)
852
853sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
854
855sv: interface to Indigo video library (sgi only)
856
857pc: a minimal set of MS-DOS interfaces (MS-DOS only)
858
859rotor: encryption, by Lance Ellinghouse (dynamic only)
860
861
862New standard modules
863--------------------
864
865Not all these modules are documented. Read the source:
866lib/<modulename>.py. Sometimes a file lib/<modulename>.doc contains
867additional documentation.
868
869imghdr: recognizes image file headers
870
871sndhdr: recognizes sound file headers
872
873profile: print run-time statistics of Python code
874
875readcd, cdplayer: companion modules for built-in module cd (sgi only)
876
877emacs: interface to Emacs using py-connect.el (see below).
878
879SOCKET: symbolic constant definitions for socket options
880
881SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
882
883SV: symbolic constat definitions for sv (sgi only)
884
885CD: symbolic constat definitions for cd (sgi only)
886
887
888New demos
889---------
890
891scripts/pp.py: execute Python as a filter with a Perl-like command
892line interface
893
894classes/: examples using the new class features
895
896threads/: examples using the new thread module
897
898sgi/cd/: examples using the new cd module
899
900
901Changes to the documentation
902----------------------------
903
904The last-minute syntax changes of release 0.9.6 are now reflected
905everywhere in the manuals
906
907The reference manual has a new section (3.2) on implementing new kinds
908of numbers, sequences or mappings with user classes
909
910Classes are now treated extensively in the tutorial (chapter 9)
911
912Slightly restructured the system-dependent chapters of the library
913manual
914
915The file misc/EXTENDING incorporates documentation for mkvalue() and
916a new section on error handling
917
918The files misc/CLASSES and misc/ERRORS are no longer necessary
919
920The doc/Makefile now creates PostScript files automatically
921
922
923Miscellaneous changes
924---------------------
925
926Incorporated Tim Peters' changes to python-mode.el, it's now version
9271.06
928
929A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
930program running in an Emacs buffer execute Emacs lisp code. The
931necessary Python code is in lib/emacs.py. The Emacs code is
932misc/py-connect.el (it needs some external Emacs lisp code)
933
934
935Changes to the source code that affect C extension writers
936----------------------------------------------------------
937
938New service function mkvalue() to construct a Python object from C
939values according to a "format" string a la getargs()
940
941Most functions from pythonmain.c moved to new pythonrun.c which is
942in libpython.a. This should make embedded versions of Python easier
943
944ceval.h is split in eval.h (which needs compile.h and only declares
945eval_code) and ceval.h (which doesn't need compile.hand declares the
946rest)
947
948ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
949improve the parallellism of multi-threaded programs by letting other
950Python code run when a blocking system call or something similar is
951made)
952
953In structmember.[ch], new member types BYTE, CHAR and unsigned
954variants have been added
955
956New file xxmodule.c is a template for new extension modules.
957
958==================================
959==> RELEASE 0.9.6 (6 Apr 1992) <==
960==================================
961
962Misc news in 0.9.6:
963- Restructured the misc subdirectory
964- Reference manual completed, library manual much extended (with indexes!)
965- the GNU Readline library is now distributed standard with Python
966- the script "../demo/scripts/classfix.py" fixes Python modules using old
967 class syntax
968- Emacs python-mode.el (was python.el) vastly improved (thanks, Tim!)
969- Because of the GNU copyleft business I am not using the GNU regular
970 expression implementation but a free re-implementation by Tatu Ylonen
971 that recently appeared in comp.sources.misc (Bravo, Tatu!)
972
973New features in 0.9.6:
974- stricter try stmt syntax: cannot mix except and finally clauses on 1 try
975- New module 'os' supplants modules 'mac' and 'posix' for most cases;
976 module 'path' is replaced by 'os.path'
977- os.path.split() return value differs from that of old path.split()
978- sys.exc_type, sys.exc_value, sys.exc_traceback are set to the exception
979 currently being handled
980- sys.last_type, sys.last_value, sys.last_traceback remember last unhandled
981 exception
982- New function string.expandtabs() expands tabs in a string
983- Added times() interface to posix (user & sys time of process & children)
984- Added uname() interface to posix (returns OS type, hostname, etc.)
985- New built-in function execfile() is like exec() but from a file
986- Functions exec() and eval() are less picky about whitespace/newlines
987- New built-in functions getattr() and setattr() access arbitrary attributes
988- More generic argument handling in built-in functions (see "./EXTENDING")
989- Dynamic loading of modules written in C or C++ (see "./DYNLOAD")
990- Division and modulo for long and plain integers with negative operands
991 have changed; a/b is now floor(float(a)/float(b)) and a%b is defined
992 as a-(a/b)*b. So now the outcome of divmod(a,b) is the same as
993 (a/b, a%b) for integers. For floats, % is also changed, but of course
994 / is unchanged, and divmod(x,y) does not yield (x/y, x%y)...
995- A function with explicit variable-length argument list can be declared
996 like this: def f(*args): ...; or even like this: def f(a, b, *rest): ...
997- Code tracing and profiling features have been added, and two source
998 code debuggers are provided in the library (pdb.py, tty-oriented,
999 and wdb, window-oriented); you can now step through Python programs!
1000 See sys.settrace() and sys.setprofile(), and "../lib/pdb.doc"
1001- '==' is now the only equality operator; "../demo/scripts/eqfix.py" is
1002 a script that fixes old Python modules
1003- Plain integer right shift now uses sign extension
1004- Long integer shift/mask operations now simulate 2's complement
1005 to give more useful results for negative operands
1006- Changed/added range checks for long/plain integer shifts
1007- Options found after "-c command" are now passed to the command in sys.argv
1008 (note subtle incompatiblity with "python -c command -- -options"!)
1009- Module stdwin is better protected against touching objects after they've
1010 been closed; menus can now also be closed explicitly
1011- Stdwin now uses its own exception (stdwin.error)
1012
1013New features in 0.9.5 (released as Macintosh application only, 2 Jan 1992):
1014- dictionary objects can now be compared properly; e.g., {}=={} is true
1015- new exception SystemExit causes termination if not caught;
1016 it is raised by sys.exit() so that 'finally' clauses can clean up,
1017 and it may even be caught. It does work interactively!
1018- new module "regex" implements GNU Emacs style regular expressions;
1019 module "regexp" is rewritten in Python for backward compatibility
1020- formal parameter lists may contain trailing commas
1021
1022Bugs fixed in 0.9.6:
1023- assigning to or deleting a list item with a negative index dumped core
1024- divmod(-10L,5L) returned (-3L, 5L) instead of (-2L, 0L)
1025
1026Bugs fixed in 0.9.5:
1027- masking operations involving negative long integers gave wrong results
1028
1029
1030===================================
1031==> RELEASE 0.9.4 (24 Dec 1991) <==
1032===================================
1033
1034- new function argument handling (see below)
1035- built-in apply(func, args) means func(args[0], args[1], ...)
1036- new, more refined exceptions
1037- new exception string values (NameError = 'NameError' etc.)
1038- better checking for math exceptions
1039- for sequences (string/tuple/list), x[-i] is now equivalent to x[len(x)-i]
1040- fixed list assignment bug: "a[1:1] = a" now works correctly
1041- new class syntax, without extraneous parentheses
1042- new 'global' statement to assign global variables from within a function
1043
1044
1045New class syntax
1046----------------
1047
1048You can now declare a base class as follows:
1049
1050 class B: # Was: class B():
1051 def some_method(self): ...
1052 ...
1053
1054and a derived class thusly:
1055
1056 class D(B): # Was: class D() = B():
1057 def another_method(self, arg): ...
1058
1059Multiple inheritance looks like this:
1060
1061 class M(B, D): # Was: class M() = B(), D():
1062 def this_or_that_method(self, arg): ...
1063
1064The old syntax is still accepted by Python 0.9.4, but will disappear
1065in Python 1.0 (to be posted to comp.sources).
1066
1067
1068New 'global' statement
1069----------------------
1070
1071Every now and then you have a global variable in a module that you
1072want to change from within a function in that module -- say, a count
1073of calls to a function, or an option flag, etc. Until now this was
1074not directly possible. While several kludges are known that
1075circumvent the problem, and often the need for a global variable can
1076be avoided by rewriting the module as a class, this does not always
1077lead to clearer code.
1078
1079The 'global' statement solves this dilemma. Its occurrence in a
1080function body means that, for the duration of that function, the
1081names listed there refer to global variables. For instance:
1082
1083 total = 0.0
1084 count = 0
1085
1086 def add_to_total(amount):
1087 global total, count
1088 total = total + amount
1089 count = count + 1
1090
1091'global' must be repeated in each function where it is needed. The
1092names listed in a 'global' statement must not be used in the function
1093before the statement is reached.
1094
1095Remember that you don't need to use 'global' if you only want to *use*
1096a global variable in a function; nor do you need ot for assignments to
1097parts of global variables (e.g., list or dictionary items or
1098attributes of class instances). This has not changed; in fact
1099assignment to part of a global variable was the standard workaround.
1100
1101
1102New exceptions
1103--------------
1104
1105Several new exceptions have been defined, to distinguish more clearly
1106between different types of errors.
1107
1108name meaning was
1109
1110AttributeError reference to non-existing attribute NameError
1111IOError unexpected I/O error RuntimeError
1112ImportError import of non-existing module or name NameError
1113IndexError invalid string, tuple or list index RuntimeError
1114KeyError key not in dictionary RuntimeError
1115OverflowError numeric overflow RuntimeError
1116SyntaxError invalid syntax RuntimeError
1117ValueError invalid argument value RuntimeError
1118ZeroDivisionError division by zero RuntimeError
1119
1120The string value of each exception is now its name -- this makes it
1121easier to experimentally find out which operations raise which
1122exceptions; e.g.:
1123
1124 >>> KeyboardInterrupt
1125 'KeyboardInterrupt'
1126 >>>
1127
1128
1129New argument passing semantics
1130------------------------------
1131
1132Off-line discussions with Steve Majewski and Daniel LaLiberte have
1133convinced me that Python's parameter mechanism could be changed in a
1134way that made both of them happy (I hope), kept me happy, fixed a
1135number of outstanding problems, and, given some backward compatibility
1136provisions, would only break a very small amount of existing code --
1137probably all mine anyway. In fact I suspect that most Python users
1138will hardly notice the difference. And yet it has cost me at least
1139one sleepless night to decide to make the change...
1140
1141Philosophically, the change is quite radical (to me, anyway): a
1142function is no longer called with either zero or one argument, which
1143is a tuple if there appear to be more arguments. Every function now
1144has an argument list containing 0, 1 or more arguments. This list is
1145always implemented as a tuple, and it is a (run-time) error if a
1146function is called with a different number of arguments than expected.
1147
1148What's the difference? you may ask. The answer is, very little unless
1149you want to write variadic functions -- functions that may be called
1150with a variable number of arguments. Formerly, you could write a
1151function that accepted one or more arguments with little trouble, but
1152writing a function that could be called with either 0 or 1 argument
1153(or more) was next to impossible. This is now a piece of cake: you
1154can simply declare an argument that receives the entire argument
1155tuple, and check its length -- it will be of size 0 if there are no
1156arguments.
1157
1158Another anomaly of the old system was the way multi-argument methods
1159(in classes) had to be declared, e.g.:
1160
1161 class Point():
1162 def init(self, (x, y, color)): ...
1163 def setcolor(self, color): ...
1164 dev moveto(self, (x, y)): ...
1165 def draw(self): ...
1166
1167Using the new scheme there is no need to enclose the method arguments
1168in an extra set of parentheses, so the above class could become:
1169
1170 class Point:
1171 def init(self, x, y, color): ...
1172 def setcolor(self, color): ...
1173 dev moveto(self, x, y): ...
1174 def draw(self): ...
1175
1176That is, the equivalence rule between methods and functions has
1177changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y)
1178while formerly it was equivalent to Point.moveto(p,(x,y)).
1179
1180A special backward compatibility rule makes that the old version also
1181still works: whenever a function with exactly two arguments (at the top
1182level) is called with more than two arguments, the second and further
1183arguments are packed into a tuple and passed as the second argument.
1184This rule is invoked independently of whether the function is actually a
1185method, so there is a slight chance that some erroneous calls of
1186functions expecting two arguments with more than that number of
1187arguments go undetected at first -- when the function tries to use the
1188second argument it may find it is a tuple instead of what was expected.
1189Note that this rule will be removed from future versions of the
1190language; it is a backward compatibility provision *only*.
1191
1192Two other rules and a new built-in function handle conversion between
1193tuples and argument lists:
1194
1195Rule (a): when a function with more than one argument is called with a
1196single argument that is a tuple of the right size, the tuple's items
1197are used as arguments.
1198
1199Rule (b): when a function with exactly one argument receives no
1200arguments or more than one, that one argument will receive a tuple
1201containing the arguments (the tuple will be empty if there were no
1202arguments).
1203
1204
1205A new built-in function, apply(), was added to support functions that
1206need to call other functions with a constructed argument list. The call
1207
1208 apply(function, tuple)
1209
1210is equivalent to
1211
1212 function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
1213
1214
1215While no new argument syntax was added in this phase, it would now be
1216quite sensible to add explicit syntax to Python for default argument
1217values (as in C++ or Modula-3), or a "rest" argument to receive the
1218remaining arguments of a variable-length argument list.
1219
1220
1221========================================================
1222==> Release 0.9.3 (never made available outside CWI) <==
1223========================================================
1224
1225- string sys.version shows current version (also printed on interactive entry)
1226- more detailed exceptions, e.g., IOError, ZeroDivisionError, etc.
1227- 'global' statement to declare module-global variables assigned in functions.
1228- new class declaration syntax: class C(Base1, Base2, ...): suite
1229 (the old syntax is still accepted -- be sure to convert your classes now!)
1230- C shifting and masking operators: << >> ~ & ^ | (for ints and longs).
1231- C comparison operators: == != (the old = and <> remain valid).
1232- floating point numbers may now start with a period (e.g., .14).
1233- definition of integer division tightened (always truncates towards zero).
1234- new builtins hex(x), oct(x) return hex/octal string from (long) integer.
1235- new list method l.count(x) returns the number of occurrences of x in l.
1236- new SGI module: al (Indigo and 4D/35 audio library).
1237- the FORMS interface (modules fl and FL) now uses FORMS 2.0
1238- module gl: added lrect{read,write}, rectzoom and pixmode;
1239 added (non-GL) functions (un)packrect.
1240- new socket method: s.allowbroadcast(flag).
1241- many objects support __dict__, __methods__ or __members__.
1242- dir() lists anything that has __dict__.
1243- class attributes are no longer read-only.
1244- classes support __bases__, instances support __class__ (and __dict__).
1245- divmod() now also works for floats.
1246- fixed obscure bug in eval('1 ').
1247
1248
1249===================================
1250==> Release 0.9.2 (Autumn 1991) <==
1251===================================
1252
1253Highlights
1254----------
1255
1256- tutorial now (almost) complete; library reference reorganized
1257- new syntax: continue statement; semicolons; dictionary constructors;
1258 restrictions on blank lines in source files removed
1259- dramatically improved module load time through precompiled modules
1260- arbitrary precision integers: compute 2 to the power 1000 and more...
1261- arithmetic operators now accept mixed type operands, e.g., 3.14/4
1262- more operations on list: remove, index, reverse; repetition
1263- improved/new file operations: readlines, seek, tell, flush, ...
1264- process management added to the posix module: fork/exec/wait/kill etc.
1265- BSD socket operations (with example servers and clients!)
1266- many new STDWIN features (color, fonts, polygons, ...)
1267- new SGI modules: font manager and FORMS library interface
1268
1269
1270Extended list of changes in 0.9.2
1271---------------------------------
1272
1273Here is a summary of the most important user-visible changes in 0.9.2,
1274in somewhat arbitrary order. Changes in later versions are listed in
1275the "highlights" section above.
1276
1277
12781. Changes to the interpreter proper
1279
1280- Simple statements can now be separated by semicolons.
1281 If you write "if t: s1; s2", both s1 and s2 are executed
1282 conditionally.
1283- The 'continue' statement was added, with semantics as in C.
1284- Dictionary displays are now allowed on input: {key: value, ...}.
1285- Blank lines and lines bearing only a comment no longer need to
1286 be indented properly. (A completely empty line still ends a multi-
1287 line statement interactively.)
1288- Mixed arithmetic is supported, 1 compares equal to 1.0, etc.
1289- Option "-c command" to execute statements from the command line
1290- Compiled versions of modules are cached in ".pyc" files, giving a
1291 dramatic improvement of start-up time
1292- Other, smaller speed improvements, e.g., extracting characters from
1293 strings, looking up single-character keys, and looking up global
1294 variables
1295- Interrupting a print operation raises KeyboardInterrupt instead of
1296 only cancelling the print operation
1297- Fixed various portability problems (it now passes gcc with only
1298 warnings -- more Standard C compatibility will be provided in later
1299 versions)
1300- Source is prepared for porting to MS-DOS
1301- Numeric constants are now checked for overflow (this requires
1302 standard-conforming strtol() and strtod() functions; a correct
1303 strtol() implementation is provided, but the strtod() provided
1304 relies on atof() for everything, including error checking
1305
1306
13072. Changes to the built-in types, functions and modules
1308
1309- New module socket: interface to BSD socket primitives
1310- New modules pwd and grp: access the UNIX password and group databases
1311- (SGI only:) New module "fm" interfaces to the SGI IRIX Font Manager
1312- (SGI only:) New module "fl" interfaces to Mark Overmars' FORMS library
1313- New numeric type: long integer, for unlimited precision
1314 - integer constants suffixed with 'L' or 'l' are long integers
1315 - new built-in function long(x) converts int or float to long
1316 - int() and float() now also convert from long integers
1317- New built-in function:
1318 - pow(x, y) returns x to the power y
1319- New operation and methods for lists:
1320 - l*n returns a new list consisting of n concatenated copies of l
1321 - l.remove(x) removes the first occurrence of the value x from l
1322 - l.index(x) returns the index of the first occurrence of x in l
1323 - l.reverse() reverses l in place
1324- New operation for tuples:
1325 - t*n returns a tuple consisting of n concatenated copies of t
1326- Improved file handling:
1327 - f.readline() no longer restricts the line length, is faster,
1328 and isn't confused by null bytes; same for raw_input()
1329 - f.read() without arguments reads the entire (rest of the) file
1330 - mixing of print and sys.stdout.write() has different effect
1331- New methods for files:
1332 - f.readlines() returns a list containing the lines of the file,
1333 as read with f.readline()
1334 - f.flush(), f.tell(), f.seek() call their stdio counterparts
1335 - f.isatty() tests for "tty-ness"
1336- New posix functions:
1337 - _exit(), exec(), fork(), getpid(), getppid(), kill(), wait()
1338 - popen() returns a file object connected to a pipe
1339 - utime() replaces utimes() (the latter is not a POSIX name)
1340- New stdwin features, including:
1341 - font handling
1342 - color drawing
1343 - scroll bars made optional
1344 - polygons
1345 - filled and xor shapes
1346 - text editing objects now have a 'settext' method
1347
1348
13493. Changes to the standard library
1350
1351- Name change: the functions path.cat and macpath.cat are now called
1352 path.join and macpath.join
1353- Added new modules: formatter, mutex, persist, sched, mainloop
1354- Added some modules and functionality to the "widget set" (which is
1355 still under development, so please bear with me):
1356 DirList, FormSplit, TextEdit, WindowSched
1357- Fixed module testall to work non-interactively
1358- Module string:
1359 - added functions join() and joinfields()
1360 - fixed center() to work correct and make it "transitive"
1361- Obsolete modules were removed: util, minmax
1362- Some modules were moved to the demo directory
1363
1364
13654. Changes to the demonstration programs
1366
1367- Added new useful scipts: byteyears, eptags, fact, from, lfact,
1368 objgraph, pdeps, pi, primes, ptags, which
1369- Added a bunch of socket demos
1370- Doubled the speed of ptags
1371- Added new stdwin demos: microedit, miniedit
1372- Added a windowing interface to the Python interpreter: python (most
1373 useful on the Mac)
1374- Added a browser for Emacs info files: demo/stdwin/ibrowse
1375 (yes, I plan to put all STDWIN and Python documentation in texinfo
1376 form in the future)
1377
1378
13795. Other changes to the distribution
1380
1381- An Emacs Lisp file "python.el" is provided to facilitate editing
1382 Python programs in GNU Emacs (slightly improved since posted to
1383 gnu.emacs.sources)
1384- Some info on writing an extension in C is provided
1385- Some info on building Python on non-UNIX platforms is provided
1386
1387
1388=====================================
1389==> Release 0.9.1 (February 1991) <==
1390=====================================
1391
1392- Micro changes only
1393- Added file "patchlevel.h"
1394
1395
1396=====================================
1397==> Release 0.9.0 (February 1991) <==
1398=====================================
1399
1400Original posting to alt.sources.