blob: 91bbe87c9830f797c225565574613d3c17ae401b [file] [log] [blame]
Guido van Rossum02afd081996-10-22 02:16:19 +00001=====================================
2==> Release 1.4 (October 25 1996) <==
3=====================================
4
5(XXX Sorry, this is in totally random order. I hope I can find the
6time to fix it.)
7
8- Changed copyright.
9
10- SyntaxError exceptions detected during code generation
11(e.g. assignment to an expression) now include a line number.
12
13- Don't leave trailing / or \ in script directory inserted in front of
14sys.path.
15
16- Added a note to Tools/scripts/classfix.py abouts its historical
17importance.
18
19- Added Misc/Makefile.pre.in, a universal Makefile for extensions
20built outside the distribution.
21
22- Rewritten Misc/faq2html.py, by Ka-Ping Yee.
23
24- Install shared modules with mode 555 (needed for performance on some
25platforms).
26
27- Some changes to standard library modules to avoid calling append()
28with more than one argument -- while supported, this should be
29outlawed, and I don't want to set a bad example.
30
31- bdb.py (and hence pdb.py) supports calling run() with a code object
32instead of a code string.
33
34- Fixed an embarrassing bug cgi.py which prevented correct uploading
35of binary files from Netscape (which doesn't distinguish between
36binary and text files). Also added dormant logging support, which
37makes it easier to debug the cgi module itself.
38
39- Added default writer to constructor of NullFormatter class.
40
41- Use binary mode for socket.makefile() calls in ftplib.py.
42
43- The ihooks module no longer "installs" itself upon import -- this
44was an experimental feature that helped ironing out some bugs but that
45slowed down code that imported it without the need to install it
46(e.g. the rexec module). Also close the file in some cases and add
47the __file__ attribute to loaded modules.
48
49- The test program for mailbox.py is now more useful.
50
51- Added getparamnames() to Message class in mimetools.py -- it returns
52the names of parameters to the content-type header.
53
54- Fixed a typo in ni that broke the loop stripping "__." from names.
55
56- Fix sys.path[0] for scripts run via pdb.py's new main program.
57
58- profile.py can now also run a script, like pdb.
59
60- Fix a small bug in pyclbr -- don't add names starting with _ when
61emulating from ... import *.
62
63- Fixed a series of embarrassing typos in rexec's handling of standard
64I/O redirection. Added some more "safe" built-in modules: cmath,
65errno, operator.
66
67- Fixed embarrassing typo in shelve.py.
68
69- Added SliceType and EllipsisType to types.py.
70
71- In urllib.py, added handling for error 301 (same as 302); added
72geturl() method to get the URL after redirection.
73
74- Fixed embarrassing typo in xdrlib.py. Also fixed typo in Setup.in
75for _xdrmodule.c and removed redundant #include from _xdrmodule.c.
76
77- Fixed bsddbmodule.c to add binary mode indicator on platforms that
78have it. This should make it working on Windows NT.
79
80- Changed last uses of #ifdef NT to #ifdef MS_WINDOWS or MS_WIN32,
81whatever applies. Also rationalized some other tests for various MS
82platforms.
83
84- Added the sources for the NT installer script used for Python
851.4beta3. Not tested with this release, but better than nothing.
86
87- A compromise in pickle's defenses against Trojan horses: a
88user-defined function is now okay where a class is expected. A
89built-in function is not okay, to prevent pickling something that
90will execute os.system("rm -f *") when unpickling.
91
92- dis.py will print the name of local variables referenced by local
93load/store/delete instructions.
94
95- Improved portability of SimpleHttpServer module to non-Unix
96platform.
97
98- The thread.h interface adds an extra argument to down_sema(). This
99only affects other C code that uses thread.c; the Python thread module
100doesn't use semaphores (which aren't provided on all platforms where
101Python threads are supported). Note: on NT, this change is not
102implemented.
103
104- Fixed some typos in abstract.h; corrected signature of
105PyNumber_Coerce, added PyMapping_DelItem. Also fixed a bug in
106abstract.c's PyObject_CallMethod().
107
108- apply(classname, (), {}) now works even if the class has no
109__init__() method.
110
111- Implemented complex remainder and divmod() (these would dump core!).
112Conversion of complex numbers to int, long int or float now raises an
113exception, since there is no meaningful way to do it without losing
114information.
115
116- Fixed bug in built-in complex() function which gave the wrong result
117for two real arguments.
118
119- Change the hash algorithm for strings -- the multiplier is now
1201000003 instead of 3, which gives better spread for short strings.
121
122- New default path for Windows NT, the registry structure now supports
123default paths for different install packages. (Mark Hammond -- the
124next PythonWin release will use this.)
125
126- Added more symbols to the python_nt.def file.
127
128- When using GNU readline, set rl_readline_name to "python".
129
130- The Ellipses built-in name has been renamed to Ellipsis -- this is
131the correct singular form. Thanks to Ka-Ping Yee, who saved us from
132eternal embarrassment.
133
134- Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses ->
135Ellipsis name change.
136
137- Updated the library reference manual. Added documentation of
138restricted mode (rexec, Bastion) and the formatter module (for use
139with the htmllib module). Fixed the documentation of htmllib
140(finally).
141
142- The reference manual is now maintained in FrameMaker.
143
144- Upgraded scripts Doc/partparse.py and Doc/texi2html.py.
145
146- Slight improvements to Doc/Makefile.
147
148- Added fcntl.lockf(). This should be used for Unix file locking
149instead of the posixfile module; lockf() is more portable.
150
151- The getopt module now supports long option names, thanks to Lars
152Wizenius.
153
154- Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake
155and Nils Fischbeck.
156
157- Use more bits of time.time() in whrandom's default seed().
158
159- Performance hack for regex module's regs attribute.
160
161- Don't close already closed socket in socket module.
162
163- Correctly handle separators containing embedded nulls in
164strop.split, strop.find and strop.rfind. Also added more detail to
165error message for strop.atoi and friends.
166
167- Moved fallback definition for hypot() to Python/hypot.c.
168
169- Added fallback definition for strdup, in Python/strdup.c.
170
171- Fixed some bugs where a function would return 0 to indicate an error
172where it should return -1.
173
174- Test for error returned by time.localtime(), and rationalized its MS
175tests.
176
177- Added Modules/Setup.local file, which is processed after Setup.
178
179- Corrected bug in toplevel Makefile.in -- execution of regen script
180would not use the right PATH and PYTHONPATH.
181
182- Various and sundry NeXT configuration changes (sigh).
183
184- Support systems where libreadline needs neither termcap nor curses.
185
186- Improved ld_so_aix script and python.exp file (for AIX).
187
188- More stringent test for working <stdarg.h> in configure script.
189
190- Removed Demo/www subdirectory -- it was totally out of date.
191
192- Improved demos and docs for Fred Drake's parser module; fixed one
193typo in the module itself.
194
195
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000196=========================================
Guido van Rossum4a67a161996-08-26 02:40:59 +0000197==> Release 1.4beta3 (August 26 1996) <==
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000198=========================================
Guido van Rossum635649f1994-11-10 23:04:51 +0000199
Guido van Rossum635649f1994-11-10 23:04:51 +0000200
Guido van Rossum02afd081996-10-22 02:16:19 +0000201(XXX This is less readable that it should. I promise to restructure
202it for the final 1.4 release.)
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000203
Guido van Rossum4a67a161996-08-26 02:40:59 +0000204
205What's new in 1.4beta3 (since beta2)?
206-------------------------------------
207
Guido van Rossum02afd081996-10-22 02:16:19 +0000208- Name mangling to implement a simple form of class-private variables.
209A name of the form "__spam" can't easily be used outside the class.
210(This was added in 1.4beta3, but left out of the 1.4beta3 release
211message.)
212
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000213- In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
214handled correctly when using a proxy server.
215
216- In ntpath.normpath(): don't truncate to 8+3 format.
217
218- In mimetools.choose_boundary(): don't die when getuid() or getpid()
219aren't defined.
220
221- Module urllib: some optimizations to (un)quoting.
222
223- New module MimeWriter for writing MIME documents.
224
225- More changes to formatter module.
226
227- The freeze script works once again and is much more robust (using
228sys.prefix etc.). It also supports a -o option to specify an
229output directory.
230
Guido van Rossum4a67a161996-08-26 02:40:59 +0000231- New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
232
233- The Doc/Makefile targets have been reorganized somewhat to remove the
234insistence on always generating PostScript.
235
236- The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
237
238- "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing
239name conflict on the Mac.
240
241- Linking a module compiled with a different setting for Py_TRACE_REFS now
242generates a linker error rather than a core dump.
243
244- The cgi module has a new convenience function print_exception(), which
245formats a python exception using HTML. It also fixes a bug in the
246compatibility code and adds a dubious feature which makes it possible to
247have two query strings, one in the URL and one in the POST data.
248
249- A subtle change in the unpickling of class instances makes it possible
250to unpickle in restricted execution mode, where the __dict__ attribute is
251not available (but setattr() is).
252
253- Documentation for os.path.splitext() (== posixpath.splitext()) has been
254cleared up. It splits at the *last* dot.
255
256- posixfile locking is now also correctly supported on AIX.
257
258- The tempfile module once again honors an initial setting of tmpdir. It
259now works on Windows, too.
260
261- The traceback module has some new functions to extract, format and print
262the active stack.
263
264- Some translation functions in the urllib module have been made a little
265less sluggish.
266
267- The addtag_* methods for Canvas widgets in Tkinter as well as in the
268separate Canvas class have been fixed so they actually do something
269meaningful.
270
271- A tiny _test() function has been added to Tkinter.py.
272
273- A generic Makefile for dynamically loaded modules is provided in the Misc
274subdirectory (Misc/gMakefile).
275
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000276- A new version of python-mode.el for Emacs is provided. See
277http://www.python.org/ftp/emacs/pmdetails.html for details. The
278separate file pyimenu.el is no longer needed, imenu support is folded
279into python-mode.el.
Guido van Rossum4a67a161996-08-26 02:40:59 +0000280
281- The configure script can finally correctly find the readline library in a
282non-standard location. The LDFLAGS variable is passed on the the Makefiles
283from the configure script.
284
285- Shared libraries are now installed as programs (i.e. with executable
286permission). This is required on HP-UX and won't hurt on other systems.
287
288- The objc.c module is no longer part of the distribution. Objective-C
289support may become available as contributed software on the ftp site.
290
Guido van Rossum02afd081996-10-22 02:16:19 +0000291- The sybase module is no longer part of the distribution. A much
292improved sybase module is available as contributed software from the
293ftp site.
Guido van Rossum4a67a161996-08-26 02:40:59 +0000294
295- _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and
296Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file
297now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0.
298
299- In Setup, you can now write "*shared*" instead of "*noconfig*", and you
300can use *.so and *.sl as shared libraries.
301
302- Some more fidgeting for AIX shared libraries.
303
304- The mpz module is now compatible with GMP 2.x. (Not tested by me.)
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000305(Note -- a complete replacement by Niels Mo"ller, called gpmodule, is
306available from the contrib directory on the ftp site.)
Guido van Rossum4a67a161996-08-26 02:40:59 +0000307
308- A warning is written to sys.stderr when a __del__ method raises an
309exception (formerly, such exceptions were completely ignored).
310
311- The configure script now defines HAVE_OLD_CPP if the C preprocessor is
312incapable of ANSI style token concatenation and stringification.
313
314- All source files (except a few platform specific modules) are once again
315compatible with K&R C compilers as well as ANSI compilers. In particular,
316ANSI-isms have been removed or made conditional in complexobject.c,
317getargs.c and operator.c.
318
319- The abstract object API has three new functions, PyObject_DelItem,
320PySequence_DelItem, and PySequence_DelSlice.
321
322- The operator module has new functions delitem and delslice, and the
323functions "or" and "and" are renamed to "or_" and "and_" (since "or" and
324"and" are reserved words). ("__or__" and "__and__" are unchanged.)
325
326- The environment module is no longer supported; putenv() is now a function
327in posixmodule (also under NT).
328
329- Error in filter(<function>, "") has been fixed.
330
331- Unrecognized keyword arguments raise TypeError, not KeyError.
332
333- Better portability, fewer bugs and memory leaks, fewer compiler warnings,
334some more documentation.
335
336- Bug in float power boundary case (0.0 to the negative integer power)
337fixed.
338
339- The test of negative number to the float power has been moved from the
340built-in pow() functin to floatobject.c (so complex numbers can yield the
341correct result).
342
343- The bug introduced in beta2 where shared libraries loaded (using
344dlopen()) from the current directory would fail, has been fixed.
345
346- Modules imported as shared libraries now also have a __file__ attribute,
347giving the filename from which they were loaded. The only modules without
348a __file__ attribute now are built-in modules.
349
350- On the Mac, dynamically loaded modules can end in either ".slb" or
351".<platform>.slb" where <platform> is either "CFM68K" or "ppc". The ".slb"
352extension should only be used for "fat" binaries.
353
354- C API addition: marshal.c now supports
355PyMarshal_WriteObjectToString(object).
356
357- C API addition: getargs.c now supports
358PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
359to parse keyword arguments.
360
361- The PC versioning scheme (sys.winver) has changed once again. the
362version number is now "<digit>.<digit>.<digit>.<apiversion>", where the
363first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4,
364"1.4.1" for Python 1.4.1 -- the beta level is not included) and
365<apiversion> is the four-digit PYTHON_API_VERSION (currently 1005).
366
367- h2py.py accepts whitespace before the # in CPP directives
368
369- On Solaris 2.5, it should now be possible to use either Posix threads or
370Solaris threads (XXX: how do you select which is used???). (Note: the
371Python pthreads interface doesn't fully support semaphores yet -- anyone
372care to fix this?)
373
374- Thread support should now work on AIX, using either DCE threads or
375pthreads.
376
377- New file Demo/sockets/unicast.py
378
379- Working Mac port, with CFM68K support, with Tk 4.1 support (though not
380both) (XXX)
381
382- New project setup for PC port, now compatible with PythonWin, with
383_tkinter and NumPy support (XXX)
384
385- New module site.py (XXX)
386
387- New module xdrlib.py and optional support module _xdrmodule.c (XXX)
388
389- parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
390
Guido van Rossum4a67a161996-08-26 02:40:59 +0000391- regen script fixed (XXX)
392
393- new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
394
395- testall now also tests math module (XXX)
396
397- string.atoi c.s. now raise an exception for an empty input string.
398
399- At last, it is no longer necessary to define HAVE_CONFIG_H in order to
400have config.h included at various places.
401
402- Unrecognized keyword arguments now raise TypeError rather than KeyError.
403
404- The makesetup script recognizes files with extension .so or .sl as
405(shared) libraries.
406
407- 'access' is no longer a reserved word, and all code related to its
408implementation is gone (or at least #ifdef'ed out). This should make
409Python a little speedier too!
410
411- Performance enhancements suggested by Sjoerd Mullender. This includes
412the introduction of two new optional function pointers in type object,
413getattro and setattro, which are like getattr and setattr but take a
414string object instead of a C string pointer.
415
416- New operations in string module: lstrip(s) and rstrip(s) strip whitespace
417only on the left or only on the right, A new optional third argument to
418split() specifies the maximum number of separators honored (so
419splitfields(s, sep, n) returns a list of at most n+1 elements). (Since
4201.3, splitfields(s, None) is totally equivalent to split(s).)
421string.capwords() has an optional second argument specifying the
422separator (which is passed to split()).
423
424- regsub.split() has the same addition as string.split(). regsub.splitx(s,
425sep, maxsep) implements the functionality that was regsub.split(s, 1) in
4261.4beta2 (return a list containing the delimiters as well as the words).
427
428- Final touch for AIX loading, rewritten Misc/AIX-NOTES.
429
430- In Modules/_tkinter.c, when using Tk 4.1 or higher, use className
431argument to _tkinter.create() to set Tcl's argv0 variable, so X
432resources use the right resource class again.
433
434- Add #undef fabs to Modules/mathmodule.c for macintosh.
435
436- Added some macro renames for AIX in Modules/operator.c.
437
438- Removed spurious 'E' from Doc/liberrno.tex.
439
440- Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
441Misc/gMakefile and new version of Misc/python-mode.el.
442
443- Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
444NameError).
445
446- Added missing "from types import *" to Lib/tkinter/Canvas.py.
447
448- Added hint about using default args for __init__ to pickle docs.
449
450- Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
451PySequence_Length.
452
453- Some improvements to Doc/texi2html.py.
454
455- In Python/import.c, Cast unsigned char * in struct _frozen to char *
456in calls to rds_object().
457
458- In doc/ref4.tex, added note about scope of lambda bodies.
459
460What's new in 1.4beta2 (since beta1)?
461-------------------------------------
Guido van Rossum635649f1994-11-10 23:04:51 +0000462
Guido van Rossumccdfce31996-07-30 21:34:09 +0000463- Portability bug in the md5.h header solved.
Guido van Rossum0082c1a1995-04-10 11:52:44 +0000464
Guido van Rossumccdfce31996-07-30 21:34:09 +0000465- The PC build procedure now really works, and sets sys.platform to a
466meaningful value (a few things were botched in beta 1). Lib/dos_8x3
467is now a standard part of the distribution (alas).
Guido van Rossum635649f1994-11-10 23:04:51 +0000468
Guido van Rossum4a67a161996-08-26 02:40:59 +0000469- More improvements to the installation procedure. Typing "make install"
470now inserts the version number in the pathnames of almost everything
471installed, and creates the machine dependent modules (FCNTL.py etc.) if not
472supplied by the distribution. (XXX There's still a problem with the latter
473because the "regen" script requires that Python is installed. Some manual
474intervention may still be required.) (This has been fixed in 1.4beta3.)
Guido van Rossum061f1821994-10-06 16:03:45 +0000475
Guido van Rossum4a67a161996-08-26 02:40:59 +0000476- New modules: errno, operator (XXX).
Guido van Rossum061f1821994-10-06 16:03:45 +0000477
Guido van Rossumccdfce31996-07-30 21:34:09 +0000478- Changes for use with Numerical Python: builtin function slice() and
479Ellipses object, and corresponding syntax:
Guido van Rossum061f1821994-10-06 16:03:45 +0000480
Guido van Rossumccdfce31996-07-30 21:34:09 +0000481 x[lo:hi:stride] == x[slice(lo, hi, stride)]
482 x[a, ..., z] == x[(a, Ellipses, z)]
483
484- New documentation for errno and cgi mdoules.
485
486- The directory containing the script passed to the interpreter is
487inserted in from of sys.path; "." is no longer a default path
488component.
489
490- Optional third string argument to string.translate() specifies
491characters to delete. New function string.maketrans() creates a
492translation table for translate() or for regex.compile().
493
494- Module posix (and hence module os under Unix) now supports putenv().
495Moreover, module os is enhanced so that if putenv() is supported,
496assignments to os.environ entries make the appropriate putenv() call.
497(XXX the putenv() implementation can leak a small amount of memory per
498call.)
499
500- pdb.py can now be invoked from the command line to debug a script:
501python pdb.py <script> <arg> ...
502
503- Much improved parseaddr() in rfc822.
504
505- In cgi.py, you can now pass an alternative value for environ to
506nearly all functions.
507
508- You can now assign to instance variables whose name begins and ends
509with '__'.
510
511- New version of Fred Drake's parser module and associates (token,
512symbol, AST).
513
Guido van Rossum4a67a161996-08-26 02:40:59 +0000514- New PYTHON_API_VERSION value and .pyc file magic number (again!).
Guido van Rossumccdfce31996-07-30 21:34:09 +0000515
516- The "complex" internal structure type is now called "Py_complex" to
517avoid name conflicts.
518
519- Numerous small bugs fixed.
520
521- Slight pickle speedups.
522
523- Some slight speedups suggested by Sjoerd (more coming in 1.4 final).
524
525- NeXT portability mods by Bill Bumgarner integrated.
526
527- Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been
528converted to new naming style.
529
530
Guido van Rossum4a67a161996-08-26 02:40:59 +0000531What's new in 1.4beta1 (since 1.3)?
532-----------------------------------
Guido van Rossumccdfce31996-07-30 21:34:09 +0000533
534- Added sys.platform and sys.exec_platform for Bill Janssen.
535
Guido van Rossum4a67a161996-08-26 02:40:59 +0000536- Installation has been completely overhauled. "make install" now installs
537everything, not just the python binary. Installation uses the install-sh
538script (borrowed from X11) to install each file.
539
540- New functions in the posix module: mkfifo, plock, remove (== unlink),
541and ftruncate. More functions are also available under NT.
542
543- New function in the fcntl module: flock.
544
545- Shared library support for FreeBSD.
546
547- The --with-readline option can now be used without a DIRECTORY argument,
548for systems where libreadline.* is in one of the standard places. It is
549also possible for it to be a shared library.
550
551- The extension tkinter has been renamed to _tkinter, to avoid confusion
552with Tkinter.py oncase insensitive file systems. It now supports Tk 4.1 as
553well as 4.0.
554
555- Author's change of address from CWI in Amsterdam, The Netherlands, to
556CNRI in Reston, VA, USA.
557
558- The math.hypot() function is now always available (if it isn't found in
559the C math library, Python provides its own implementation).
560
561- The latex documentation is now compatible with latex2e, thanks to David
562Ascher.
563
564- The expression x**y is now equivalent to pow(x, y).
565
566- The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)].
567
568- Complex numbers are now supported. Imaginary constants are written with
569a 'j' or 'J' prefix, general complex numbers can be formed by adding a real
570part to an imaginary part, like 3+4j. Complex numbers are always stored in
571floating point form, so this is equivalent to 3.0+4.0j. It is also
572possible to create complex numbers with the new built-in function
573complex(re, [im]). For the footprint-conscious, complex number support can
574be disabled by defining the symbol WITHOUT_COMPLEX.
575
576- New built-in function list() is the long-awaited counterpart of tuple().
577
578- There's a new "cmath" module which provides the same functions as the
579"math" library but with complex arguments and results. (There are very
580good reasons why math.sqrt(-1) still raises an exception -- you have to use
581cmath.sqrt(-1) to get 1j for an answer.)
582
583- The Python.h header file (which is really the same as allobjects.h except
584it disables support for old style names) now includes several more files,
585so you have to have fewer #include statements in the average extension.
586
587- The NDEBUG symbol is no longer used. Code that used to be dependent on
588the presence of NDEBUG is now present on the absence of DEBUG. TRACE_REFS
589and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG,
590respectively. At long last, the source actually compiles and links without
591errors when this symbol is defined.
592
593- Several symbols that didn't follow the new naming scheme have been
594renamed (usually by adding to rename2.h) to use a Py or _Py prefix. There
595are no external symbols left without a Py or _Py prefix, not even those
596defined by sources that were incorporated from elsewhere (regexpr.c,
597md5c.c). (Macros are a different story...)
598
599- There are now typedefs for the structures defined in config.c and
600frozen.c.
601
602- New PYTHON_API_VERSION value and .pyc file magic number.
603
604- New module Bastion. (XXX)
605
606- Improved performance of StringIO module.
607
608- UserList module now supports + and * operators.
609
610- The binhex and binascii modules now actually work.
611
612- The cgi module has been almost totally rewritten and documented.
613It now supports file upload and a new data type to handle forms more
614flexibly.
615
616- The formatter module (for use with htmllib) has been overhauled (again).
617
618- The ftplib module now supports passive mode and has doc strings.
619
620- In (ideally) all places where binary files are read or written, the file
621is now correctly opened in binary mode ('rb' or 'wb') so the code will work
622on Mac or PC.
623
624- Dummy versions of os.path.expandvars() and expanduser() are now provided
625on non-Unix platforms.
626
627- Module urllib now has two new functions url2pathname and pathname2url
628which turn local filenames into "file:..." URLs using the same rules as
629Netscape (why be different). it also supports urlretrieve() with a
630pathname parameter, and honors the proxy environment variables (http_proxy
631etc.). The URL parsing has been improved somewhat, too.
632
633- Micro improvements to urlparse. Added urlparse.urldefrag() which
634removes a trailing ``#fragment'' if any.
635
636- The mailbox module now supports MH style message delimiters as well.
637
638- The mhlib module contains some new functionality: setcontext() to set the
639current folder and parsesequence() to parse a sequence as commonly passed
640to MH commands (e.g. 1-10 or last:5).
641
642- New module mimify for conversion to and from MIME format of email
643messages.
644
645- Module ni now automatically installs itself when first imported -- this
646is against the normal rule that modules should define classes and functions
647but not invoke them, but appears more useful in the case that two
648different, independent modules want to use ni's features.
649
650- Some small performance enhancements in module pickle.
651
652- Small interface change to the profile.run*() family of functions -- more
653sensible handling of return values.
654
655- The officially registered Mac creator for Python files is 'Pyth'. This
656replaces 'PYTH' which was used before but never registered.
657
658- Added regsub.capwords(). (XXX)
659
660- Added string.capwords(), string.capitalize() and string.translate().
661(XXX)
662
663- Fixed an interface bug in the rexec module: it was impossible to pass a
664hooks instance to the RExec class. rexec now also supports the dynamic
665loading of modules from shared libraries. Some other interfaces have been
666added too.
667
668- Module rfc822 now caches the headers in a dictionary for more efficient
669lookup.
670
671- The sgmllib module now understands a limited number of SGML "shorthands"
672like <A/.../ for <A>...</A>. (It's not clear that this was a good idea...)
673
674- The tempfile module actually tries a number of different places to find a
675usable temporary directory. (This was prompted by certain Linux
676installations that appear to be missing a /usr/tmp directory.) [A bug in
677the implementation that would ignore a pre-existing tmpdir global has been
678fixed in beta3.]
679
680- Much improved and enhanved FileDialog module for Tkinter.
681
682- Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as
683well as Tk 4.1).
684
685- New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and
686s.dup(). Sockets now work correctly on Windows. On Windows, the built-in
687extension is called _socket and a wrapper module win/socket.py provides
688"makefile()" and "dup()" functionality. On Windows, the select module
689works only with socket objects.
690
691- Bugs in bsddb module fixed (e.g. missing default argument values).
692
693- The curses extension now includes <ncurses.h> when available.
694
695- The gdbm module now supports opening databases in "fast" mode by
696specifying 'f' as the second character or the mode string.
697
698- new variables sys.prefix and sys.exec_prefix pass corresponding
699configuration options / Makefile variables to the Python programmer.
700
701- The ``new'' module now supports creating new user-defined classes as well
702as instances thereof.
703
704- The soundex module now sports get_soundex() to get the soundex value for an
705arbitrary string (formerly it would only do soundex-based string
706comparison) as well as doc strings.
707
708- New object type "cobject" to safely wrap void pointers for passing them
709between various extension modules.
710
711- More efficient computation of float**smallint.
712
713- The mysterious bug whereby "x.x" (two occurrences of the same
714one-character name) typed from the commandline would sometimes fail
715mysteriously.
716
717- The initialization of the readline function can now be invoked by a C
718extension through PyOS_ReadlineInit().
719
720- There's now an externally visible pointer PyImport_FrozenModules which
721can be changed by an embedding application.
722
723- The argument parsing functions now support a new format character 'D' to
724specify complex numbers.
725
726- Various memory leaks plugged and bugs fixed.
727
728- Improved support for posix threads (now that real implementations are
729beginning to apepar). Still no fully functioning semaphores.
730
731- Some various and sundry improvements and new entries in the Tools
732directory.