blob: fe7c566affac6787426d7e438cca325bdb06ad74 [file] [log] [blame]
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +00001=========================================
Guido van Rossum4a67a161996-08-26 02:40:59 +00002==> Release 1.4beta3 (August 26 1996) <==
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +00003=========================================
Guido van Rossum635649f1994-11-10 23:04:51 +00004
Guido van Rossum635649f1994-11-10 23:04:51 +00005
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +00006(XXX This is less readable that it should. I promis to restructure it
7for the final 1.4 release.)
8
Guido van Rossum4a67a161996-08-26 02:40:59 +00009
10What's new in 1.4beta3 (since beta2)?
11-------------------------------------
12
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +000013- In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
14handled correctly when using a proxy server.
15
16- In ntpath.normpath(): don't truncate to 8+3 format.
17
18- In mimetools.choose_boundary(): don't die when getuid() or getpid()
19aren't defined.
20
21- Module urllib: some optimizations to (un)quoting.
22
23- New module MimeWriter for writing MIME documents.
24
25- More changes to formatter module.
26
27- The freeze script works once again and is much more robust (using
28sys.prefix etc.). It also supports a -o option to specify an
29output directory.
30
Guido van Rossum4a67a161996-08-26 02:40:59 +000031- New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
32
33- The Doc/Makefile targets have been reorganized somewhat to remove the
34insistence on always generating PostScript.
35
36- The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
37
38- "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing
39name conflict on the Mac.
40
41- Linking a module compiled with a different setting for Py_TRACE_REFS now
42generates a linker error rather than a core dump.
43
44- The cgi module has a new convenience function print_exception(), which
45formats a python exception using HTML. It also fixes a bug in the
46compatibility code and adds a dubious feature which makes it possible to
47have two query strings, one in the URL and one in the POST data.
48
49- A subtle change in the unpickling of class instances makes it possible
50to unpickle in restricted execution mode, where the __dict__ attribute is
51not available (but setattr() is).
52
53- Documentation for os.path.splitext() (== posixpath.splitext()) has been
54cleared up. It splits at the *last* dot.
55
56- posixfile locking is now also correctly supported on AIX.
57
58- The tempfile module once again honors an initial setting of tmpdir. It
59now works on Windows, too.
60
61- The traceback module has some new functions to extract, format and print
62the active stack.
63
64- Some translation functions in the urllib module have been made a little
65less sluggish.
66
67- The addtag_* methods for Canvas widgets in Tkinter as well as in the
68separate Canvas class have been fixed so they actually do something
69meaningful.
70
71- A tiny _test() function has been added to Tkinter.py.
72
73- A generic Makefile for dynamically loaded modules is provided in the Misc
74subdirectory (Misc/gMakefile).
75
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +000076- A new version of python-mode.el for Emacs is provided. See
77http://www.python.org/ftp/emacs/pmdetails.html for details. The
78separate file pyimenu.el is no longer needed, imenu support is folded
79into python-mode.el.
Guido van Rossum4a67a161996-08-26 02:40:59 +000080
81- The configure script can finally correctly find the readline library in a
82non-standard location. The LDFLAGS variable is passed on the the Makefiles
83from the configure script.
84
85- Shared libraries are now installed as programs (i.e. with executable
86permission). This is required on HP-UX and won't hurt on other systems.
87
88- The objc.c module is no longer part of the distribution. Objective-C
89support may become available as contributed software on the ftp site.
90
91- The sybase module is no longer part of the distribution. May John
92Redford rot in hell. A much improved sybase module is available as
93contributed software from the ftp site.
94
95- _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and
96Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file
97now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0.
98
99- In Setup, you can now write "*shared*" instead of "*noconfig*", and you
100can use *.so and *.sl as shared libraries.
101
102- Some more fidgeting for AIX shared libraries.
103
104- The mpz module is now compatible with GMP 2.x. (Not tested by me.)
Guido van Rossum5f9aa9e1996-08-26 18:22:44 +0000105(Note -- a complete replacement by Niels Mo"ller, called gpmodule, is
106available from the contrib directory on the ftp site.)
Guido van Rossum4a67a161996-08-26 02:40:59 +0000107
108- A warning is written to sys.stderr when a __del__ method raises an
109exception (formerly, such exceptions were completely ignored).
110
111- The configure script now defines HAVE_OLD_CPP if the C preprocessor is
112incapable of ANSI style token concatenation and stringification.
113
114- All source files (except a few platform specific modules) are once again
115compatible with K&R C compilers as well as ANSI compilers. In particular,
116ANSI-isms have been removed or made conditional in complexobject.c,
117getargs.c and operator.c.
118
119- The abstract object API has three new functions, PyObject_DelItem,
120PySequence_DelItem, and PySequence_DelSlice.
121
122- The operator module has new functions delitem and delslice, and the
123functions "or" and "and" are renamed to "or_" and "and_" (since "or" and
124"and" are reserved words). ("__or__" and "__and__" are unchanged.)
125
126- The environment module is no longer supported; putenv() is now a function
127in posixmodule (also under NT).
128
129- Error in filter(<function>, "") has been fixed.
130
131- Unrecognized keyword arguments raise TypeError, not KeyError.
132
133- Better portability, fewer bugs and memory leaks, fewer compiler warnings,
134some more documentation.
135
136- Bug in float power boundary case (0.0 to the negative integer power)
137fixed.
138
139- The test of negative number to the float power has been moved from the
140built-in pow() functin to floatobject.c (so complex numbers can yield the
141correct result).
142
143- The bug introduced in beta2 where shared libraries loaded (using
144dlopen()) from the current directory would fail, has been fixed.
145
146- Modules imported as shared libraries now also have a __file__ attribute,
147giving the filename from which they were loaded. The only modules without
148a __file__ attribute now are built-in modules.
149
150- On the Mac, dynamically loaded modules can end in either ".slb" or
151".<platform>.slb" where <platform> is either "CFM68K" or "ppc". The ".slb"
152extension should only be used for "fat" binaries.
153
154- C API addition: marshal.c now supports
155PyMarshal_WriteObjectToString(object).
156
157- C API addition: getargs.c now supports
158PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
159to parse keyword arguments.
160
161- The PC versioning scheme (sys.winver) has changed once again. the
162version number is now "<digit>.<digit>.<digit>.<apiversion>", where the
163first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4,
164"1.4.1" for Python 1.4.1 -- the beta level is not included) and
165<apiversion> is the four-digit PYTHON_API_VERSION (currently 1005).
166
167- h2py.py accepts whitespace before the # in CPP directives
168
169- On Solaris 2.5, it should now be possible to use either Posix threads or
170Solaris threads (XXX: how do you select which is used???). (Note: the
171Python pthreads interface doesn't fully support semaphores yet -- anyone
172care to fix this?)
173
174- Thread support should now work on AIX, using either DCE threads or
175pthreads.
176
177- New file Demo/sockets/unicast.py
178
179- Working Mac port, with CFM68K support, with Tk 4.1 support (though not
180both) (XXX)
181
182- New project setup for PC port, now compatible with PythonWin, with
183_tkinter and NumPy support (XXX)
184
185- New module site.py (XXX)
186
187- New module xdrlib.py and optional support module _xdrmodule.c (XXX)
188
189- parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
190
191- Name mangling to support class-private variables: __spam is translated to
192_ClassName__spam (XXX)
193
194- regen script fixed (XXX)
195
196- new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
197
198- testall now also tests math module (XXX)
199
200- string.atoi c.s. now raise an exception for an empty input string.
201
202- At last, it is no longer necessary to define HAVE_CONFIG_H in order to
203have config.h included at various places.
204
205- Unrecognized keyword arguments now raise TypeError rather than KeyError.
206
207- The makesetup script recognizes files with extension .so or .sl as
208(shared) libraries.
209
210- 'access' is no longer a reserved word, and all code related to its
211implementation is gone (or at least #ifdef'ed out). This should make
212Python a little speedier too!
213
214- Performance enhancements suggested by Sjoerd Mullender. This includes
215the introduction of two new optional function pointers in type object,
216getattro and setattro, which are like getattr and setattr but take a
217string object instead of a C string pointer.
218
219- New operations in string module: lstrip(s) and rstrip(s) strip whitespace
220only on the left or only on the right, A new optional third argument to
221split() specifies the maximum number of separators honored (so
222splitfields(s, sep, n) returns a list of at most n+1 elements). (Since
2231.3, splitfields(s, None) is totally equivalent to split(s).)
224string.capwords() has an optional second argument specifying the
225separator (which is passed to split()).
226
227- regsub.split() has the same addition as string.split(). regsub.splitx(s,
228sep, maxsep) implements the functionality that was regsub.split(s, 1) in
2291.4beta2 (return a list containing the delimiters as well as the words).
230
231- Final touch for AIX loading, rewritten Misc/AIX-NOTES.
232
233- In Modules/_tkinter.c, when using Tk 4.1 or higher, use className
234argument to _tkinter.create() to set Tcl's argv0 variable, so X
235resources use the right resource class again.
236
237- Add #undef fabs to Modules/mathmodule.c for macintosh.
238
239- Added some macro renames for AIX in Modules/operator.c.
240
241- Removed spurious 'E' from Doc/liberrno.tex.
242
243- Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
244Misc/gMakefile and new version of Misc/python-mode.el.
245
246- Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
247NameError).
248
249- Added missing "from types import *" to Lib/tkinter/Canvas.py.
250
251- Added hint about using default args for __init__ to pickle docs.
252
253- Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
254PySequence_Length.
255
256- Some improvements to Doc/texi2html.py.
257
258- In Python/import.c, Cast unsigned char * in struct _frozen to char *
259in calls to rds_object().
260
261- In doc/ref4.tex, added note about scope of lambda bodies.
262
263What's new in 1.4beta2 (since beta1)?
264-------------------------------------
Guido van Rossum635649f1994-11-10 23:04:51 +0000265
Guido van Rossumccdfce31996-07-30 21:34:09 +0000266- Portability bug in the md5.h header solved.
Guido van Rossum0082c1a1995-04-10 11:52:44 +0000267
Guido van Rossumccdfce31996-07-30 21:34:09 +0000268- The PC build procedure now really works, and sets sys.platform to a
269meaningful value (a few things were botched in beta 1). Lib/dos_8x3
270is now a standard part of the distribution (alas).
Guido van Rossum635649f1994-11-10 23:04:51 +0000271
Guido van Rossum4a67a161996-08-26 02:40:59 +0000272- More improvements to the installation procedure. Typing "make install"
273now inserts the version number in the pathnames of almost everything
274installed, and creates the machine dependent modules (FCNTL.py etc.) if not
275supplied by the distribution. (XXX There's still a problem with the latter
276because the "regen" script requires that Python is installed. Some manual
277intervention may still be required.) (This has been fixed in 1.4beta3.)
Guido van Rossum061f1821994-10-06 16:03:45 +0000278
Guido van Rossum4a67a161996-08-26 02:40:59 +0000279- New modules: errno, operator (XXX).
Guido van Rossum061f1821994-10-06 16:03:45 +0000280
Guido van Rossumccdfce31996-07-30 21:34:09 +0000281- Changes for use with Numerical Python: builtin function slice() and
282Ellipses object, and corresponding syntax:
Guido van Rossum061f1821994-10-06 16:03:45 +0000283
Guido van Rossumccdfce31996-07-30 21:34:09 +0000284 x[lo:hi:stride] == x[slice(lo, hi, stride)]
285 x[a, ..., z] == x[(a, Ellipses, z)]
286
287- New documentation for errno and cgi mdoules.
288
289- The directory containing the script passed to the interpreter is
290inserted in from of sys.path; "." is no longer a default path
291component.
292
293- Optional third string argument to string.translate() specifies
294characters to delete. New function string.maketrans() creates a
295translation table for translate() or for regex.compile().
296
297- Module posix (and hence module os under Unix) now supports putenv().
298Moreover, module os is enhanced so that if putenv() is supported,
299assignments to os.environ entries make the appropriate putenv() call.
300(XXX the putenv() implementation can leak a small amount of memory per
301call.)
302
303- pdb.py can now be invoked from the command line to debug a script:
304python pdb.py <script> <arg> ...
305
306- Much improved parseaddr() in rfc822.
307
308- In cgi.py, you can now pass an alternative value for environ to
309nearly all functions.
310
311- You can now assign to instance variables whose name begins and ends
312with '__'.
313
314- New version of Fred Drake's parser module and associates (token,
315symbol, AST).
316
Guido van Rossum4a67a161996-08-26 02:40:59 +0000317- New PYTHON_API_VERSION value and .pyc file magic number (again!).
Guido van Rossumccdfce31996-07-30 21:34:09 +0000318
319- The "complex" internal structure type is now called "Py_complex" to
320avoid name conflicts.
321
322- Numerous small bugs fixed.
323
324- Slight pickle speedups.
325
326- Some slight speedups suggested by Sjoerd (more coming in 1.4 final).
327
328- NeXT portability mods by Bill Bumgarner integrated.
329
330- Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been
331converted to new naming style.
332
333
Guido van Rossum4a67a161996-08-26 02:40:59 +0000334What's new in 1.4beta1 (since 1.3)?
335-----------------------------------
Guido van Rossumccdfce31996-07-30 21:34:09 +0000336
337- Added sys.platform and sys.exec_platform for Bill Janssen.
338
Guido van Rossum4a67a161996-08-26 02:40:59 +0000339- Installation has been completely overhauled. "make install" now installs
340everything, not just the python binary. Installation uses the install-sh
341script (borrowed from X11) to install each file.
342
343- New functions in the posix module: mkfifo, plock, remove (== unlink),
344and ftruncate. More functions are also available under NT.
345
346- New function in the fcntl module: flock.
347
348- Shared library support for FreeBSD.
349
350- The --with-readline option can now be used without a DIRECTORY argument,
351for systems where libreadline.* is in one of the standard places. It is
352also possible for it to be a shared library.
353
354- The extension tkinter has been renamed to _tkinter, to avoid confusion
355with Tkinter.py oncase insensitive file systems. It now supports Tk 4.1 as
356well as 4.0.
357
358- Author's change of address from CWI in Amsterdam, The Netherlands, to
359CNRI in Reston, VA, USA.
360
361- The math.hypot() function is now always available (if it isn't found in
362the C math library, Python provides its own implementation).
363
364- The latex documentation is now compatible with latex2e, thanks to David
365Ascher.
366
367- The expression x**y is now equivalent to pow(x, y).
368
369- The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)].
370
371- Complex numbers are now supported. Imaginary constants are written with
372a 'j' or 'J' prefix, general complex numbers can be formed by adding a real
373part to an imaginary part, like 3+4j. Complex numbers are always stored in
374floating point form, so this is equivalent to 3.0+4.0j. It is also
375possible to create complex numbers with the new built-in function
376complex(re, [im]). For the footprint-conscious, complex number support can
377be disabled by defining the symbol WITHOUT_COMPLEX.
378
379- New built-in function list() is the long-awaited counterpart of tuple().
380
381- There's a new "cmath" module which provides the same functions as the
382"math" library but with complex arguments and results. (There are very
383good reasons why math.sqrt(-1) still raises an exception -- you have to use
384cmath.sqrt(-1) to get 1j for an answer.)
385
386- The Python.h header file (which is really the same as allobjects.h except
387it disables support for old style names) now includes several more files,
388so you have to have fewer #include statements in the average extension.
389
390- The NDEBUG symbol is no longer used. Code that used to be dependent on
391the presence of NDEBUG is now present on the absence of DEBUG. TRACE_REFS
392and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG,
393respectively. At long last, the source actually compiles and links without
394errors when this symbol is defined.
395
396- Several symbols that didn't follow the new naming scheme have been
397renamed (usually by adding to rename2.h) to use a Py or _Py prefix. There
398are no external symbols left without a Py or _Py prefix, not even those
399defined by sources that were incorporated from elsewhere (regexpr.c,
400md5c.c). (Macros are a different story...)
401
402- There are now typedefs for the structures defined in config.c and
403frozen.c.
404
405- New PYTHON_API_VERSION value and .pyc file magic number.
406
407- New module Bastion. (XXX)
408
409- Improved performance of StringIO module.
410
411- UserList module now supports + and * operators.
412
413- The binhex and binascii modules now actually work.
414
415- The cgi module has been almost totally rewritten and documented.
416It now supports file upload and a new data type to handle forms more
417flexibly.
418
419- The formatter module (for use with htmllib) has been overhauled (again).
420
421- The ftplib module now supports passive mode and has doc strings.
422
423- In (ideally) all places where binary files are read or written, the file
424is now correctly opened in binary mode ('rb' or 'wb') so the code will work
425on Mac or PC.
426
427- Dummy versions of os.path.expandvars() and expanduser() are now provided
428on non-Unix platforms.
429
430- Module urllib now has two new functions url2pathname and pathname2url
431which turn local filenames into "file:..." URLs using the same rules as
432Netscape (why be different). it also supports urlretrieve() with a
433pathname parameter, and honors the proxy environment variables (http_proxy
434etc.). The URL parsing has been improved somewhat, too.
435
436- Micro improvements to urlparse. Added urlparse.urldefrag() which
437removes a trailing ``#fragment'' if any.
438
439- The mailbox module now supports MH style message delimiters as well.
440
441- The mhlib module contains some new functionality: setcontext() to set the
442current folder and parsesequence() to parse a sequence as commonly passed
443to MH commands (e.g. 1-10 or last:5).
444
445- New module mimify for conversion to and from MIME format of email
446messages.
447
448- Module ni now automatically installs itself when first imported -- this
449is against the normal rule that modules should define classes and functions
450but not invoke them, but appears more useful in the case that two
451different, independent modules want to use ni's features.
452
453- Some small performance enhancements in module pickle.
454
455- Small interface change to the profile.run*() family of functions -- more
456sensible handling of return values.
457
458- The officially registered Mac creator for Python files is 'Pyth'. This
459replaces 'PYTH' which was used before but never registered.
460
461- Added regsub.capwords(). (XXX)
462
463- Added string.capwords(), string.capitalize() and string.translate().
464(XXX)
465
466- Fixed an interface bug in the rexec module: it was impossible to pass a
467hooks instance to the RExec class. rexec now also supports the dynamic
468loading of modules from shared libraries. Some other interfaces have been
469added too.
470
471- Module rfc822 now caches the headers in a dictionary for more efficient
472lookup.
473
474- The sgmllib module now understands a limited number of SGML "shorthands"
475like <A/.../ for <A>...</A>. (It's not clear that this was a good idea...)
476
477- The tempfile module actually tries a number of different places to find a
478usable temporary directory. (This was prompted by certain Linux
479installations that appear to be missing a /usr/tmp directory.) [A bug in
480the implementation that would ignore a pre-existing tmpdir global has been
481fixed in beta3.]
482
483- Much improved and enhanved FileDialog module for Tkinter.
484
485- Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as
486well as Tk 4.1).
487
488- New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and
489s.dup(). Sockets now work correctly on Windows. On Windows, the built-in
490extension is called _socket and a wrapper module win/socket.py provides
491"makefile()" and "dup()" functionality. On Windows, the select module
492works only with socket objects.
493
494- Bugs in bsddb module fixed (e.g. missing default argument values).
495
496- The curses extension now includes <ncurses.h> when available.
497
498- The gdbm module now supports opening databases in "fast" mode by
499specifying 'f' as the second character or the mode string.
500
501- new variables sys.prefix and sys.exec_prefix pass corresponding
502configuration options / Makefile variables to the Python programmer.
503
504- The ``new'' module now supports creating new user-defined classes as well
505as instances thereof.
506
507- The soundex module now sports get_soundex() to get the soundex value for an
508arbitrary string (formerly it would only do soundex-based string
509comparison) as well as doc strings.
510
511- New object type "cobject" to safely wrap void pointers for passing them
512between various extension modules.
513
514- More efficient computation of float**smallint.
515
516- The mysterious bug whereby "x.x" (two occurrences of the same
517one-character name) typed from the commandline would sometimes fail
518mysteriously.
519
520- The initialization of the readline function can now be invoked by a C
521extension through PyOS_ReadlineInit().
522
523- There's now an externally visible pointer PyImport_FrozenModules which
524can be changed by an embedding application.
525
526- The argument parsing functions now support a new format character 'D' to
527specify complex numbers.
528
529- Various memory leaks plugged and bugs fixed.
530
531- Improved support for posix threads (now that real implementations are
532beginning to apepar). Still no fully functioning semaphores.
533
534- Some various and sundry improvements and new entries in the Tools
535directory.