Happy new year to you all!

Sun, 02 Jan 1994 00:43:17 +0100

I hope you've had at least as good a 1993 as I have, and wish you all
the best for 1994...

...And just in case you wondered where the promised 1.0.0 release of
Python is, have a look at python1.0.0beta.tar.Z in pub/python on
ftp.cwi.nl. This is a BETA release, so unless you feel confident
hacking Makefiles and C code, don't even think of fetching it!

Installation differs greatly from the 0.9.9 release: configuration is
done using GNU autoconf, and selection of optional modules is done by
editing a file (but the number of choices you need to make has been
greatly reduced). On most systems, simply typing "make" in the
toplevel directory should build the entire interpreter without human
interference. (If this isn't the case on your system, please let me
know how I might fix it!)

The list of changes is too long to include here; must changes are
backwards compatible, but there are two new keyword ('exec' has been
promoted from built-in function to statement, so posix.exec has been
renamed posix.execv, and there's a 'lambda' expression as a shorthand
to create unnamed functions), and time.millitimer() and
time.millisleep() are gone.

There is a TODO file that lists some things that I haven't finished
yet -- e.g. dynamic loading (except through SunOS shared libraries,
which is turned on by default if the system supports it), frozen
scripts, setting the default PYTHONPATH, and proper install targets in
the Makefile. I haven't found the time to start the renaming project
(most of its fans have been very quiet lately -- where are you?), and
the X interface, although augmented with some Xlib and colormap/visual
functionality, is basically in the same sorry state as half a year

OK, a few bits of positive news:

- all bugs reported about 0.9.9 fixed

- the SyntaxError exception now contains details about the location of
the error in its associated value

- exec is now a statement, the new syntax is
exec <expression> [in <expression> [, <expression>]]
(where the second and third <expression> specify the dictionaries used
for global and local variables); if the first <expression> is a
triple, b/w compatibility code is invoked. (This change removes the
pitfall where assignments to locals in an exec() call were not
seen by the interpreter.)

- module builtin has been renamed to __builtin__ (a Python module
named builtin gives b/w compatibility)

- some functional programming support (built-in functions filter, map,
reduce, and lambda expressions)

- double quotes can now be used as string quotes (with exactly the
same interpretation as single quotes)

- sys.tracebacklimit can be set to limit the length of the stack
traceback printed on errors

- .pyc files without corresponding .py files can now be used to
implement a module

- a module can now access its own name as __name__

- print now uses an object's __str__() method if implemented

- file now have a writelines() method

- all the standard library classes now have an __init__() constructor
instead of an init() method; unfortunately this mass change has been
implemented with little respect for b/w compatibility.

If I have left your favorite change out of this version, please let me
know -- it may not be to late for the final release of 1.0.0! Note
that some constributed code is still waiting to be merged in.

I am especially interested in porting experiences to hardware and
software of DEC, HP and NeXT (running some kind of UNIX), since I
don't have access to these. I have thoroughly tested SGI IRIX 4.0.5
and 5.1, as well as SunOS 4.1.3 and Solaris 2.1 -- if you find
problems on these systems (especially the SGI ones) I'd be surprised.
Other porting experiences (Linux? 386BSD?) are welcome as well.


--Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl>
URL: <http://www.cwi.nl/cwi/people/Guido.van.Rossum.html>