blob: 40e22ebb233e67eb57da2468e0315a465e0d0588 [file] [log] [blame]
Tim Petersa3a3a032000-11-30 05:22:44 +00001What's New in Python 2.1 alpha 1?
2=================================
3
4Core language, builtins, and interpreter
5
Barry Warsaw573b5412001-01-15 20:43:18 +00006- Functions and methods now support getting and setting arbitrarily
7 named attributes (PEP 232). Functions have a new __dict__
8 (a.k.a. func_dict) which hold the function attributes. Methods get
9 and set attributes on their underlying im_func. It is a TypeError
10 to set an attribute on a bound method.
11
Guido van Rossum051e3352001-01-15 19:11:10 +000012- The xrange() object implementation has been improved so that
13 xrange(sys.maxint) can be used on 64-bit platforms. There's still a
14 limitation that in this case len(xrange(sys.maxint)) can't be
15 calculated, but the common idiom "for i in xrange(sys.maxint)" will
16 work fine as long as the index i doesn't actually reach 2**31.
17 (Python uses regular ints for sequence and string indices; fixing
18 that is much more work.)
19
Guido van Rossum1cc8f832001-01-12 16:25:08 +000020- Two changes to from...import:
21
22 1) "from M import X" now works even if M is not a real module; it's
23 basically a getattr() operation with AttributeError exceptions
24 changed into ImportError.
25
26 2) "from M import *" now looks for M.__all__ to decide which names to
27 import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
28 filters out names starting with '_' as before. Whether or not
29 __all__ exists, there's no restriction on the type of M.
30
Guido van Rossumf61f1662001-01-10 20:13:55 +000031- File objects have a new method, xreadlines(). This is the fastest
32 way to iterate over all lines in a file:
33
34 for line in file.xreadlines():
35 ...do something to line...
36
37 See the xreadlines module (mentioned below) for how to do this for
38 other file-like objects.
39
40- Even if you don't use file.xreadlines(), you may expect a speedup on
41 line-by-line input. The file.readline() method has been optimized
Tim Petersf29b64d2001-01-15 06:33:19 +000042 quite a bit in platform-specific ways: on systems (like Linux) that
43 support flockfile(), getc_unlocked(), and funlockfile(), those are
44 used by default. On systems (like Windows) without getc_unlocked(),
45 a complicated (but still thread-safe) method using fgets() is used by
46 default.
47
48 You can force use of the fgets() method by #define'ing
49 USE_FGETS_IN_GETLINE at build time (it may be faster than
50 getc_unlocked()).
51
52 You can force fgets() not to be used by #define'ing
53 DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test
54 test_bufio.py fails -- and let us know if it does!).
55
56- In addition, the fileinput module, while still slower than the other
57 methods on most platforms, has been sped up too, by using
58 file.readlines(sizehint).
Guido van Rossumf61f1662001-01-10 20:13:55 +000059
60- Support for run-time warnings has been added, including a new
61 command line option (-W) to specify the disposition of warnings.
62 See the description of the warnings module below.
63
64- Extensive changes have been made to the coercion code. This mostly
65 affects extension modules (which can now implement mixed-type
66 numerical operators without having to use coercion), but
67 occasionally, in boundary cases the coercion semantics have changed
68 subtly. Since this was a terrible gray area of the language, this
Guido van Rossumae72d872001-01-11 15:00:14 +000069 is considered an improvement. Also note that __rcmp__ is no longer
Guido van Rossumf61f1662001-01-10 20:13:55 +000070 supported -- instead of calling __rcmp__, __cmp__ is called with
71 reversed arguments.
72
Martin v. Löwisbe4c0f52001-01-04 20:30:56 +000073- The interpreter accepts now bytecode files on the command line even
74 if they do not have a .pyc or .pyo extension. On Linux, after executing
75
76 echo ':pyc:M::\x87\xc6\x0d\x0a::/usr/local/bin/python:' > /proc/sys/fs/binfmt_misc/register
77
78 any byte code file can be used as an executable (i.e. as an argument
79 to execve(2)).
80
Tim Peters9940b802000-12-01 07:59:35 +000081- %[xXo] formats of negative Python longs now produce a sign
Tim Petersa3a3a032000-11-30 05:22:44 +000082 character. In 1.6 and earlier, they never produced a sign,
83 and raised an error if the value of the long was too large
84 to fit in a Python int. In 2.0, they produced a sign if and
85 only if too large to fit in an int. This was inconsistent
86 across platforms (because the size of an int varies across
87 platforms), and inconsistent with hex() and oct(). Example:
88
89 >>> "%x" % -0x42L
Tim Peters9940b802000-12-01 07:59:35 +000090 '-42' # in 2.1
Tim Petersa3a3a032000-11-30 05:22:44 +000091 'ffffffbe' # in 2.0 and before, on 32-bit machines
92 >>> hex(-0x42L)
93 '-0x42L' # in all versions of Python
94
Tim Peters9940b802000-12-01 07:59:35 +000095 The behavior of %d formats for negative Python longs remains
96 the same as in 2.0 (although in 1.6 and before, they raised
97 an error if the long didn't fit in a Python int).
98
99 %u formats don't make sense for Python longs, but are allowed
100 and treated the same as %d in 2.1. In 2.0, a negative long
101 formatted via %u produced a sign if and only if too large to
102 fit in an int. In 1.6 and earlier, a negative long formatted
103 via %u raised an error if it was too big to fit in an int.
104
Guido van Rossum3661d392000-12-12 22:10:31 +0000105- Dictionary objects have an odd new method, popitem(). This removes
106 an arbitrary item from the dictionary and returns it (in the form of
107 a (key, value) pair). This can be useful for algorithms that use a
108 dictionary as a bag of "to do" items and repeatedly need to pick one
109 item. Such algorithms normally end up running in quadratic time;
110 using popitem() they can usually be made to run in linear time.
111
Tim Peters36cdad12000-12-29 02:06:45 +0000112Standard library
113
Guido van Rossumda91f222001-01-15 16:36:08 +0000114- The ftplib module now defaults to passive mode, which is deemed a
115 more useful default given that clients are often inside firewalls
116 these days. Note that this could break if ftplib is used to connect
117 to a *server* that is inside a firewall, from outside; this is
118 expected to be a very rare situation. To fix that, you can call
119 ftp.set_pasv(0).
120
Martin v. Löwis10a27872001-01-13 09:54:41 +0000121- The module site now treats .pth files not only for path configuration,
122 but also supports extensions to the initialization code: Lines starting
123 with import are executed.
124
Guido van Rossumf61f1662001-01-10 20:13:55 +0000125- There's a new module, warnings, which implements a mechanism for
126 issuing and filtering warnings. There are some new built-in
127 exceptions that serve as warning categories, and a new command line
128 option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
129 turns warnings into errors). warnings.warn(message[, category])
130 issues a warning message; this can also be called from C as
131 PyErr_Warn(category, message).
132
133- A new module xreadlines was added. This exports a single factory
134 function, xreadlines(). The intention is that this code is the
135 absolutely fastest way to iterate over all lines in an open
136 file(-like) object:
137
138 import xreadlines
139 for line in xreadlines.xreadlines(file):
140 ...do something to line...
141
142 This is equivalent to the previous the speed record holder using
143 file.readlines(sizehint). Note that if file is a real file object
144 (as opposed to a file-like object), this is equivalent:
145
146 for line in file.xreadlines():
147 ...do something to line...
148
Tim Peters36cdad12000-12-29 02:06:45 +0000149- The bisect module has new functions bisect_left, insort_left,
150 bisect_right and insort_right. The old names bisect and insort
151 are now aliases for bisect_right and insort_right. XXX_right
152 and XXX_left methods differ in what happens when the new element
153 compares equal to one or more elements already in the list: the
154 XXX_left methods insert to the left, the XXX_right methods to the
Tim Peters742bb6f2001-01-05 08:05:32 +0000155 right. Code that doesn't care where equal elements end up should
156 continue to use the old, short names ("bisect" and "insort").
Tim Peters36cdad12000-12-29 02:06:45 +0000157
Andrew M. Kuchlingf6f3a892001-01-13 14:53:34 +0000158- The new curses.panel module wraps the panel library that forms part
159 of SYSV curses and ncurses. Contributed by Thomas Gellekum.
160
Guido van Rossumf61f1662001-01-10 20:13:55 +0000161- The SocketServer module now sets the allow_reuse_address flag by
162 default in the TCPServer class.
163
164- A new function, sys._getframe(), returns the stack frame pointer of
165 the caller. This is intended only as a building block for
166 higher-level mechanisms such as string interpolation.
167
168Build issues
169
170- On Linux (and possibly other Unix platforms), the readline and
171 _curses modules are automatically configured through
172 Modules/Setup.config. These, and the bsddb module (which was
173 already dynamically configured) are now built as shared libraries by
174 default.
175
176- Python now always uses its own (renamed) implementation of getopt()
177 -- there's too much variation among C library getopt()
178 implementations.
179
180- C++ compilers are better supported; the CXX macro is always set to a
181 C++ compiler if one is found.
Tim Peters36cdad12000-12-29 02:06:45 +0000182
Tim Petersd92dfe02000-12-12 01:18:41 +0000183Windows changes
184
185- select module: By default under Windows, a select() call
186 can specify no more than 64 sockets. Python now boosts
187 this Microsoft default to 512. If you need even more than
188 that, see the MS docs (you'll need to #define FD_SETSIZE
189 and recompile Python from source).
190
Guido van Rossumf61f1662001-01-10 20:13:55 +0000191- Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3
192 subdirectory is no more!
193
Tim Petersa3a3a032000-11-30 05:22:44 +0000194
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000195What's New in Python 2.0?
Fred Drake1a640502000-10-16 20:27:25 +0000196=========================
Guido van Rossum61000331997-08-15 04:39:58 +0000197
Guido van Rossum8ed602b2000-09-01 22:34:33 +0000198Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000199changes are in the file HISTORY. If you are making the jump directly
200from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
201HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +0000202
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000203Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
204the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
205http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +0000206
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000207--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +0000208
209======================================================================
210
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000211What's new in 2.0 (since release candidate 1)?
212==============================================
213
214Standard library
215
216- The copy_reg module was modified to clarify its intended use: to
217 register pickle support for extension types, not for classes.
218 pickle() will raise a TypeError if it is passed a class.
219
220- Fixed a bug in gettext's "normalize and expand" code that prevented
221 it from finding an existing .mo file.
222
223- Restored support for HTTP/0.9 servers in httplib.
224
Tim Peters989b7b92000-10-16 20:24:53 +0000225- The math module was changed to stop raising OverflowError in case of
226 underflow, and return 0 instead in underflow cases. Whether Python
227 used to raise OverflowError in case of underflow was platform-
228 dependent (it did when the platform math library set errno to ERANGE
229 on underflow).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000230
231- Fixed a bug in StringIO that occurred when the file position was not
232 at the end of the file and write() was called with enough data to
233 extend past the end of the file.
234
235- Fixed a bug that caused Tkinter error messages to get lost on
236 Windows. The bug was fixed by replacing direct use of
237 interp->result with Tcl_GetStringResult(interp).
238
239- Fixed bug in urllib2 that caused it to fail when it received an HTTP
240 redirect response.
241
242- Several changes were made to distutils: Some debugging code was
243 removed from util. Fixed the installer used when an external zip
244 program (like WinZip) is not found; the source code for this
245 installer is in Misc/distutils. check_lib() was modified to behave
246 more like AC_CHECK_LIB by add other_libraries() as a parameter. The
247 test for whether installed modules are on sys.path was changed to
248 use both normcase() and normpath().
249
Jeremy Hyltond867a2c2000-10-16 20:41:38 +0000250- Several minor bugs were fixed in the xml package (the minidom,
251 pulldom, expatreader, and saxutils modules).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000252
253- The regression test driver (regrtest.py) behavior when invoked with
254 -l changed: It now reports a count of objects that are recognized as
255 garbage but not freed by the garbage collector.
256
Tim Peters989b7b92000-10-16 20:24:53 +0000257- The regression test for the math module was changed to test
258 exceptional behavior when the test is run in verbose mode. Python
259 cannot yet guarantee consistent exception behavior across platforms,
260 so the exception part of test_math is run only in verbose mode, and
261 may fail on your platform.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000262
263Internals
264
265- PyOS_CheckStack() has been disabled on Win64, where it caused
266 test_sre to fail.
267
268Build issues
269
270- Changed compiler flags, so that gcc is always invoked with -Wall and
271 -Wstrict-prototypes. Users compiling Python with GCC should see
272 exactly one warning, except if they have passed configure the
Tim Peters989b7b92000-10-16 20:24:53 +0000273 --with-pydebug flag. The expected warning is for getopt() in
Tim Petersadfb94f2000-10-16 20:51:33 +0000274 Modules/main.c. This warning will be fixed for Python 2.1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000275
Tim Petersa3a3a032000-11-30 05:22:44 +0000276- Fixed configure to add -threads argument during linking on OSF1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000277
278Tools and other miscellany
279
280- The compiler in Tools/compiler was updated to support the new
281 language features introduced in 2.0: extended print statement, list
282 comprehensions, and augmented assignments. The new compiler should
283 also be backwards compatible with Python 1.5.2; the compiler will
284 always generate code for the version of the interpreter it runs
Tim Petersa3a3a032000-11-30 05:22:44 +0000285 under.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000286
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000287What's new in 2.0 release candidate 1 (since beta 2)?
288=====================================================
289
Jeremy Hylton6040aaa2000-10-09 21:27:22 +0000290What is release candidate 1?
291
292We believe that release candidate 1 will fix all known bugs that we
293intend to fix for the 2.0 final release. This release should be a bit
294more stable than the previous betas. We would like to see even more
295widespread testing before the final release, so we are producing this
296release candidate. The final release will be exactly the same unless
297any show-stopping (or brown bag) bugs are found by testers of the
298release candidate.
299
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000300All the changes since the last beta release are bug fixes or changes
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000301to support building Python for specific platforms.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000302
303Core language, builtins, and interpreter
304
305- A bug that caused crashes when __coerce__ was used with augmented
306 assignment, e.g. +=, was fixed.
307
308- Raise ZeroDivisionError when raising zero to a negative number,
309 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
310 power operator and the result of math.pow(0.0, -2.0) will vary by
311 platform. On Linux, it raises a ValueError.
312
313- A bug in Unicode string interpolation was fixed that occasionally
314 caused errors with formats including "%%". For example, the
315 following expression "%% %s" % u"abc" no longer raises a TypeError.
316
317- Compilation of deeply nested expressions raises MemoryError instead
318 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
319
320- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
321 rendering them useless. They are now written in binary mode again.
322
323Standard library
324
325- Keyword arguments are now accepted for most pattern and match object
326 methods in SRE, the standard regular expression engine.
327
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000328- In SRE, fixed error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +0000329 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000330
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000331- Several bugs in the Unicode handling and error handling in _tkinter
332 were fixed.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000333
334- Fix memory management errors in Merge() and Tkapp_Call() routines.
335
336- Several changes were made to cStringIO to make it compatible with
337 the file-like object interface and with StringIO. If operations are
338 performed on a closed object, an exception is raised. The truncate
339 method now accepts a position argument and readline accepts a size
Tim Petersa3a3a032000-11-30 05:22:44 +0000340 argument.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000341
342- There were many changes made to the linuxaudiodev module and its
343 test suite; as a result, a short, unexpected audio sample should now
Tim Petersa3a3a032000-11-30 05:22:44 +0000344 play when the regression test is run.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000345
346 Note that this module is named poorly, because it should work
347 correctly on any platform that supports the Open Sound System
Tim Petersa3a3a032000-11-30 05:22:44 +0000348 (OSS).
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000349
350 The module now raises exceptions when errors occur instead of
351 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
352 audio) and defines a getptr() method that calls the
353 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
354
355- The library_version attribute, introduced in an earlier beta, was
356 removed because it can not be supported with early versions of the C
357 readline library, which provides no way to determine the version at
358 compile-time.
359
360- The binascii module is now enabled on Win64.
361
Tim Peters46446d62000-10-09 21:19:31 +0000362- tokenize.py no longer suffers "recursion depth" errors when parsing
363 programs with very long string literals.
364
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000365Internals
366
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000367- Fixed several buffer overflow vulnerabilities in calculate_path(),
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000368 which is called when the interpreter starts up to determine where
369 the standard library is installed. These vulnerabilities affect all
370 previous versions of Python and can be exploited by setting very
371 long values for PYTHONHOME or argv[0]. The risk is greatest for a
372 setuid Python script, although use of the wrapper in
373 Misc/setuid-prog.c will eliminate the vulnerability.
374
375- Fixed garbage collection bugs in instance creation that were
376 triggered when errors occurred during initialization. The solution,
377 applied in cPickle and in PyInstance_New(), is to call
378 PyObject_GC_Init() after the initialization of the object's
379 container attributes is complete.
380
381- pyexpat adds definitions of PyModule_AddStringConstant and
382 PyModule_AddObject if the Python version is less than 2.0, which
383 provides compatibility with PyXML on Python 1.5.2.
384
385- If the platform has a bogus definition for LONG_BIT (the number of
386 bits in a long), an error will be reported at compile time.
387
388- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
389 collection crashes and possibly other, unreported crashes.
390
391- Fixed a memory leak in _PyUnicode_Fini().
392
393Build issues
394
395- configure now accepts a --with-suffix option that specifies the
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000396 executable suffix. This is useful for builds on Cygwin and Mac OS
Tim Petersa3a3a032000-11-30 05:22:44 +0000397 X, for example.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000398
399- The mmap.PAGESIZE constant is now initialized using sysconf when
400 possible, which eliminates a dependency on -lucb for Reliant UNIX.
401
402- The md5 file should now compile on all platforms.
403
404- The select module now compiles on platforms that do not define
405 POLLRDNORM and related constants.
406
407- Darwin (Mac OS X): Initial support for static builds on this
Tim Petersa3a3a032000-11-30 05:22:44 +0000408 platform.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000409
Jeremy Hylton10921202000-10-09 18:34:12 +0000410- BeOS: A number of changes were made to the build and installation
411 process. ar-fake now operates on a directory of object files.
412 dl_export.h is gone, and its macros now appear on the mwcc command
413 line during build on PPC BeOS.
414
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000415- Platform directory in lib/python2.0 is "plat-beos5" (or
Jeremy Hylton10921202000-10-09 18:34:12 +0000416 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000417
418- Cygwin: Support for shared libraries, Tkinter, and sockets.
419
420- SunOS 4.1.4_JL: Fix test for directory existence in configure.
421
422Tools and other miscellany
423
424- Removed debugging prints from main used with freeze.
425
Tim Peters46446d62000-10-09 21:19:31 +0000426- IDLE auto-indent no longer crashes when it encounters Unicode
427 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000428
429What's new in 2.0 beta 2 (since beta 1)?
430========================================
431
432Core language, builtins, and interpreter
433
Tim Peters482c0212000-09-26 06:33:09 +0000434- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000435 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000436
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000437- Add -h and -V command line options to print the usage message and
438 Python version number and exit immediately.
439
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000440- eval() and exec accept Unicode objects as code parameters.
441
442- getattr() and setattr() now also accept Unicode objects for the
443 attribute name, which are converted to strings using the default
444 encoding before lookup.
445
446- Multiplication on string and Unicode now does proper bounds
447 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
448 string is too long."
449
450- Better error message when continue is found in try statement in a
Tim Petersa3a3a032000-11-30 05:22:44 +0000451 loop.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000452
Jeremy Hylton1b618592000-09-26 05:32:36 +0000453
454Standard library and extensions
455
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000456- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +0000457 argument checking; it still takes no arguments.
458
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000459- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000460
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000461- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000462
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000463- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000464
465- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000466 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000467
468- copy: Copy Unicode objects atomically.
469
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000470- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000471
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000472- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000473
Fred Drake67233bc2000-09-26 16:40:27 +0000474- dbm: Add get() and setdefault() methods to dbm object. Add constant
475 `library' to module that names the library used. Added doc strings
476 and method names to error messages. Uses configure to determine
477 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
478 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000479
480- distutils: Update to version 0.9.3.
481
482- dl: Add several dl.RTLD_ constants.
483
484- fpectl: Now supported on FreeBSD.
485
486- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
487 found by the collector will be saved in gc.garbage. This is useful
488 for debugging a program that creates reference cycles.
489
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000490- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +0000491 of HTTP class. Do not close socket on zero-length response. Do not
492 crash when server sends invalid content-length header.
493
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000494- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000495
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000496- marshal: When reading a short, sign-extend on platforms where shorts
497 are bigger than 16 bits. When reading a long, repair the unportable
498 sign extension that was being done for 64-bit machines. (It assumed
499 that signed right shift sign-extends.)
500
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000501- operator: Add contains(), invert(), __invert__() as aliases for
502 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000503
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000504- os: Add support for popen2() and popen3() on all platforms where
505 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000506
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000507- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +0000508 clicking on a file in Explorer (or passing the file name to the
509 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000510
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000511- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +0000512 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000513
514- pickle: Now raises ValueError when an invalid pickle that contains
515 a non-string repr where a string repr was expected. This behavior
516 matches cPickle.
517
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000518- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000519
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000520- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000521
522- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000523 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000524 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000525
526- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000527 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000528
529- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +0000530 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +0000531 few cycles during startup since the first call to
532 setdefaultencoding() will initialize the codec registry and the
533 encodings package.
534
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000535- socket: Support for size hint in readlines() method of object returned
536 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000537
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000538- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +0000539 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +0000540 is followed by whitespace.
541
Tim Petersa3a3a032000-11-30 05:22:44 +0000542- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000543
544- struct: Check ranges for bytes and shorts.
545
546- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000547 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000548
549- Tkinter: Image objects are now guaranteed to have unique ids. Set
550 event.delta to zero if Tk version doesn't support mousewheel.
551 Removed some debugging prints.
552
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000553- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000554
Fred Drake67233bc2000-09-26 16:40:27 +0000555- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000556 which works around a bug in Norton AntiVirus 2000 that leads directly
557 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000558
559- xml: New version detection code allows PyXML to override standard
560 XML package if PyXML version is greater than 0.6.1.
561
Fred Drake64bb3802000-09-26 16:21:35 +0000562- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
563 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
564 tree only for nodes which are sufficiently interesting to a specific
565 application. Does not provide the HTML-specific extensions. Still
566 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000567
Fred Drake64bb3802000-09-26 16:21:35 +0000568- xml.sax: SAX 2 support for Python, including all the handler
569 interfaces needed to process XML 1.0 compliant XML. Some
570 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000571
Fred Drake64bb3802000-09-26 16:21:35 +0000572- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
573 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000574
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000575
Jeremy Hylton1b618592000-09-26 05:32:36 +0000576C API
577
578- Add three new convenience functions for module initialization --
579 PyModule_AddObject(), PyModule_AddIntConstant(), and
580 PyModule_AddStringConstant().
581
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000582- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +0000583 removed and add #error to Python.h if NULL isn't defined after
584 #include of stdio.h.
585
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000586- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +0000587 backwards compatibility (at the source level) with old extensions.
588
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000589- A wrapper API was added for signal() and sigaction(). Instead of
590 either function, always use PyOS_getsig() to get a signal handler
591 and PyOS_setsig() to set one. A new convenience typedef
592 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000593
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000594- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +0000595 internal data buffer and size of a string object -- or the default
596 encoded version of a Unicode object.
597
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000598- PyString_Size() and PyString_AsString() accept Unicode objects.
599
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000600- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +0000601 exists). INT_MAX and LONG_MAX will always be defined, even if
602 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000603
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000604- PyFloat_FromString takes a second argument, pend, that was
605 effectively useless. It is now officially useless but preserved for
606 backwards compatibility. If the pend argument is not NULL, *pend is
607 set to NULL.
608
609- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
610 for the attribute name. See note on getattr() above.
611
612- A few bug fixes to argument processing for Unicode.
613 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
614 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
615 pointer to the default encoded string data instead of to the raw
Tim Petersa3a3a032000-11-30 05:22:44 +0000616 UTF-16.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000617
618- Py_BuildValue accepts B format (for bgen-generated code).
619
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000620
Jeremy Hylton1b618592000-09-26 05:32:36 +0000621Internals
622
623- On Unix, fix code for finding Python installation directory so that
624 it works when argv[0] is a relative path.
625
Andrew M. Kuchlinga1099be2000-12-15 01:16:43 +0000626- Added a true unicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000627 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +0000628 rather than by generating a copy of the object.
629
Tim Peters482c0212000-09-26 06:33:09 +0000630- Several of the internal Unicode tables are much smaller now, and
631 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000632
Jeremy Hylton97693b02000-09-26 17:42:51 +0000633- In the garbage collector: Fixed bug in collection of tuples. Fixed
634 bug that caused some instances to be removed from the container set
635 while they were still live. Fixed parsing in gc.set_debug() for
636 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000637
638- Fixed refcount problem in instance deallocation that only occurred
639 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
640
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000641- On Windows, getpythonregpath is now protected against null data in
642 registry key.
643
644- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
Tim Petersa3a3a032000-11-30 05:22:44 +0000645 condition.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000646
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000647
Jeremy Hylton1b618592000-09-26 05:32:36 +0000648Build and platform-specific issues
649
650- Better support of GNU Pth via --with-pth configure option.
651
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000652- Python/C API now properly exposed to dynamically-loaded extension
653 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000654
655- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
656 Don't define MS_SYNC to be zero when it is undefined. Added missing
657 prototypes in posixmodule.c.
658
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000659- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000660 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000661
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000662- Fix largefile support on older NetBSD systems and OpenBSD by adding
663 define for TELL64.
664
665
666Tools and other miscellany
667
668- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
669
670- freeze: The modulefinder now works with 2.0 opcodes.
671
Tim Petersa3a3a032000-11-30 05:22:44 +0000672- IDLE:
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000673 Move hackery of sys.argv until after the Tk instance has been
674 created, which allows the application-specific Tkinter
675 initialization to be executed if present; also pass an explicit
676 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +0000677
Jeremy Hylton1b618592000-09-26 05:32:36 +0000678
679What's new in 2.0 beta 1?
680=========================
681
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000682Source Incompatibilities
683------------------------
684
685None. Note that 1.6 introduced several incompatibilities with 1.5.2,
686such as single-argument append(), connect() and bind(), and changes to
687str(long) and repr(float).
688
689
690Binary Incompatibilities
691------------------------
692
693- Third party extensions built for Python 1.5.x or 1.6 cannot be used
694with Python 2.0; these extensions will have to be rebuilt for Python
6952.0.
696
697- On Windows, attempting to import a third party extension built for
698Python 1.5.x or 1.6 results in an immediate crash; there's not much we
699can do about this. Check your PYTHONPATH environment variable!
700
701- Python bytecode files (*.pyc and *.pyo) are not compatible between
702releases.
703
704
705Overview of Changes Since 1.6
706-----------------------------
707
708There are many new modules (including brand new XML support through
709the xml package, and i18n support through the gettext module); a list
710of all new modules is included below. Lots of bugs have been fixed.
711
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000712The process for making major new changes to the language has changed
713since Python 1.6. Enhancements must now be documented by a Python
714Enhancement Proposal (PEP) before they can be accepted.
715
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000716There are several important syntax enhancements, described in more
717detail below:
718
719 - Augmented assignment, e.g. x += 1
720
721 - List comprehensions, e.g. [x**2 for x in range(10)]
722
723 - Extended import statement, e.g. import Module as Name
724
725 - Extended print statement, e.g. print >> file, "Hello"
726
727Other important changes:
728
729 - Optional collection of cyclical garbage
730
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000731Python Enhancement Proposal (PEP)
732---------------------------------
733
734PEP stands for Python Enhancement Proposal. A PEP is a design
735document providing information to the Python community, or describing
736a new feature for Python. The PEP should provide a concise technical
737specification of the feature and a rationale for the feature.
738
739We intend PEPs to be the primary mechanisms for proposing new
740features, for collecting community input on an issue, and for
741documenting the design decisions that have gone into Python. The PEP
742author is responsible for building consensus within the community and
743documenting dissenting opinions.
744
745The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000746
747Augmented Assignment
748--------------------
749
750This must have been the most-requested feature of the past years!
751Eleven new assignment operators were added:
752
Guido van Rossume905e952000-09-05 12:42:46 +0000753 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000754
755For example,
756
757 A += B
758
759is similar to
760
761 A = A + B
762
763except that A is evaluated only once (relevant when A is something
764like dict[index].attr).
765
766However, if A is a mutable object, A may be modified in place. Thus,
767if A is a number or a string, A += B has the same effect as A = A+B
768(except A is only evaluated once); but if a is a list, A += B has the
769same effect as A.extend(B)!
770
771Classes and built-in object types can override the new operators in
772order to implement the in-place behavior; the not-in-place behavior is
773used automatically as a fallback when an object doesn't implement the
774in-place behavior. For classes, the method name is derived from the
775method name for the corresponding not-in-place operator by inserting
776an 'i' in front of the name, e.g. __iadd__ implements in-place
777__add__.
778
779Augmented assignment was implemented by Thomas Wouters.
780
781
782List Comprehensions
783-------------------
784
785This is a flexible new notation for lists whose elements are computed
786from another list (or lists). The simplest form is:
787
788 [<expression> for <variable> in <sequence>]
789
Guido van Rossum56db0952000-09-06 23:34:25 +0000790For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000791This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000792
793You can also add a condition:
794
795 [<expression> for <variable> in <sequence> if <condition>]
796
797For example, [w for w in words if w == w.lower()] would yield the list
798of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000799than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000800
801You can also have nested for loops and more than one 'if' clause. For
802example, here's a function that flattens a sequence of sequences::
803
804 def flatten(seq):
805 return [x for subseq in seq for x in subseq]
806
807 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
808
809This prints
810
811 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
812
813List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000814Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000815
816
817Extended Import Statement
818-------------------------
819
820Many people have asked for a way to import a module under a different
821name. This can be accomplished like this:
822
823 import foo
824 bar = foo
825 del foo
826
827but this common idiom gets old quickly. A simple extension of the
828import statement now allows this to be written as follows:
829
830 import foo as bar
831
832There's also a variant for 'from ... import':
833
834 from foo import bar as spam
835
836This also works with packages; e.g. you can write this:
837
838 import test.regrtest as regrtest
839
840Note that 'as' is not a new keyword -- it is recognized only in this
841context (this is only possible because the syntax for the import
842statement doesn't involve expressions).
843
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000844Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000845
846
847Extended Print Statement
848------------------------
849
850Easily the most controversial new feature, this extension to the print
851statement adds an option to make the output go to a different file
852than the default sys.stdout.
853
854For example, to write an error message to sys.stderr, you can now
855write:
856
857 print >> sys.stderr, "Error: bad dog!"
858
859As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +0000860evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000861
862 print >> None, "Hello world"
863
864is equivalent to
865
866 print "Hello world"
867
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000868Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000869
870
871Optional Collection of Cyclical Garbage
872---------------------------------------
873
874Python is now equipped with a garbage collector that can hunt down
875cyclical references between Python objects. It's no replacement for
876reference counting; in fact, it depends on the reference counts being
877correct, and decides that a set of objects belong to a cycle if all
878their reference counts can be accounted for from their references to
879each other. This devious scheme was first proposed by Eric Tiedemann,
880and brought to implementation by Neil Schemenauer.
881
882There's a module "gc" that lets you control some parameters of the
883garbage collection. There's also an option to the configure script
884that lets you enable or disable the garbage collection. In 2.0b1,
885it's on by default, so that we (hopefully) can collect decent user
886experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +0000887performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000888off by default in the final 2.0 release.
889
890
891Smaller Changes
892---------------
893
894A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
895map(None, seq1, seq2, ...) when the sequences have the same length;
896i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
897the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000898zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000899
900sys.version_info is a tuple (major, minor, micro, level, serial).
901
902Dictionaries have an odd new method, setdefault(key, default).
903dict.setdefault(key, default) returns dict[key] if it exists; if not,
904it sets dict[key] to default and returns that value. Thus:
905
906 dict.setdefault(key, []).append(item)
907
908does the same work as this common idiom:
909
910 if not dict.has_key(key):
911 dict[key] = []
912 dict[key].append(item)
913
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000914There are two new variants of SyntaxError that are raised for
915indentation-related errors: IndentationError and TabError.
916
917Changed \x to consume exactly two hex digits; see PEP 223. Added \U
918escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000919
920The limits on the size of expressions and file in Python source code
921have been raised from 2**16 to 2**32. Previous versions of Python
922were limited because the maximum argument size the Python VM accepted
923was 2**16. This limited the size of object constructor expressions,
924e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
925limit was raised thanks to a patch by Charles Waldman that effectively
926fixes the problem. It is now much more likely that you will be
927limited by available memory than by an arbitrary limit in Python.
928
929The interpreter's maximum recursion depth can be modified by Python
930programs using sys.getrecursionlimit and sys.setrecursionlimit. This
931limit is the maximum number of recursive calls that can be made by
932Python code. The limit exists to prevent infinite recursion from
933overflowing the C stack and causing a core dump. The default value is
9341000. The maximum safe value for a particular platform can be found
935by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000936
937New Modules and Packages
938------------------------
939
940atexit - for registering functions to be called when Python exits.
941
942imputil - Greg Stein's alternative API for writing custom import
943hooks.
944
945pyexpat - an interface to the Expat XML parser, contributed by Paul
946Prescod.
947
948xml - a new package with XML support code organized (so far) in three
949subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
950would fill a volume. There's a special feature whereby a
951user-installed package named _xmlplus overrides the standard
952xmlpackage; this is intended to give the XML SIG a hook to distribute
953backwards-compatible updates to the standard xml package.
954
955webbrowser - a platform-independent API to launch a web browser.
956
957
Guido van Rossume905e952000-09-05 12:42:46 +0000958Changed Modules
959---------------
960
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000961array -- new methods for array objects: count, extend, index, pop, and
962remove
963
964binascii -- new functions b2a_hex and a2b_hex that convert between
965binary data and its hex representation
966
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000967calendar -- Many new functions that support features including control
968over which day of the week is the first day, returning strings instead
969of printing them. Also new symbolic constants for days of week,
970e.g. MONDAY, ..., SUNDAY.
971
972cgi -- FieldStorage objects have a getvalue method that works like a
973dictionary's get method and returns the value attribute of the object.
974
975ConfigParser -- The parser object has new methods has_option,
976remove_section, remove_option, set, and write. They allow the module
977to be used for writing config files as well as reading them.
978
979ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000980optionally support the RFC 959 REST command.
981
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000982gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000983
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000984httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
985the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000986
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000987locale -- implement getdefaultlocale for Win32 and Macintosh
988
989marshal -- no longer dumps core when marshaling deeply nested or
990recursive data structures
991
992os -- new functions isatty, seteuid, setegid, setreuid, setregid
993
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000994os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
995support under Unix.
996
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000997os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000998
999os.path -- fix semantics of os.path.commonprefix
1000
1001smtplib -- support for sending very long messages
1002
1003socket -- new function getfqdn()
1004
1005readline -- new functions to read, write and truncate history files.
1006The readline section of the library reference manual contains an
1007example.
1008
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001009select -- add interface to poll system call
1010
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001011shutil -- new copyfileobj function
1012
1013SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
1014HTTP server.
1015
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001016Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001017
1018urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +00001019e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001020
1021whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +00001022
1023
1024Obsolete Modules
1025----------------
1026
1027None. However note that 1.6 made a whole slew of modules obsolete:
1028stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
1029poly, zmod, strop, util, whatsound.
1030
1031
1032Changed, New, Obsolete Tools
1033----------------------------
1034
Tim Peters8b092332000-09-05 20:15:25 +00001035None.
Guido van Rossume905e952000-09-05 12:42:46 +00001036
1037
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001038C-level Changes
1039---------------
1040
1041Several cleanup jobs were carried out throughout the source code.
1042
1043All C code was converted to ANSI C; we got rid of all uses of the
1044Py_PROTO() macro, which makes the header files a lot more readable.
1045
1046Most of the portability hacks were moved to a new header file,
1047pyport.h; several other new header files were added and some old
1048header files were removed, in an attempt to create a more rational set
1049of header files. (Few of these ever need to be included explicitly;
1050they are all included by Python.h.)
1051
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001052Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001053and Win64, especially for the new Intel Itanium processor. Mick also
1054added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001055
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001056The C APIs to return an object's size have been update to consistently
1057use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
1058previous versions, the abstract interfaces used PyXXX_Length and the
1059concrete interfaces used PyXXX_Size. The old names,
1060e.g. PyObject_Length, are still available for backwards compatibility
1061at the API level, but are deprecated.
1062
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001063The PyOS_CheckStack function has been implemented on Windows by
1064Fredrik Lundh. It prevents Python from failing with a stack overflow
1065on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001066
1067The GC changes resulted in creation of two new slots on object,
1068tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +00001069the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001070
1071The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +00001072C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001073
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001074PyErr_Format has been updated to automatically calculate the size of
1075the buffer needed to hold the formatted result string. This change
1076prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001077
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001078New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +00001079
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001080PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
1081that are the same as their non-Ex counterparts except they take an
1082extra flag argument that tells them to close the file when done.
1083
1084XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001085
Tim Peters8b092332000-09-05 20:15:25 +00001086
1087Windows Changes
1088---------------
1089
1090New popen2/popen3/peopen4 in os module (see Changed Modules above).
1091
1092os.popen is much more usable on Windows 95 and 98. See Microsoft
1093Knowledge Base article Q150956. The Win9x workaround described there
1094is implemented by the new w9xpopen.exe helper in the root of your
1095Python installation. Note that Python uses this internally; it is not
1096a standalone program.
1097
1098Administrator privileges are no longer required to install Python
1099on Windows NT or Windows 2000. If you have administrator privileges,
1100Python's registry info will be written under HKEY_LOCAL_MACHINE.
1101Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +00001102under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +00001103uses of Python, but will prevent some advanced uses from working
1104(for example, running a Python script as an NT service, or possibly
1105from CGI).
1106
1107[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
1108installer; instead, it installs the needed Tcl/Tk files directly in the
1109Python directory. If you already have a Tcl/Tk installation, this
1110wastes some disk space (about 4 Megs) but avoids problems with
1111conflicting Tcl/Tk installations, and makes it much easier for Python
1112to ensure that Tcl/Tk can find all its files.
1113
1114[This was new in 1.6] The Windows installer now installs by default in
1115\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
1116
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001117
1118Updates to the changes between 1.5.2 and 1.6
1119--------------------------------------------
1120
1121The 1.6 NEWS file can't be changed after the release is done, so here
1122is some late-breaking news:
1123
1124New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
1125and changes to getlocale() and setlocale().
1126
1127The new module is now enabled per default.
1128
1129It is not true that the encodings codecs cannot be used for normal
1130strings: the string.encode() (which is also present on 8-bit strings
1131!) allows using them for 8-bit strings too, e.g. to convert files from
1132cp1252 (Windows) to latin-1 or vice-versa.
1133
1134Japanese codecs are available from Tamito KAJIYAMA:
1135http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
1136
1137
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001138======================================================================