blob: eb16282ddc231f3b675aac2227db6cc855adbb4f [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
Guido van Rossum051e3352001-01-15 19:11:10 +00006- The xrange() object implementation has been improved so that
7 xrange(sys.maxint) can be used on 64-bit platforms. There's still a
8 limitation that in this case len(xrange(sys.maxint)) can't be
9 calculated, but the common idiom "for i in xrange(sys.maxint)" will
10 work fine as long as the index i doesn't actually reach 2**31.
11 (Python uses regular ints for sequence and string indices; fixing
12 that is much more work.)
13
Guido van Rossum1cc8f832001-01-12 16:25:08 +000014- Two changes to from...import:
15
16 1) "from M import X" now works even if M is not a real module; it's
17 basically a getattr() operation with AttributeError exceptions
18 changed into ImportError.
19
20 2) "from M import *" now looks for M.__all__ to decide which names to
21 import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
22 filters out names starting with '_' as before. Whether or not
23 __all__ exists, there's no restriction on the type of M.
24
Guido van Rossumf61f1662001-01-10 20:13:55 +000025- File objects have a new method, xreadlines(). This is the fastest
26 way to iterate over all lines in a file:
27
28 for line in file.xreadlines():
29 ...do something to line...
30
31 See the xreadlines module (mentioned below) for how to do this for
32 other file-like objects.
33
34- Even if you don't use file.xreadlines(), you may expect a speedup on
35 line-by-line input. The file.readline() method has been optimized
Tim Petersf29b64d2001-01-15 06:33:19 +000036 quite a bit in platform-specific ways: on systems (like Linux) that
37 support flockfile(), getc_unlocked(), and funlockfile(), those are
38 used by default. On systems (like Windows) without getc_unlocked(),
39 a complicated (but still thread-safe) method using fgets() is used by
40 default.
41
42 You can force use of the fgets() method by #define'ing
43 USE_FGETS_IN_GETLINE at build time (it may be faster than
44 getc_unlocked()).
45
46 You can force fgets() not to be used by #define'ing
47 DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test
48 test_bufio.py fails -- and let us know if it does!).
49
50- In addition, the fileinput module, while still slower than the other
51 methods on most platforms, has been sped up too, by using
52 file.readlines(sizehint).
Guido van Rossumf61f1662001-01-10 20:13:55 +000053
54- Support for run-time warnings has been added, including a new
55 command line option (-W) to specify the disposition of warnings.
56 See the description of the warnings module below.
57
58- Extensive changes have been made to the coercion code. This mostly
59 affects extension modules (which can now implement mixed-type
60 numerical operators without having to use coercion), but
61 occasionally, in boundary cases the coercion semantics have changed
62 subtly. Since this was a terrible gray area of the language, this
Guido van Rossumae72d872001-01-11 15:00:14 +000063 is considered an improvement. Also note that __rcmp__ is no longer
Guido van Rossumf61f1662001-01-10 20:13:55 +000064 supported -- instead of calling __rcmp__, __cmp__ is called with
65 reversed arguments.
66
Martin v. Löwisbe4c0f52001-01-04 20:30:56 +000067- The interpreter accepts now bytecode files on the command line even
68 if they do not have a .pyc or .pyo extension. On Linux, after executing
69
70 echo ':pyc:M::\x87\xc6\x0d\x0a::/usr/local/bin/python:' > /proc/sys/fs/binfmt_misc/register
71
72 any byte code file can be used as an executable (i.e. as an argument
73 to execve(2)).
74
Tim Peters9940b802000-12-01 07:59:35 +000075- %[xXo] formats of negative Python longs now produce a sign
Tim Petersa3a3a032000-11-30 05:22:44 +000076 character. In 1.6 and earlier, they never produced a sign,
77 and raised an error if the value of the long was too large
78 to fit in a Python int. In 2.0, they produced a sign if and
79 only if too large to fit in an int. This was inconsistent
80 across platforms (because the size of an int varies across
81 platforms), and inconsistent with hex() and oct(). Example:
82
83 >>> "%x" % -0x42L
Tim Peters9940b802000-12-01 07:59:35 +000084 '-42' # in 2.1
Tim Petersa3a3a032000-11-30 05:22:44 +000085 'ffffffbe' # in 2.0 and before, on 32-bit machines
86 >>> hex(-0x42L)
87 '-0x42L' # in all versions of Python
88
Tim Peters9940b802000-12-01 07:59:35 +000089 The behavior of %d formats for negative Python longs remains
90 the same as in 2.0 (although in 1.6 and before, they raised
91 an error if the long didn't fit in a Python int).
92
93 %u formats don't make sense for Python longs, but are allowed
94 and treated the same as %d in 2.1. In 2.0, a negative long
95 formatted via %u produced a sign if and only if too large to
96 fit in an int. In 1.6 and earlier, a negative long formatted
97 via %u raised an error if it was too big to fit in an int.
98
Guido van Rossum3661d392000-12-12 22:10:31 +000099- Dictionary objects have an odd new method, popitem(). This removes
100 an arbitrary item from the dictionary and returns it (in the form of
101 a (key, value) pair). This can be useful for algorithms that use a
102 dictionary as a bag of "to do" items and repeatedly need to pick one
103 item. Such algorithms normally end up running in quadratic time;
104 using popitem() they can usually be made to run in linear time.
105
Tim Peters36cdad12000-12-29 02:06:45 +0000106Standard library
107
Guido van Rossumda91f222001-01-15 16:36:08 +0000108- The ftplib module now defaults to passive mode, which is deemed a
109 more useful default given that clients are often inside firewalls
110 these days. Note that this could break if ftplib is used to connect
111 to a *server* that is inside a firewall, from outside; this is
112 expected to be a very rare situation. To fix that, you can call
113 ftp.set_pasv(0).
114
Martin v. Löwis10a27872001-01-13 09:54:41 +0000115- The module site now treats .pth files not only for path configuration,
116 but also supports extensions to the initialization code: Lines starting
117 with import are executed.
118
Guido van Rossumf61f1662001-01-10 20:13:55 +0000119- There's a new module, warnings, which implements a mechanism for
120 issuing and filtering warnings. There are some new built-in
121 exceptions that serve as warning categories, and a new command line
122 option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
123 turns warnings into errors). warnings.warn(message[, category])
124 issues a warning message; this can also be called from C as
125 PyErr_Warn(category, message).
126
127- A new module xreadlines was added. This exports a single factory
128 function, xreadlines(). The intention is that this code is the
129 absolutely fastest way to iterate over all lines in an open
130 file(-like) object:
131
132 import xreadlines
133 for line in xreadlines.xreadlines(file):
134 ...do something to line...
135
136 This is equivalent to the previous the speed record holder using
137 file.readlines(sizehint). Note that if file is a real file object
138 (as opposed to a file-like object), this is equivalent:
139
140 for line in file.xreadlines():
141 ...do something to line...
142
Tim Peters36cdad12000-12-29 02:06:45 +0000143- The bisect module has new functions bisect_left, insort_left,
144 bisect_right and insort_right. The old names bisect and insort
145 are now aliases for bisect_right and insort_right. XXX_right
146 and XXX_left methods differ in what happens when the new element
147 compares equal to one or more elements already in the list: the
148 XXX_left methods insert to the left, the XXX_right methods to the
Tim Peters742bb6f2001-01-05 08:05:32 +0000149 right. Code that doesn't care where equal elements end up should
150 continue to use the old, short names ("bisect" and "insort").
Tim Peters36cdad12000-12-29 02:06:45 +0000151
Andrew M. Kuchlingf6f3a892001-01-13 14:53:34 +0000152- The new curses.panel module wraps the panel library that forms part
153 of SYSV curses and ncurses. Contributed by Thomas Gellekum.
154
Guido van Rossumf61f1662001-01-10 20:13:55 +0000155- The SocketServer module now sets the allow_reuse_address flag by
156 default in the TCPServer class.
157
158- A new function, sys._getframe(), returns the stack frame pointer of
159 the caller. This is intended only as a building block for
160 higher-level mechanisms such as string interpolation.
161
162Build issues
163
164- On Linux (and possibly other Unix platforms), the readline and
165 _curses modules are automatically configured through
166 Modules/Setup.config. These, and the bsddb module (which was
167 already dynamically configured) are now built as shared libraries by
168 default.
169
170- Python now always uses its own (renamed) implementation of getopt()
171 -- there's too much variation among C library getopt()
172 implementations.
173
174- C++ compilers are better supported; the CXX macro is always set to a
175 C++ compiler if one is found.
Tim Peters36cdad12000-12-29 02:06:45 +0000176
Tim Petersd92dfe02000-12-12 01:18:41 +0000177Windows changes
178
179- select module: By default under Windows, a select() call
180 can specify no more than 64 sockets. Python now boosts
181 this Microsoft default to 512. If you need even more than
182 that, see the MS docs (you'll need to #define FD_SETSIZE
183 and recompile Python from source).
184
Guido van Rossumf61f1662001-01-10 20:13:55 +0000185- Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3
186 subdirectory is no more!
187
Tim Petersa3a3a032000-11-30 05:22:44 +0000188
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000189What's New in Python 2.0?
Fred Drake1a640502000-10-16 20:27:25 +0000190=========================
Guido van Rossum61000331997-08-15 04:39:58 +0000191
Guido van Rossum8ed602b2000-09-01 22:34:33 +0000192Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000193changes are in the file HISTORY. If you are making the jump directly
194from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
195HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +0000196
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000197Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
198the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
199http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +0000200
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000201--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +0000202
203======================================================================
204
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000205What's new in 2.0 (since release candidate 1)?
206==============================================
207
208Standard library
209
210- The copy_reg module was modified to clarify its intended use: to
211 register pickle support for extension types, not for classes.
212 pickle() will raise a TypeError if it is passed a class.
213
214- Fixed a bug in gettext's "normalize and expand" code that prevented
215 it from finding an existing .mo file.
216
217- Restored support for HTTP/0.9 servers in httplib.
218
Tim Peters989b7b92000-10-16 20:24:53 +0000219- The math module was changed to stop raising OverflowError in case of
220 underflow, and return 0 instead in underflow cases. Whether Python
221 used to raise OverflowError in case of underflow was platform-
222 dependent (it did when the platform math library set errno to ERANGE
223 on underflow).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000224
225- Fixed a bug in StringIO that occurred when the file position was not
226 at the end of the file and write() was called with enough data to
227 extend past the end of the file.
228
229- Fixed a bug that caused Tkinter error messages to get lost on
230 Windows. The bug was fixed by replacing direct use of
231 interp->result with Tcl_GetStringResult(interp).
232
233- Fixed bug in urllib2 that caused it to fail when it received an HTTP
234 redirect response.
235
236- Several changes were made to distutils: Some debugging code was
237 removed from util. Fixed the installer used when an external zip
238 program (like WinZip) is not found; the source code for this
239 installer is in Misc/distutils. check_lib() was modified to behave
240 more like AC_CHECK_LIB by add other_libraries() as a parameter. The
241 test for whether installed modules are on sys.path was changed to
242 use both normcase() and normpath().
243
Jeremy Hyltond867a2c2000-10-16 20:41:38 +0000244- Several minor bugs were fixed in the xml package (the minidom,
245 pulldom, expatreader, and saxutils modules).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000246
247- The regression test driver (regrtest.py) behavior when invoked with
248 -l changed: It now reports a count of objects that are recognized as
249 garbage but not freed by the garbage collector.
250
Tim Peters989b7b92000-10-16 20:24:53 +0000251- The regression test for the math module was changed to test
252 exceptional behavior when the test is run in verbose mode. Python
253 cannot yet guarantee consistent exception behavior across platforms,
254 so the exception part of test_math is run only in verbose mode, and
255 may fail on your platform.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000256
257Internals
258
259- PyOS_CheckStack() has been disabled on Win64, where it caused
260 test_sre to fail.
261
262Build issues
263
264- Changed compiler flags, so that gcc is always invoked with -Wall and
265 -Wstrict-prototypes. Users compiling Python with GCC should see
266 exactly one warning, except if they have passed configure the
Tim Peters989b7b92000-10-16 20:24:53 +0000267 --with-pydebug flag. The expected warning is for getopt() in
Tim Petersadfb94f2000-10-16 20:51:33 +0000268 Modules/main.c. This warning will be fixed for Python 2.1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000269
Tim Petersa3a3a032000-11-30 05:22:44 +0000270- Fixed configure to add -threads argument during linking on OSF1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000271
272Tools and other miscellany
273
274- The compiler in Tools/compiler was updated to support the new
275 language features introduced in 2.0: extended print statement, list
276 comprehensions, and augmented assignments. The new compiler should
277 also be backwards compatible with Python 1.5.2; the compiler will
278 always generate code for the version of the interpreter it runs
Tim Petersa3a3a032000-11-30 05:22:44 +0000279 under.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000280
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000281What's new in 2.0 release candidate 1 (since beta 2)?
282=====================================================
283
Jeremy Hylton6040aaa2000-10-09 21:27:22 +0000284What is release candidate 1?
285
286We believe that release candidate 1 will fix all known bugs that we
287intend to fix for the 2.0 final release. This release should be a bit
288more stable than the previous betas. We would like to see even more
289widespread testing before the final release, so we are producing this
290release candidate. The final release will be exactly the same unless
291any show-stopping (or brown bag) bugs are found by testers of the
292release candidate.
293
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000294All the changes since the last beta release are bug fixes or changes
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000295to support building Python for specific platforms.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000296
297Core language, builtins, and interpreter
298
299- A bug that caused crashes when __coerce__ was used with augmented
300 assignment, e.g. +=, was fixed.
301
302- Raise ZeroDivisionError when raising zero to a negative number,
303 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
304 power operator and the result of math.pow(0.0, -2.0) will vary by
305 platform. On Linux, it raises a ValueError.
306
307- A bug in Unicode string interpolation was fixed that occasionally
308 caused errors with formats including "%%". For example, the
309 following expression "%% %s" % u"abc" no longer raises a TypeError.
310
311- Compilation of deeply nested expressions raises MemoryError instead
312 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
313
314- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
315 rendering them useless. They are now written in binary mode again.
316
317Standard library
318
319- Keyword arguments are now accepted for most pattern and match object
320 methods in SRE, the standard regular expression engine.
321
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000322- In SRE, fixed error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +0000323 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000324
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000325- Several bugs in the Unicode handling and error handling in _tkinter
326 were fixed.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000327
328- Fix memory management errors in Merge() and Tkapp_Call() routines.
329
330- Several changes were made to cStringIO to make it compatible with
331 the file-like object interface and with StringIO. If operations are
332 performed on a closed object, an exception is raised. The truncate
333 method now accepts a position argument and readline accepts a size
Tim Petersa3a3a032000-11-30 05:22:44 +0000334 argument.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000335
336- There were many changes made to the linuxaudiodev module and its
337 test suite; as a result, a short, unexpected audio sample should now
Tim Petersa3a3a032000-11-30 05:22:44 +0000338 play when the regression test is run.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000339
340 Note that this module is named poorly, because it should work
341 correctly on any platform that supports the Open Sound System
Tim Petersa3a3a032000-11-30 05:22:44 +0000342 (OSS).
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000343
344 The module now raises exceptions when errors occur instead of
345 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
346 audio) and defines a getptr() method that calls the
347 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
348
349- The library_version attribute, introduced in an earlier beta, was
350 removed because it can not be supported with early versions of the C
351 readline library, which provides no way to determine the version at
352 compile-time.
353
354- The binascii module is now enabled on Win64.
355
Tim Peters46446d62000-10-09 21:19:31 +0000356- tokenize.py no longer suffers "recursion depth" errors when parsing
357 programs with very long string literals.
358
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000359Internals
360
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000361- Fixed several buffer overflow vulnerabilities in calculate_path(),
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000362 which is called when the interpreter starts up to determine where
363 the standard library is installed. These vulnerabilities affect all
364 previous versions of Python and can be exploited by setting very
365 long values for PYTHONHOME or argv[0]. The risk is greatest for a
366 setuid Python script, although use of the wrapper in
367 Misc/setuid-prog.c will eliminate the vulnerability.
368
369- Fixed garbage collection bugs in instance creation that were
370 triggered when errors occurred during initialization. The solution,
371 applied in cPickle and in PyInstance_New(), is to call
372 PyObject_GC_Init() after the initialization of the object's
373 container attributes is complete.
374
375- pyexpat adds definitions of PyModule_AddStringConstant and
376 PyModule_AddObject if the Python version is less than 2.0, which
377 provides compatibility with PyXML on Python 1.5.2.
378
379- If the platform has a bogus definition for LONG_BIT (the number of
380 bits in a long), an error will be reported at compile time.
381
382- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
383 collection crashes and possibly other, unreported crashes.
384
385- Fixed a memory leak in _PyUnicode_Fini().
386
387Build issues
388
389- configure now accepts a --with-suffix option that specifies the
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000390 executable suffix. This is useful for builds on Cygwin and Mac OS
Tim Petersa3a3a032000-11-30 05:22:44 +0000391 X, for example.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000392
393- The mmap.PAGESIZE constant is now initialized using sysconf when
394 possible, which eliminates a dependency on -lucb for Reliant UNIX.
395
396- The md5 file should now compile on all platforms.
397
398- The select module now compiles on platforms that do not define
399 POLLRDNORM and related constants.
400
401- Darwin (Mac OS X): Initial support for static builds on this
Tim Petersa3a3a032000-11-30 05:22:44 +0000402 platform.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000403
Jeremy Hylton10921202000-10-09 18:34:12 +0000404- BeOS: A number of changes were made to the build and installation
405 process. ar-fake now operates on a directory of object files.
406 dl_export.h is gone, and its macros now appear on the mwcc command
407 line during build on PPC BeOS.
408
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000409- Platform directory in lib/python2.0 is "plat-beos5" (or
Jeremy Hylton10921202000-10-09 18:34:12 +0000410 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000411
412- Cygwin: Support for shared libraries, Tkinter, and sockets.
413
414- SunOS 4.1.4_JL: Fix test for directory existence in configure.
415
416Tools and other miscellany
417
418- Removed debugging prints from main used with freeze.
419
Tim Peters46446d62000-10-09 21:19:31 +0000420- IDLE auto-indent no longer crashes when it encounters Unicode
421 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000422
423What's new in 2.0 beta 2 (since beta 1)?
424========================================
425
426Core language, builtins, and interpreter
427
Tim Peters482c0212000-09-26 06:33:09 +0000428- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000429 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000430
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000431- Add -h and -V command line options to print the usage message and
432 Python version number and exit immediately.
433
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000434- eval() and exec accept Unicode objects as code parameters.
435
436- getattr() and setattr() now also accept Unicode objects for the
437 attribute name, which are converted to strings using the default
438 encoding before lookup.
439
440- Multiplication on string and Unicode now does proper bounds
441 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
442 string is too long."
443
444- Better error message when continue is found in try statement in a
Tim Petersa3a3a032000-11-30 05:22:44 +0000445 loop.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000446
Jeremy Hylton1b618592000-09-26 05:32:36 +0000447
448Standard library and extensions
449
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000450- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +0000451 argument checking; it still takes no arguments.
452
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000453- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000454
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000455- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000456
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000457- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000458
459- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000460 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000461
462- copy: Copy Unicode objects atomically.
463
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000464- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000465
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000466- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000467
Fred Drake67233bc2000-09-26 16:40:27 +0000468- dbm: Add get() and setdefault() methods to dbm object. Add constant
469 `library' to module that names the library used. Added doc strings
470 and method names to error messages. Uses configure to determine
471 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
472 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000473
474- distutils: Update to version 0.9.3.
475
476- dl: Add several dl.RTLD_ constants.
477
478- fpectl: Now supported on FreeBSD.
479
480- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
481 found by the collector will be saved in gc.garbage. This is useful
482 for debugging a program that creates reference cycles.
483
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000484- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +0000485 of HTTP class. Do not close socket on zero-length response. Do not
486 crash when server sends invalid content-length header.
487
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000488- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000489
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000490- marshal: When reading a short, sign-extend on platforms where shorts
491 are bigger than 16 bits. When reading a long, repair the unportable
492 sign extension that was being done for 64-bit machines. (It assumed
493 that signed right shift sign-extends.)
494
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000495- operator: Add contains(), invert(), __invert__() as aliases for
496 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000497
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000498- os: Add support for popen2() and popen3() on all platforms where
499 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000500
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000501- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +0000502 clicking on a file in Explorer (or passing the file name to the
503 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000504
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000505- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +0000506 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000507
508- pickle: Now raises ValueError when an invalid pickle that contains
509 a non-string repr where a string repr was expected. This behavior
510 matches cPickle.
511
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000512- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000513
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000514- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000515
516- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000517 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000518 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000519
520- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000521 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000522
523- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +0000524 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +0000525 few cycles during startup since the first call to
526 setdefaultencoding() will initialize the codec registry and the
527 encodings package.
528
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000529- socket: Support for size hint in readlines() method of object returned
530 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000531
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000532- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +0000533 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +0000534 is followed by whitespace.
535
Tim Petersa3a3a032000-11-30 05:22:44 +0000536- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000537
538- struct: Check ranges for bytes and shorts.
539
540- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000541 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000542
543- Tkinter: Image objects are now guaranteed to have unique ids. Set
544 event.delta to zero if Tk version doesn't support mousewheel.
545 Removed some debugging prints.
546
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000547- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000548
Fred Drake67233bc2000-09-26 16:40:27 +0000549- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000550 which works around a bug in Norton AntiVirus 2000 that leads directly
551 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000552
553- xml: New version detection code allows PyXML to override standard
554 XML package if PyXML version is greater than 0.6.1.
555
Fred Drake64bb3802000-09-26 16:21:35 +0000556- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
557 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
558 tree only for nodes which are sufficiently interesting to a specific
559 application. Does not provide the HTML-specific extensions. Still
560 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000561
Fred Drake64bb3802000-09-26 16:21:35 +0000562- xml.sax: SAX 2 support for Python, including all the handler
563 interfaces needed to process XML 1.0 compliant XML. Some
564 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000565
Fred Drake64bb3802000-09-26 16:21:35 +0000566- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
567 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000568
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000569
Jeremy Hylton1b618592000-09-26 05:32:36 +0000570C API
571
572- Add three new convenience functions for module initialization --
573 PyModule_AddObject(), PyModule_AddIntConstant(), and
574 PyModule_AddStringConstant().
575
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000576- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +0000577 removed and add #error to Python.h if NULL isn't defined after
578 #include of stdio.h.
579
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000580- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +0000581 backwards compatibility (at the source level) with old extensions.
582
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000583- A wrapper API was added for signal() and sigaction(). Instead of
584 either function, always use PyOS_getsig() to get a signal handler
585 and PyOS_setsig() to set one. A new convenience typedef
586 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000587
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000588- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +0000589 internal data buffer and size of a string object -- or the default
590 encoded version of a Unicode object.
591
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000592- PyString_Size() and PyString_AsString() accept Unicode objects.
593
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000594- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +0000595 exists). INT_MAX and LONG_MAX will always be defined, even if
596 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000597
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000598- PyFloat_FromString takes a second argument, pend, that was
599 effectively useless. It is now officially useless but preserved for
600 backwards compatibility. If the pend argument is not NULL, *pend is
601 set to NULL.
602
603- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
604 for the attribute name. See note on getattr() above.
605
606- A few bug fixes to argument processing for Unicode.
607 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
608 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
609 pointer to the default encoded string data instead of to the raw
Tim Petersa3a3a032000-11-30 05:22:44 +0000610 UTF-16.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000611
612- Py_BuildValue accepts B format (for bgen-generated code).
613
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000614
Jeremy Hylton1b618592000-09-26 05:32:36 +0000615Internals
616
617- On Unix, fix code for finding Python installation directory so that
618 it works when argv[0] is a relative path.
619
Andrew M. Kuchlinga1099be2000-12-15 01:16:43 +0000620- Added a true unicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000621 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +0000622 rather than by generating a copy of the object.
623
Tim Peters482c0212000-09-26 06:33:09 +0000624- Several of the internal Unicode tables are much smaller now, and
625 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000626
Jeremy Hylton97693b02000-09-26 17:42:51 +0000627- In the garbage collector: Fixed bug in collection of tuples. Fixed
628 bug that caused some instances to be removed from the container set
629 while they were still live. Fixed parsing in gc.set_debug() for
630 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000631
632- Fixed refcount problem in instance deallocation that only occurred
633 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
634
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000635- On Windows, getpythonregpath is now protected against null data in
636 registry key.
637
638- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
Tim Petersa3a3a032000-11-30 05:22:44 +0000639 condition.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000640
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000641
Jeremy Hylton1b618592000-09-26 05:32:36 +0000642Build and platform-specific issues
643
644- Better support of GNU Pth via --with-pth configure option.
645
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000646- Python/C API now properly exposed to dynamically-loaded extension
647 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000648
649- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
650 Don't define MS_SYNC to be zero when it is undefined. Added missing
651 prototypes in posixmodule.c.
652
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000653- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000654 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000655
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000656- Fix largefile support on older NetBSD systems and OpenBSD by adding
657 define for TELL64.
658
659
660Tools and other miscellany
661
662- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
663
664- freeze: The modulefinder now works with 2.0 opcodes.
665
Tim Petersa3a3a032000-11-30 05:22:44 +0000666- IDLE:
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000667 Move hackery of sys.argv until after the Tk instance has been
668 created, which allows the application-specific Tkinter
669 initialization to be executed if present; also pass an explicit
670 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +0000671
Jeremy Hylton1b618592000-09-26 05:32:36 +0000672
673What's new in 2.0 beta 1?
674=========================
675
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000676Source Incompatibilities
677------------------------
678
679None. Note that 1.6 introduced several incompatibilities with 1.5.2,
680such as single-argument append(), connect() and bind(), and changes to
681str(long) and repr(float).
682
683
684Binary Incompatibilities
685------------------------
686
687- Third party extensions built for Python 1.5.x or 1.6 cannot be used
688with Python 2.0; these extensions will have to be rebuilt for Python
6892.0.
690
691- On Windows, attempting to import a third party extension built for
692Python 1.5.x or 1.6 results in an immediate crash; there's not much we
693can do about this. Check your PYTHONPATH environment variable!
694
695- Python bytecode files (*.pyc and *.pyo) are not compatible between
696releases.
697
698
699Overview of Changes Since 1.6
700-----------------------------
701
702There are many new modules (including brand new XML support through
703the xml package, and i18n support through the gettext module); a list
704of all new modules is included below. Lots of bugs have been fixed.
705
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000706The process for making major new changes to the language has changed
707since Python 1.6. Enhancements must now be documented by a Python
708Enhancement Proposal (PEP) before they can be accepted.
709
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000710There are several important syntax enhancements, described in more
711detail below:
712
713 - Augmented assignment, e.g. x += 1
714
715 - List comprehensions, e.g. [x**2 for x in range(10)]
716
717 - Extended import statement, e.g. import Module as Name
718
719 - Extended print statement, e.g. print >> file, "Hello"
720
721Other important changes:
722
723 - Optional collection of cyclical garbage
724
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000725Python Enhancement Proposal (PEP)
726---------------------------------
727
728PEP stands for Python Enhancement Proposal. A PEP is a design
729document providing information to the Python community, or describing
730a new feature for Python. The PEP should provide a concise technical
731specification of the feature and a rationale for the feature.
732
733We intend PEPs to be the primary mechanisms for proposing new
734features, for collecting community input on an issue, and for
735documenting the design decisions that have gone into Python. The PEP
736author is responsible for building consensus within the community and
737documenting dissenting opinions.
738
739The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000740
741Augmented Assignment
742--------------------
743
744This must have been the most-requested feature of the past years!
745Eleven new assignment operators were added:
746
Guido van Rossume905e952000-09-05 12:42:46 +0000747 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000748
749For example,
750
751 A += B
752
753is similar to
754
755 A = A + B
756
757except that A is evaluated only once (relevant when A is something
758like dict[index].attr).
759
760However, if A is a mutable object, A may be modified in place. Thus,
761if A is a number or a string, A += B has the same effect as A = A+B
762(except A is only evaluated once); but if a is a list, A += B has the
763same effect as A.extend(B)!
764
765Classes and built-in object types can override the new operators in
766order to implement the in-place behavior; the not-in-place behavior is
767used automatically as a fallback when an object doesn't implement the
768in-place behavior. For classes, the method name is derived from the
769method name for the corresponding not-in-place operator by inserting
770an 'i' in front of the name, e.g. __iadd__ implements in-place
771__add__.
772
773Augmented assignment was implemented by Thomas Wouters.
774
775
776List Comprehensions
777-------------------
778
779This is a flexible new notation for lists whose elements are computed
780from another list (or lists). The simplest form is:
781
782 [<expression> for <variable> in <sequence>]
783
Guido van Rossum56db0952000-09-06 23:34:25 +0000784For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000785This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000786
787You can also add a condition:
788
789 [<expression> for <variable> in <sequence> if <condition>]
790
791For example, [w for w in words if w == w.lower()] would yield the list
792of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000793than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000794
795You can also have nested for loops and more than one 'if' clause. For
796example, here's a function that flattens a sequence of sequences::
797
798 def flatten(seq):
799 return [x for subseq in seq for x in subseq]
800
801 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
802
803This prints
804
805 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
806
807List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000808Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000809
810
811Extended Import Statement
812-------------------------
813
814Many people have asked for a way to import a module under a different
815name. This can be accomplished like this:
816
817 import foo
818 bar = foo
819 del foo
820
821but this common idiom gets old quickly. A simple extension of the
822import statement now allows this to be written as follows:
823
824 import foo as bar
825
826There's also a variant for 'from ... import':
827
828 from foo import bar as spam
829
830This also works with packages; e.g. you can write this:
831
832 import test.regrtest as regrtest
833
834Note that 'as' is not a new keyword -- it is recognized only in this
835context (this is only possible because the syntax for the import
836statement doesn't involve expressions).
837
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000838Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000839
840
841Extended Print Statement
842------------------------
843
844Easily the most controversial new feature, this extension to the print
845statement adds an option to make the output go to a different file
846than the default sys.stdout.
847
848For example, to write an error message to sys.stderr, you can now
849write:
850
851 print >> sys.stderr, "Error: bad dog!"
852
853As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +0000854evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000855
856 print >> None, "Hello world"
857
858is equivalent to
859
860 print "Hello world"
861
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000862Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000863
864
865Optional Collection of Cyclical Garbage
866---------------------------------------
867
868Python is now equipped with a garbage collector that can hunt down
869cyclical references between Python objects. It's no replacement for
870reference counting; in fact, it depends on the reference counts being
871correct, and decides that a set of objects belong to a cycle if all
872their reference counts can be accounted for from their references to
873each other. This devious scheme was first proposed by Eric Tiedemann,
874and brought to implementation by Neil Schemenauer.
875
876There's a module "gc" that lets you control some parameters of the
877garbage collection. There's also an option to the configure script
878that lets you enable or disable the garbage collection. In 2.0b1,
879it's on by default, so that we (hopefully) can collect decent user
880experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +0000881performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000882off by default in the final 2.0 release.
883
884
885Smaller Changes
886---------------
887
888A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
889map(None, seq1, seq2, ...) when the sequences have the same length;
890i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
891the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000892zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000893
894sys.version_info is a tuple (major, minor, micro, level, serial).
895
896Dictionaries have an odd new method, setdefault(key, default).
897dict.setdefault(key, default) returns dict[key] if it exists; if not,
898it sets dict[key] to default and returns that value. Thus:
899
900 dict.setdefault(key, []).append(item)
901
902does the same work as this common idiom:
903
904 if not dict.has_key(key):
905 dict[key] = []
906 dict[key].append(item)
907
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000908There are two new variants of SyntaxError that are raised for
909indentation-related errors: IndentationError and TabError.
910
911Changed \x to consume exactly two hex digits; see PEP 223. Added \U
912escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000913
914The limits on the size of expressions and file in Python source code
915have been raised from 2**16 to 2**32. Previous versions of Python
916were limited because the maximum argument size the Python VM accepted
917was 2**16. This limited the size of object constructor expressions,
918e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
919limit was raised thanks to a patch by Charles Waldman that effectively
920fixes the problem. It is now much more likely that you will be
921limited by available memory than by an arbitrary limit in Python.
922
923The interpreter's maximum recursion depth can be modified by Python
924programs using sys.getrecursionlimit and sys.setrecursionlimit. This
925limit is the maximum number of recursive calls that can be made by
926Python code. The limit exists to prevent infinite recursion from
927overflowing the C stack and causing a core dump. The default value is
9281000. The maximum safe value for a particular platform can be found
929by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000930
931New Modules and Packages
932------------------------
933
934atexit - for registering functions to be called when Python exits.
935
936imputil - Greg Stein's alternative API for writing custom import
937hooks.
938
939pyexpat - an interface to the Expat XML parser, contributed by Paul
940Prescod.
941
942xml - a new package with XML support code organized (so far) in three
943subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
944would fill a volume. There's a special feature whereby a
945user-installed package named _xmlplus overrides the standard
946xmlpackage; this is intended to give the XML SIG a hook to distribute
947backwards-compatible updates to the standard xml package.
948
949webbrowser - a platform-independent API to launch a web browser.
950
951
Guido van Rossume905e952000-09-05 12:42:46 +0000952Changed Modules
953---------------
954
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000955array -- new methods for array objects: count, extend, index, pop, and
956remove
957
958binascii -- new functions b2a_hex and a2b_hex that convert between
959binary data and its hex representation
960
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000961calendar -- Many new functions that support features including control
962over which day of the week is the first day, returning strings instead
963of printing them. Also new symbolic constants for days of week,
964e.g. MONDAY, ..., SUNDAY.
965
966cgi -- FieldStorage objects have a getvalue method that works like a
967dictionary's get method and returns the value attribute of the object.
968
969ConfigParser -- The parser object has new methods has_option,
970remove_section, remove_option, set, and write. They allow the module
971to be used for writing config files as well as reading them.
972
973ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000974optionally support the RFC 959 REST command.
975
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000976gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000977
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000978httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
979the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000980
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000981locale -- implement getdefaultlocale for Win32 and Macintosh
982
983marshal -- no longer dumps core when marshaling deeply nested or
984recursive data structures
985
986os -- new functions isatty, seteuid, setegid, setreuid, setregid
987
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000988os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
989support under Unix.
990
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000991os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000992
993os.path -- fix semantics of os.path.commonprefix
994
995smtplib -- support for sending very long messages
996
997socket -- new function getfqdn()
998
999readline -- new functions to read, write and truncate history files.
1000The readline section of the library reference manual contains an
1001example.
1002
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001003select -- add interface to poll system call
1004
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001005shutil -- new copyfileobj function
1006
1007SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
1008HTTP server.
1009
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001010Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001011
1012urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +00001013e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001014
1015whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +00001016
1017
1018Obsolete Modules
1019----------------
1020
1021None. However note that 1.6 made a whole slew of modules obsolete:
1022stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
1023poly, zmod, strop, util, whatsound.
1024
1025
1026Changed, New, Obsolete Tools
1027----------------------------
1028
Tim Peters8b092332000-09-05 20:15:25 +00001029None.
Guido van Rossume905e952000-09-05 12:42:46 +00001030
1031
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001032C-level Changes
1033---------------
1034
1035Several cleanup jobs were carried out throughout the source code.
1036
1037All C code was converted to ANSI C; we got rid of all uses of the
1038Py_PROTO() macro, which makes the header files a lot more readable.
1039
1040Most of the portability hacks were moved to a new header file,
1041pyport.h; several other new header files were added and some old
1042header files were removed, in an attempt to create a more rational set
1043of header files. (Few of these ever need to be included explicitly;
1044they are all included by Python.h.)
1045
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001046Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001047and Win64, especially for the new Intel Itanium processor. Mick also
1048added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001049
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001050The C APIs to return an object's size have been update to consistently
1051use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
1052previous versions, the abstract interfaces used PyXXX_Length and the
1053concrete interfaces used PyXXX_Size. The old names,
1054e.g. PyObject_Length, are still available for backwards compatibility
1055at the API level, but are deprecated.
1056
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001057The PyOS_CheckStack function has been implemented on Windows by
1058Fredrik Lundh. It prevents Python from failing with a stack overflow
1059on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001060
1061The GC changes resulted in creation of two new slots on object,
1062tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +00001063the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001064
1065The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +00001066C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001067
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001068PyErr_Format has been updated to automatically calculate the size of
1069the buffer needed to hold the formatted result string. This change
1070prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001071
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001072New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +00001073
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001074PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
1075that are the same as their non-Ex counterparts except they take an
1076extra flag argument that tells them to close the file when done.
1077
1078XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001079
Tim Peters8b092332000-09-05 20:15:25 +00001080
1081Windows Changes
1082---------------
1083
1084New popen2/popen3/peopen4 in os module (see Changed Modules above).
1085
1086os.popen is much more usable on Windows 95 and 98. See Microsoft
1087Knowledge Base article Q150956. The Win9x workaround described there
1088is implemented by the new w9xpopen.exe helper in the root of your
1089Python installation. Note that Python uses this internally; it is not
1090a standalone program.
1091
1092Administrator privileges are no longer required to install Python
1093on Windows NT or Windows 2000. If you have administrator privileges,
1094Python's registry info will be written under HKEY_LOCAL_MACHINE.
1095Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +00001096under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +00001097uses of Python, but will prevent some advanced uses from working
1098(for example, running a Python script as an NT service, or possibly
1099from CGI).
1100
1101[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
1102installer; instead, it installs the needed Tcl/Tk files directly in the
1103Python directory. If you already have a Tcl/Tk installation, this
1104wastes some disk space (about 4 Megs) but avoids problems with
1105conflicting Tcl/Tk installations, and makes it much easier for Python
1106to ensure that Tcl/Tk can find all its files.
1107
1108[This was new in 1.6] The Windows installer now installs by default in
1109\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
1110
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001111
1112Updates to the changes between 1.5.2 and 1.6
1113--------------------------------------------
1114
1115The 1.6 NEWS file can't be changed after the release is done, so here
1116is some late-breaking news:
1117
1118New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
1119and changes to getlocale() and setlocale().
1120
1121The new module is now enabled per default.
1122
1123It is not true that the encodings codecs cannot be used for normal
1124strings: the string.encode() (which is also present on 8-bit strings
1125!) allows using them for 8-bit strings too, e.g. to convert files from
1126cp1252 (Windows) to latin-1 or vice-versa.
1127
1128Japanese codecs are available from Tamito KAJIYAMA:
1129http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
1130
1131
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001132======================================================================