========================================= ==> Release 1.4beta3 (August 26 1996) <== ========================================= (XXX This is less readable that it should. I promis to restructure it for the final 1.4 release.) What's new in 1.4beta3 (since beta2)? ------------------------------------- - In urllib.urlopen(): HTTP URLs containing user:passwd@host are now handled correctly when using a proxy server. - In ntpath.normpath(): don't truncate to 8+3 format. - In mimetools.choose_boundary(): don't die when getuid() or getpid() aren't defined. - Module urllib: some optimizations to (un)quoting. - New module MimeWriter for writing MIME documents. - More changes to formatter module. - The freeze script works once again and is much more robust (using sys.prefix etc.). It also supports a -o option to specify an output directory. - New module whichdb recognizes dbm, gdbm and bsddb/dbhash files. - The Doc/Makefile targets have been reorganized somewhat to remove the insistence on always generating PostScript. - The texinfo to html filter (Doc/texi2html.py) has been improved somewhat. - "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing name conflict on the Mac. - Linking a module compiled with a different setting for Py_TRACE_REFS now generates a linker error rather than a core dump. - The cgi module has a new convenience function print_exception(), which formats a python exception using HTML. It also fixes a bug in the compatibility code and adds a dubious feature which makes it possible to have two query strings, one in the URL and one in the POST data. - A subtle change in the unpickling of class instances makes it possible to unpickle in restricted execution mode, where the __dict__ attribute is not available (but setattr() is). - Documentation for os.path.splitext() (== posixpath.splitext()) has been cleared up. It splits at the *last* dot. - posixfile locking is now also correctly supported on AIX. - The tempfile module once again honors an initial setting of tmpdir. It now works on Windows, too. - The traceback module has some new functions to extract, format and print the active stack. - Some translation functions in the urllib module have been made a little less sluggish. - The addtag_* methods for Canvas widgets in Tkinter as well as in the separate Canvas class have been fixed so they actually do something meaningful. - A tiny _test() function has been added to Tkinter.py. - A generic Makefile for dynamically loaded modules is provided in the Misc subdirectory (Misc/gMakefile). - A new version of python-mode.el for Emacs is provided. See http://www.python.org/ftp/emacs/pmdetails.html for details. The separate file pyimenu.el is no longer needed, imenu support is folded into python-mode.el. - The configure script can finally correctly find the readline library in a non-standard location. The LDFLAGS variable is passed on the the Makefiles from the configure script. - Shared libraries are now installed as programs (i.e. with executable permission). This is required on HP-UX and won't hurt on other systems. - The objc.c module is no longer part of the distribution. Objective-C support may become available as contributed software on the ftp site. - The sybase module is no longer part of the distribution. May John Redford rot in hell. A much improved sybase module is available as contributed software from the ftp site. - _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0. - In Setup, you can now write "*shared*" instead of "*noconfig*", and you can use *.so and *.sl as shared libraries. - Some more fidgeting for AIX shared libraries. - The mpz module is now compatible with GMP 2.x. (Not tested by me.) (Note -- a complete replacement by Niels Mo"ller, called gpmodule, is available from the contrib directory on the ftp site.) - A warning is written to sys.stderr when a __del__ method raises an exception (formerly, such exceptions were completely ignored). - The configure script now defines HAVE_OLD_CPP if the C preprocessor is incapable of ANSI style token concatenation and stringification. - All source files (except a few platform specific modules) are once again compatible with K&R C compilers as well as ANSI compilers. In particular, ANSI-isms have been removed or made conditional in complexobject.c, getargs.c and operator.c. - The abstract object API has three new functions, PyObject_DelItem, PySequence_DelItem, and PySequence_DelSlice. - The operator module has new functions delitem and delslice, and the functions "or" and "and" are renamed to "or_" and "and_" (since "or" and "and" are reserved words). ("__or__" and "__and__" are unchanged.) - The environment module is no longer supported; putenv() is now a function in posixmodule (also under NT). - Error in filter(, "") has been fixed. - Unrecognized keyword arguments raise TypeError, not KeyError. - Better portability, fewer bugs and memory leaks, fewer compiler warnings, some more documentation. - Bug in float power boundary case (0.0 to the negative integer power) fixed. - The test of negative number to the float power has been moved from the built-in pow() functin to floatobject.c (so complex numbers can yield the correct result). - The bug introduced in beta2 where shared libraries loaded (using dlopen()) from the current directory would fail, has been fixed. - Modules imported as shared libraries now also have a __file__ attribute, giving the filename from which they were loaded. The only modules without a __file__ attribute now are built-in modules. - On the Mac, dynamically loaded modules can end in either ".slb" or "..slb" where is either "CFM68K" or "ppc". The ".slb" extension should only be used for "fat" binaries. - C API addition: marshal.c now supports PyMarshal_WriteObjectToString(object). - C API addition: getargs.c now supports PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...) to parse keyword arguments. - The PC versioning scheme (sys.winver) has changed once again. the version number is now "...", where the first three s are the Python version (e.g. "1.4.0" for Python 1.4, "1.4.1" for Python 1.4.1 -- the beta level is not included) and is the four-digit PYTHON_API_VERSION (currently 1005). - h2py.py accepts whitespace before the # in CPP directives - On Solaris 2.5, it should now be possible to use either Posix threads or Solaris threads (XXX: how do you select which is used???). (Note: the Python pthreads interface doesn't fully support semaphores yet -- anyone care to fix this?) - Thread support should now work on AIX, using either DCE threads or pthreads. - New file Demo/sockets/unicast.py - Working Mac port, with CFM68K support, with Tk 4.1 support (though not both) (XXX) - New project setup for PC port, now compatible with PythonWin, with _tkinter and NumPy support (XXX) - New module site.py (XXX) - New module xdrlib.py and optional support module _xdrmodule.c (XXX) - parser module adapted to new grammar, complete w/ Doc & Demo (XXX) - regen script fixed (XXX) - new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX) - testall now also tests math module (XXX) - string.atoi c.s. now raise an exception for an empty input string. - At last, it is no longer necessary to define HAVE_CONFIG_H in order to have config.h included at various places. - Unrecognized keyword arguments now raise TypeError rather than KeyError. - The makesetup script recognizes files with extension .so or .sl as (shared) libraries. - 'access' is no longer a reserved word, and all code related to its implementation is gone (or at least #ifdef'ed out). This should make Python a little speedier too! - Performance enhancements suggested by Sjoerd Mullender. This includes the introduction of two new optional function pointers in type object, getattro and setattro, which are like getattr and setattr but take a string object instead of a C string pointer. - New operations in string module: lstrip(s) and rstrip(s) strip whitespace only on the left or only on the right, A new optional third argument to split() specifies the maximum number of separators honored (so splitfields(s, sep, n) returns a list of at most n+1 elements). (Since 1.3, splitfields(s, None) is totally equivalent to split(s).) string.capwords() has an optional second argument specifying the separator (which is passed to split()). - regsub.split() has the same addition as string.split(). regsub.splitx(s, sep, maxsep) implements the functionality that was regsub.split(s, 1) in 1.4beta2 (return a list containing the delimiters as well as the words). - Final touch for AIX loading, rewritten Misc/AIX-NOTES. - In Modules/_tkinter.c, when using Tk 4.1 or higher, use className argument to _tkinter.create() to set Tcl's argv0 variable, so X resources use the right resource class again. - Add #undef fabs to Modules/mathmodule.c for macintosh. - Added some macro renames for AIX in Modules/operator.c. - Removed spurious 'E' from Doc/liberrno.tex. - Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new Misc/gMakefile and new version of Misc/python-mode.el. - Fixed typo in Lib/ntpath.py (islink has "return false" which gives a NameError). - Added missing "from types import *" to Lib/tkinter/Canvas.py. - Added hint about using default args for __init__ to pickle docs. - Corrected typo in Inclide/abstract.h: PySequence_Lenth -> PySequence_Length. - Some improvements to Doc/texi2html.py. - In Python/import.c, Cast unsigned char * in struct _frozen to char * in calls to rds_object(). - In doc/ref4.tex, added note about scope of lambda bodies. What's new in 1.4beta2 (since beta1)? ------------------------------------- - Portability bug in the md5.h header solved. - The PC build procedure now really works, and sets sys.platform to a meaningful value (a few things were botched in beta 1). Lib/dos_8x3 is now a standard part of the distribution (alas). - More improvements to the installation procedure. Typing "make install" now inserts the version number in the pathnames of almost everything installed, and creates the machine dependent modules (FCNTL.py etc.) if not supplied by the distribution. (XXX There's still a problem with the latter because the "regen" script requires that Python is installed. Some manual intervention may still be required.) (This has been fixed in 1.4beta3.) - New modules: errno, operator (XXX). - Changes for use with Numerical Python: builtin function slice() and Ellipses object, and corresponding syntax: x[lo:hi:stride] == x[slice(lo, hi, stride)] x[a, ..., z] == x[(a, Ellipses, z)] - New documentation for errno and cgi mdoules. - The directory containing the script passed to the interpreter is inserted in from of sys.path; "." is no longer a default path component. - Optional third string argument to string.translate() specifies characters to delete. New function string.maketrans() creates a translation table for translate() or for regex.compile(). - Module posix (and hence module os under Unix) now supports putenv(). Moreover, module os is enhanced so that if putenv() is supported, assignments to os.environ entries make the appropriate putenv() call. (XXX the putenv() implementation can leak a small amount of memory per call.) - pdb.py can now be invoked from the command line to debug a script: python pdb.py