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