blob: dd3c01f76ae5ad68eb40ae02f3972aa675b73b72 [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 Rossum1cc8f832001-01-12 16:25:08 +00006- Two changes to from...import:
7
8 1) "from M import X" now works even if M is not a real module; it's
9 basically a getattr() operation with AttributeError exceptions
10 changed into ImportError.
11
12 2) "from M import *" now looks for M.__all__ to decide which names to
13 import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
14 filters out names starting with '_' as before. Whether or not
15 __all__ exists, there's no restriction on the type of M.
16
Guido van Rossumf61f1662001-01-10 20:13:55 +000017- File objects have a new method, xreadlines(). This is the fastest
18 way to iterate over all lines in a file:
19
20 for line in file.xreadlines():
21 ...do something to line...
22
23 See the xreadlines module (mentioned below) for how to do this for
24 other file-like objects.
25
26- Even if you don't use file.xreadlines(), you may expect a speedup on
27 line-by-line input. The file.readline() method has been optimized
28 quite a bit in platform-specific ways, both on Windows (using an
29 incredibly complex, but nevertheless thread-safe), and on systems
30 (like Linux) that support flockfile(), getc_unlocked(), and
31 funlockfile(). In addition, the fileinput module, while still slow,
32 has been sped up too, by using file.readlines(sizehint).
33
34- Support for run-time warnings has been added, including a new
35 command line option (-W) to specify the disposition of warnings.
36 See the description of the warnings module below.
37
38- Extensive changes have been made to the coercion code. This mostly
39 affects extension modules (which can now implement mixed-type
40 numerical operators without having to use coercion), but
41 occasionally, in boundary cases the coercion semantics have changed
42 subtly. Since this was a terrible gray area of the language, this
Guido van Rossumae72d872001-01-11 15:00:14 +000043 is considered an improvement. Also note that __rcmp__ is no longer
Guido van Rossumf61f1662001-01-10 20:13:55 +000044 supported -- instead of calling __rcmp__, __cmp__ is called with
45 reversed arguments.
46
Martin v. Löwisbe4c0f52001-01-04 20:30:56 +000047- The interpreter accepts now bytecode files on the command line even
48 if they do not have a .pyc or .pyo extension. On Linux, after executing
49
50 echo ':pyc:M::\x87\xc6\x0d\x0a::/usr/local/bin/python:' > /proc/sys/fs/binfmt_misc/register
51
52 any byte code file can be used as an executable (i.e. as an argument
53 to execve(2)).
54
Tim Peters9940b802000-12-01 07:59:35 +000055- %[xXo] formats of negative Python longs now produce a sign
Tim Petersa3a3a032000-11-30 05:22:44 +000056 character. In 1.6 and earlier, they never produced a sign,
57 and raised an error if the value of the long was too large
58 to fit in a Python int. In 2.0, they produced a sign if and
59 only if too large to fit in an int. This was inconsistent
60 across platforms (because the size of an int varies across
61 platforms), and inconsistent with hex() and oct(). Example:
62
63 >>> "%x" % -0x42L
Tim Peters9940b802000-12-01 07:59:35 +000064 '-42' # in 2.1
Tim Petersa3a3a032000-11-30 05:22:44 +000065 'ffffffbe' # in 2.0 and before, on 32-bit machines
66 >>> hex(-0x42L)
67 '-0x42L' # in all versions of Python
68
Tim Peters9940b802000-12-01 07:59:35 +000069 The behavior of %d formats for negative Python longs remains
70 the same as in 2.0 (although in 1.6 and before, they raised
71 an error if the long didn't fit in a Python int).
72
73 %u formats don't make sense for Python longs, but are allowed
74 and treated the same as %d in 2.1. In 2.0, a negative long
75 formatted via %u produced a sign if and only if too large to
76 fit in an int. In 1.6 and earlier, a negative long formatted
77 via %u raised an error if it was too big to fit in an int.
78
Guido van Rossum3661d392000-12-12 22:10:31 +000079- Dictionary objects have an odd new method, popitem(). This removes
80 an arbitrary item from the dictionary and returns it (in the form of
81 a (key, value) pair). This can be useful for algorithms that use a
82 dictionary as a bag of "to do" items and repeatedly need to pick one
83 item. Such algorithms normally end up running in quadratic time;
84 using popitem() they can usually be made to run in linear time.
85
Tim Peters36cdad12000-12-29 02:06:45 +000086Standard library
87
Martin v. Löwis10a27872001-01-13 09:54:41 +000088- The module site now treats .pth files not only for path configuration,
89 but also supports extensions to the initialization code: Lines starting
90 with import are executed.
91
Guido van Rossumf61f1662001-01-10 20:13:55 +000092- There's a new module, warnings, which implements a mechanism for
93 issuing and filtering warnings. There are some new built-in
94 exceptions that serve as warning categories, and a new command line
95 option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
96 turns warnings into errors). warnings.warn(message[, category])
97 issues a warning message; this can also be called from C as
98 PyErr_Warn(category, message).
99
100- A new module xreadlines was added. This exports a single factory
101 function, xreadlines(). The intention is that this code is the
102 absolutely fastest way to iterate over all lines in an open
103 file(-like) object:
104
105 import xreadlines
106 for line in xreadlines.xreadlines(file):
107 ...do something to line...
108
109 This is equivalent to the previous the speed record holder using
110 file.readlines(sizehint). Note that if file is a real file object
111 (as opposed to a file-like object), this is equivalent:
112
113 for line in file.xreadlines():
114 ...do something to line...
115
Tim Peters36cdad12000-12-29 02:06:45 +0000116- The bisect module has new functions bisect_left, insort_left,
117 bisect_right and insort_right. The old names bisect and insort
118 are now aliases for bisect_right and insort_right. XXX_right
119 and XXX_left methods differ in what happens when the new element
120 compares equal to one or more elements already in the list: the
121 XXX_left methods insert to the left, the XXX_right methods to the
Tim Peters742bb6f2001-01-05 08:05:32 +0000122 right. Code that doesn't care where equal elements end up should
123 continue to use the old, short names ("bisect" and "insort").
Tim Peters36cdad12000-12-29 02:06:45 +0000124
Guido van Rossumf61f1662001-01-10 20:13:55 +0000125- The SocketServer module now sets the allow_reuse_address flag by
126 default in the TCPServer class.
127
128- A new function, sys._getframe(), returns the stack frame pointer of
129 the caller. This is intended only as a building block for
130 higher-level mechanisms such as string interpolation.
131
132Build issues
133
134- On Linux (and possibly other Unix platforms), the readline and
135 _curses modules are automatically configured through
136 Modules/Setup.config. These, and the bsddb module (which was
137 already dynamically configured) are now built as shared libraries by
138 default.
139
140- Python now always uses its own (renamed) implementation of getopt()
141 -- there's too much variation among C library getopt()
142 implementations.
143
144- C++ compilers are better supported; the CXX macro is always set to a
145 C++ compiler if one is found.
Tim Peters36cdad12000-12-29 02:06:45 +0000146
Tim Petersd92dfe02000-12-12 01:18:41 +0000147Windows changes
148
149- select module: By default under Windows, a select() call
150 can specify no more than 64 sockets. Python now boosts
151 this Microsoft default to 512. If you need even more than
152 that, see the MS docs (you'll need to #define FD_SETSIZE
153 and recompile Python from source).
154
Guido van Rossumf61f1662001-01-10 20:13:55 +0000155- Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3
156 subdirectory is no more!
157
Tim Petersa3a3a032000-11-30 05:22:44 +0000158
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000159What's New in Python 2.0?
Fred Drake1a640502000-10-16 20:27:25 +0000160=========================
Guido van Rossum61000331997-08-15 04:39:58 +0000161
Guido van Rossum8ed602b2000-09-01 22:34:33 +0000162Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000163changes are in the file HISTORY. If you are making the jump directly
164from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
165HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +0000166
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000167Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
168the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
169http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +0000170
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000171--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +0000172
173======================================================================
174
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000175What's new in 2.0 (since release candidate 1)?
176==============================================
177
178Standard library
179
180- The copy_reg module was modified to clarify its intended use: to
181 register pickle support for extension types, not for classes.
182 pickle() will raise a TypeError if it is passed a class.
183
184- Fixed a bug in gettext's "normalize and expand" code that prevented
185 it from finding an existing .mo file.
186
187- Restored support for HTTP/0.9 servers in httplib.
188
Tim Peters989b7b92000-10-16 20:24:53 +0000189- The math module was changed to stop raising OverflowError in case of
190 underflow, and return 0 instead in underflow cases. Whether Python
191 used to raise OverflowError in case of underflow was platform-
192 dependent (it did when the platform math library set errno to ERANGE
193 on underflow).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000194
195- Fixed a bug in StringIO that occurred when the file position was not
196 at the end of the file and write() was called with enough data to
197 extend past the end of the file.
198
199- Fixed a bug that caused Tkinter error messages to get lost on
200 Windows. The bug was fixed by replacing direct use of
201 interp->result with Tcl_GetStringResult(interp).
202
203- Fixed bug in urllib2 that caused it to fail when it received an HTTP
204 redirect response.
205
206- Several changes were made to distutils: Some debugging code was
207 removed from util. Fixed the installer used when an external zip
208 program (like WinZip) is not found; the source code for this
209 installer is in Misc/distutils. check_lib() was modified to behave
210 more like AC_CHECK_LIB by add other_libraries() as a parameter. The
211 test for whether installed modules are on sys.path was changed to
212 use both normcase() and normpath().
213
Jeremy Hyltond867a2c2000-10-16 20:41:38 +0000214- Several minor bugs were fixed in the xml package (the minidom,
215 pulldom, expatreader, and saxutils modules).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000216
217- The regression test driver (regrtest.py) behavior when invoked with
218 -l changed: It now reports a count of objects that are recognized as
219 garbage but not freed by the garbage collector.
220
Tim Peters989b7b92000-10-16 20:24:53 +0000221- The regression test for the math module was changed to test
222 exceptional behavior when the test is run in verbose mode. Python
223 cannot yet guarantee consistent exception behavior across platforms,
224 so the exception part of test_math is run only in verbose mode, and
225 may fail on your platform.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000226
227Internals
228
229- PyOS_CheckStack() has been disabled on Win64, where it caused
230 test_sre to fail.
231
232Build issues
233
234- Changed compiler flags, so that gcc is always invoked with -Wall and
235 -Wstrict-prototypes. Users compiling Python with GCC should see
236 exactly one warning, except if they have passed configure the
Tim Peters989b7b92000-10-16 20:24:53 +0000237 --with-pydebug flag. The expected warning is for getopt() in
Tim Petersadfb94f2000-10-16 20:51:33 +0000238 Modules/main.c. This warning will be fixed for Python 2.1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000239
Tim Petersa3a3a032000-11-30 05:22:44 +0000240- Fixed configure to add -threads argument during linking on OSF1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000241
242Tools and other miscellany
243
244- The compiler in Tools/compiler was updated to support the new
245 language features introduced in 2.0: extended print statement, list
246 comprehensions, and augmented assignments. The new compiler should
247 also be backwards compatible with Python 1.5.2; the compiler will
248 always generate code for the version of the interpreter it runs
Tim Petersa3a3a032000-11-30 05:22:44 +0000249 under.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000250
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000251What's new in 2.0 release candidate 1 (since beta 2)?
252=====================================================
253
Jeremy Hylton6040aaa2000-10-09 21:27:22 +0000254What is release candidate 1?
255
256We believe that release candidate 1 will fix all known bugs that we
257intend to fix for the 2.0 final release. This release should be a bit
258more stable than the previous betas. We would like to see even more
259widespread testing before the final release, so we are producing this
260release candidate. The final release will be exactly the same unless
261any show-stopping (or brown bag) bugs are found by testers of the
262release candidate.
263
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000264All the changes since the last beta release are bug fixes or changes
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000265to support building Python for specific platforms.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000266
267Core language, builtins, and interpreter
268
269- A bug that caused crashes when __coerce__ was used with augmented
270 assignment, e.g. +=, was fixed.
271
272- Raise ZeroDivisionError when raising zero to a negative number,
273 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
274 power operator and the result of math.pow(0.0, -2.0) will vary by
275 platform. On Linux, it raises a ValueError.
276
277- A bug in Unicode string interpolation was fixed that occasionally
278 caused errors with formats including "%%". For example, the
279 following expression "%% %s" % u"abc" no longer raises a TypeError.
280
281- Compilation of deeply nested expressions raises MemoryError instead
282 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
283
284- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
285 rendering them useless. They are now written in binary mode again.
286
287Standard library
288
289- Keyword arguments are now accepted for most pattern and match object
290 methods in SRE, the standard regular expression engine.
291
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000292- In SRE, fixed error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +0000293 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000294
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000295- Several bugs in the Unicode handling and error handling in _tkinter
296 were fixed.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000297
298- Fix memory management errors in Merge() and Tkapp_Call() routines.
299
300- Several changes were made to cStringIO to make it compatible with
301 the file-like object interface and with StringIO. If operations are
302 performed on a closed object, an exception is raised. The truncate
303 method now accepts a position argument and readline accepts a size
Tim Petersa3a3a032000-11-30 05:22:44 +0000304 argument.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000305
306- There were many changes made to the linuxaudiodev module and its
307 test suite; as a result, a short, unexpected audio sample should now
Tim Petersa3a3a032000-11-30 05:22:44 +0000308 play when the regression test is run.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000309
310 Note that this module is named poorly, because it should work
311 correctly on any platform that supports the Open Sound System
Tim Petersa3a3a032000-11-30 05:22:44 +0000312 (OSS).
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000313
314 The module now raises exceptions when errors occur instead of
315 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
316 audio) and defines a getptr() method that calls the
317 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
318
319- The library_version attribute, introduced in an earlier beta, was
320 removed because it can not be supported with early versions of the C
321 readline library, which provides no way to determine the version at
322 compile-time.
323
324- The binascii module is now enabled on Win64.
325
Tim Peters46446d62000-10-09 21:19:31 +0000326- tokenize.py no longer suffers "recursion depth" errors when parsing
327 programs with very long string literals.
328
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000329Internals
330
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000331- Fixed several buffer overflow vulnerabilities in calculate_path(),
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000332 which is called when the interpreter starts up to determine where
333 the standard library is installed. These vulnerabilities affect all
334 previous versions of Python and can be exploited by setting very
335 long values for PYTHONHOME or argv[0]. The risk is greatest for a
336 setuid Python script, although use of the wrapper in
337 Misc/setuid-prog.c will eliminate the vulnerability.
338
339- Fixed garbage collection bugs in instance creation that were
340 triggered when errors occurred during initialization. The solution,
341 applied in cPickle and in PyInstance_New(), is to call
342 PyObject_GC_Init() after the initialization of the object's
343 container attributes is complete.
344
345- pyexpat adds definitions of PyModule_AddStringConstant and
346 PyModule_AddObject if the Python version is less than 2.0, which
347 provides compatibility with PyXML on Python 1.5.2.
348
349- If the platform has a bogus definition for LONG_BIT (the number of
350 bits in a long), an error will be reported at compile time.
351
352- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
353 collection crashes and possibly other, unreported crashes.
354
355- Fixed a memory leak in _PyUnicode_Fini().
356
357Build issues
358
359- configure now accepts a --with-suffix option that specifies the
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000360 executable suffix. This is useful for builds on Cygwin and Mac OS
Tim Petersa3a3a032000-11-30 05:22:44 +0000361 X, for example.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000362
363- The mmap.PAGESIZE constant is now initialized using sysconf when
364 possible, which eliminates a dependency on -lucb for Reliant UNIX.
365
366- The md5 file should now compile on all platforms.
367
368- The select module now compiles on platforms that do not define
369 POLLRDNORM and related constants.
370
371- Darwin (Mac OS X): Initial support for static builds on this
Tim Petersa3a3a032000-11-30 05:22:44 +0000372 platform.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000373
Jeremy Hylton10921202000-10-09 18:34:12 +0000374- BeOS: A number of changes were made to the build and installation
375 process. ar-fake now operates on a directory of object files.
376 dl_export.h is gone, and its macros now appear on the mwcc command
377 line during build on PPC BeOS.
378
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000379- Platform directory in lib/python2.0 is "plat-beos5" (or
Jeremy Hylton10921202000-10-09 18:34:12 +0000380 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000381
382- Cygwin: Support for shared libraries, Tkinter, and sockets.
383
384- SunOS 4.1.4_JL: Fix test for directory existence in configure.
385
386Tools and other miscellany
387
388- Removed debugging prints from main used with freeze.
389
Tim Peters46446d62000-10-09 21:19:31 +0000390- IDLE auto-indent no longer crashes when it encounters Unicode
391 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000392
393What's new in 2.0 beta 2 (since beta 1)?
394========================================
395
396Core language, builtins, and interpreter
397
Tim Peters482c0212000-09-26 06:33:09 +0000398- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000399 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000400
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000401- Add -h and -V command line options to print the usage message and
402 Python version number and exit immediately.
403
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000404- eval() and exec accept Unicode objects as code parameters.
405
406- getattr() and setattr() now also accept Unicode objects for the
407 attribute name, which are converted to strings using the default
408 encoding before lookup.
409
410- Multiplication on string and Unicode now does proper bounds
411 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
412 string is too long."
413
414- Better error message when continue is found in try statement in a
Tim Petersa3a3a032000-11-30 05:22:44 +0000415 loop.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000416
Jeremy Hylton1b618592000-09-26 05:32:36 +0000417
418Standard library and extensions
419
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000420- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +0000421 argument checking; it still takes no arguments.
422
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000423- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000424
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000425- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000426
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000427- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000428
429- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000430 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000431
432- copy: Copy Unicode objects atomically.
433
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000434- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000435
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000436- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000437
Fred Drake67233bc2000-09-26 16:40:27 +0000438- dbm: Add get() and setdefault() methods to dbm object. Add constant
439 `library' to module that names the library used. Added doc strings
440 and method names to error messages. Uses configure to determine
441 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
442 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000443
444- distutils: Update to version 0.9.3.
445
446- dl: Add several dl.RTLD_ constants.
447
448- fpectl: Now supported on FreeBSD.
449
450- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
451 found by the collector will be saved in gc.garbage. This is useful
452 for debugging a program that creates reference cycles.
453
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000454- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +0000455 of HTTP class. Do not close socket on zero-length response. Do not
456 crash when server sends invalid content-length header.
457
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000458- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000459
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000460- marshal: When reading a short, sign-extend on platforms where shorts
461 are bigger than 16 bits. When reading a long, repair the unportable
462 sign extension that was being done for 64-bit machines. (It assumed
463 that signed right shift sign-extends.)
464
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000465- operator: Add contains(), invert(), __invert__() as aliases for
466 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000467
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000468- os: Add support for popen2() and popen3() on all platforms where
469 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000470
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000471- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +0000472 clicking on a file in Explorer (or passing the file name to the
473 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000474
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000475- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +0000476 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000477
478- pickle: Now raises ValueError when an invalid pickle that contains
479 a non-string repr where a string repr was expected. This behavior
480 matches cPickle.
481
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000482- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000483
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000484- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000485
486- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000487 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000488 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000489
490- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000491 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000492
493- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +0000494 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +0000495 few cycles during startup since the first call to
496 setdefaultencoding() will initialize the codec registry and the
497 encodings package.
498
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000499- socket: Support for size hint in readlines() method of object returned
500 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000501
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000502- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +0000503 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +0000504 is followed by whitespace.
505
Tim Petersa3a3a032000-11-30 05:22:44 +0000506- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000507
508- struct: Check ranges for bytes and shorts.
509
510- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000511 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000512
513- Tkinter: Image objects are now guaranteed to have unique ids. Set
514 event.delta to zero if Tk version doesn't support mousewheel.
515 Removed some debugging prints.
516
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000517- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000518
Fred Drake67233bc2000-09-26 16:40:27 +0000519- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000520 which works around a bug in Norton AntiVirus 2000 that leads directly
521 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000522
523- xml: New version detection code allows PyXML to override standard
524 XML package if PyXML version is greater than 0.6.1.
525
Fred Drake64bb3802000-09-26 16:21:35 +0000526- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
527 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
528 tree only for nodes which are sufficiently interesting to a specific
529 application. Does not provide the HTML-specific extensions. Still
530 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000531
Fred Drake64bb3802000-09-26 16:21:35 +0000532- xml.sax: SAX 2 support for Python, including all the handler
533 interfaces needed to process XML 1.0 compliant XML. Some
534 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000535
Fred Drake64bb3802000-09-26 16:21:35 +0000536- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
537 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000538
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000539
Jeremy Hylton1b618592000-09-26 05:32:36 +0000540C API
541
542- Add three new convenience functions for module initialization --
543 PyModule_AddObject(), PyModule_AddIntConstant(), and
544 PyModule_AddStringConstant().
545
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000546- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +0000547 removed and add #error to Python.h if NULL isn't defined after
548 #include of stdio.h.
549
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000550- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +0000551 backwards compatibility (at the source level) with old extensions.
552
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000553- A wrapper API was added for signal() and sigaction(). Instead of
554 either function, always use PyOS_getsig() to get a signal handler
555 and PyOS_setsig() to set one. A new convenience typedef
556 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000557
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000558- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +0000559 internal data buffer and size of a string object -- or the default
560 encoded version of a Unicode object.
561
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000562- PyString_Size() and PyString_AsString() accept Unicode objects.
563
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000564- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +0000565 exists). INT_MAX and LONG_MAX will always be defined, even if
566 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000567
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000568- PyFloat_FromString takes a second argument, pend, that was
569 effectively useless. It is now officially useless but preserved for
570 backwards compatibility. If the pend argument is not NULL, *pend is
571 set to NULL.
572
573- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
574 for the attribute name. See note on getattr() above.
575
576- A few bug fixes to argument processing for Unicode.
577 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
578 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
579 pointer to the default encoded string data instead of to the raw
Tim Petersa3a3a032000-11-30 05:22:44 +0000580 UTF-16.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000581
582- Py_BuildValue accepts B format (for bgen-generated code).
583
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000584
Jeremy Hylton1b618592000-09-26 05:32:36 +0000585Internals
586
587- On Unix, fix code for finding Python installation directory so that
588 it works when argv[0] is a relative path.
589
Andrew M. Kuchlinga1099be2000-12-15 01:16:43 +0000590- Added a true unicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000591 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +0000592 rather than by generating a copy of the object.
593
Tim Peters482c0212000-09-26 06:33:09 +0000594- Several of the internal Unicode tables are much smaller now, and
595 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000596
Jeremy Hylton97693b02000-09-26 17:42:51 +0000597- In the garbage collector: Fixed bug in collection of tuples. Fixed
598 bug that caused some instances to be removed from the container set
599 while they were still live. Fixed parsing in gc.set_debug() for
600 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000601
602- Fixed refcount problem in instance deallocation that only occurred
603 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
604
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000605- On Windows, getpythonregpath is now protected against null data in
606 registry key.
607
608- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
Tim Petersa3a3a032000-11-30 05:22:44 +0000609 condition.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000610
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000611
Jeremy Hylton1b618592000-09-26 05:32:36 +0000612Build and platform-specific issues
613
614- Better support of GNU Pth via --with-pth configure option.
615
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000616- Python/C API now properly exposed to dynamically-loaded extension
617 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000618
619- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
620 Don't define MS_SYNC to be zero when it is undefined. Added missing
621 prototypes in posixmodule.c.
622
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000623- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000624 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000625
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000626- Fix largefile support on older NetBSD systems and OpenBSD by adding
627 define for TELL64.
628
629
630Tools and other miscellany
631
632- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
633
634- freeze: The modulefinder now works with 2.0 opcodes.
635
Tim Petersa3a3a032000-11-30 05:22:44 +0000636- IDLE:
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000637 Move hackery of sys.argv until after the Tk instance has been
638 created, which allows the application-specific Tkinter
639 initialization to be executed if present; also pass an explicit
640 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +0000641
Jeremy Hylton1b618592000-09-26 05:32:36 +0000642
643What's new in 2.0 beta 1?
644=========================
645
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000646Source Incompatibilities
647------------------------
648
649None. Note that 1.6 introduced several incompatibilities with 1.5.2,
650such as single-argument append(), connect() and bind(), and changes to
651str(long) and repr(float).
652
653
654Binary Incompatibilities
655------------------------
656
657- Third party extensions built for Python 1.5.x or 1.6 cannot be used
658with Python 2.0; these extensions will have to be rebuilt for Python
6592.0.
660
661- On Windows, attempting to import a third party extension built for
662Python 1.5.x or 1.6 results in an immediate crash; there's not much we
663can do about this. Check your PYTHONPATH environment variable!
664
665- Python bytecode files (*.pyc and *.pyo) are not compatible between
666releases.
667
668
669Overview of Changes Since 1.6
670-----------------------------
671
672There are many new modules (including brand new XML support through
673the xml package, and i18n support through the gettext module); a list
674of all new modules is included below. Lots of bugs have been fixed.
675
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000676The process for making major new changes to the language has changed
677since Python 1.6. Enhancements must now be documented by a Python
678Enhancement Proposal (PEP) before they can be accepted.
679
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000680There are several important syntax enhancements, described in more
681detail below:
682
683 - Augmented assignment, e.g. x += 1
684
685 - List comprehensions, e.g. [x**2 for x in range(10)]
686
687 - Extended import statement, e.g. import Module as Name
688
689 - Extended print statement, e.g. print >> file, "Hello"
690
691Other important changes:
692
693 - Optional collection of cyclical garbage
694
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000695Python Enhancement Proposal (PEP)
696---------------------------------
697
698PEP stands for Python Enhancement Proposal. A PEP is a design
699document providing information to the Python community, or describing
700a new feature for Python. The PEP should provide a concise technical
701specification of the feature and a rationale for the feature.
702
703We intend PEPs to be the primary mechanisms for proposing new
704features, for collecting community input on an issue, and for
705documenting the design decisions that have gone into Python. The PEP
706author is responsible for building consensus within the community and
707documenting dissenting opinions.
708
709The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000710
711Augmented Assignment
712--------------------
713
714This must have been the most-requested feature of the past years!
715Eleven new assignment operators were added:
716
Guido van Rossume905e952000-09-05 12:42:46 +0000717 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000718
719For example,
720
721 A += B
722
723is similar to
724
725 A = A + B
726
727except that A is evaluated only once (relevant when A is something
728like dict[index].attr).
729
730However, if A is a mutable object, A may be modified in place. Thus,
731if A is a number or a string, A += B has the same effect as A = A+B
732(except A is only evaluated once); but if a is a list, A += B has the
733same effect as A.extend(B)!
734
735Classes and built-in object types can override the new operators in
736order to implement the in-place behavior; the not-in-place behavior is
737used automatically as a fallback when an object doesn't implement the
738in-place behavior. For classes, the method name is derived from the
739method name for the corresponding not-in-place operator by inserting
740an 'i' in front of the name, e.g. __iadd__ implements in-place
741__add__.
742
743Augmented assignment was implemented by Thomas Wouters.
744
745
746List Comprehensions
747-------------------
748
749This is a flexible new notation for lists whose elements are computed
750from another list (or lists). The simplest form is:
751
752 [<expression> for <variable> in <sequence>]
753
Guido van Rossum56db0952000-09-06 23:34:25 +0000754For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000755This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000756
757You can also add a condition:
758
759 [<expression> for <variable> in <sequence> if <condition>]
760
761For example, [w for w in words if w == w.lower()] would yield the list
762of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000763than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000764
765You can also have nested for loops and more than one 'if' clause. For
766example, here's a function that flattens a sequence of sequences::
767
768 def flatten(seq):
769 return [x for subseq in seq for x in subseq]
770
771 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
772
773This prints
774
775 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
776
777List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000778Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000779
780
781Extended Import Statement
782-------------------------
783
784Many people have asked for a way to import a module under a different
785name. This can be accomplished like this:
786
787 import foo
788 bar = foo
789 del foo
790
791but this common idiom gets old quickly. A simple extension of the
792import statement now allows this to be written as follows:
793
794 import foo as bar
795
796There's also a variant for 'from ... import':
797
798 from foo import bar as spam
799
800This also works with packages; e.g. you can write this:
801
802 import test.regrtest as regrtest
803
804Note that 'as' is not a new keyword -- it is recognized only in this
805context (this is only possible because the syntax for the import
806statement doesn't involve expressions).
807
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000808Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000809
810
811Extended Print Statement
812------------------------
813
814Easily the most controversial new feature, this extension to the print
815statement adds an option to make the output go to a different file
816than the default sys.stdout.
817
818For example, to write an error message to sys.stderr, you can now
819write:
820
821 print >> sys.stderr, "Error: bad dog!"
822
823As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +0000824evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000825
826 print >> None, "Hello world"
827
828is equivalent to
829
830 print "Hello world"
831
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000832Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000833
834
835Optional Collection of Cyclical Garbage
836---------------------------------------
837
838Python is now equipped with a garbage collector that can hunt down
839cyclical references between Python objects. It's no replacement for
840reference counting; in fact, it depends on the reference counts being
841correct, and decides that a set of objects belong to a cycle if all
842their reference counts can be accounted for from their references to
843each other. This devious scheme was first proposed by Eric Tiedemann,
844and brought to implementation by Neil Schemenauer.
845
846There's a module "gc" that lets you control some parameters of the
847garbage collection. There's also an option to the configure script
848that lets you enable or disable the garbage collection. In 2.0b1,
849it's on by default, so that we (hopefully) can collect decent user
850experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +0000851performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000852off by default in the final 2.0 release.
853
854
855Smaller Changes
856---------------
857
858A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
859map(None, seq1, seq2, ...) when the sequences have the same length;
860i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
861the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000862zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000863
864sys.version_info is a tuple (major, minor, micro, level, serial).
865
866Dictionaries have an odd new method, setdefault(key, default).
867dict.setdefault(key, default) returns dict[key] if it exists; if not,
868it sets dict[key] to default and returns that value. Thus:
869
870 dict.setdefault(key, []).append(item)
871
872does the same work as this common idiom:
873
874 if not dict.has_key(key):
875 dict[key] = []
876 dict[key].append(item)
877
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000878There are two new variants of SyntaxError that are raised for
879indentation-related errors: IndentationError and TabError.
880
881Changed \x to consume exactly two hex digits; see PEP 223. Added \U
882escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000883
884The limits on the size of expressions and file in Python source code
885have been raised from 2**16 to 2**32. Previous versions of Python
886were limited because the maximum argument size the Python VM accepted
887was 2**16. This limited the size of object constructor expressions,
888e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
889limit was raised thanks to a patch by Charles Waldman that effectively
890fixes the problem. It is now much more likely that you will be
891limited by available memory than by an arbitrary limit in Python.
892
893The interpreter's maximum recursion depth can be modified by Python
894programs using sys.getrecursionlimit and sys.setrecursionlimit. This
895limit is the maximum number of recursive calls that can be made by
896Python code. The limit exists to prevent infinite recursion from
897overflowing the C stack and causing a core dump. The default value is
8981000. The maximum safe value for a particular platform can be found
899by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000900
901New Modules and Packages
902------------------------
903
904atexit - for registering functions to be called when Python exits.
905
906imputil - Greg Stein's alternative API for writing custom import
907hooks.
908
909pyexpat - an interface to the Expat XML parser, contributed by Paul
910Prescod.
911
912xml - a new package with XML support code organized (so far) in three
913subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
914would fill a volume. There's a special feature whereby a
915user-installed package named _xmlplus overrides the standard
916xmlpackage; this is intended to give the XML SIG a hook to distribute
917backwards-compatible updates to the standard xml package.
918
919webbrowser - a platform-independent API to launch a web browser.
920
921
Guido van Rossume905e952000-09-05 12:42:46 +0000922Changed Modules
923---------------
924
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000925array -- new methods for array objects: count, extend, index, pop, and
926remove
927
928binascii -- new functions b2a_hex and a2b_hex that convert between
929binary data and its hex representation
930
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000931calendar -- Many new functions that support features including control
932over which day of the week is the first day, returning strings instead
933of printing them. Also new symbolic constants for days of week,
934e.g. MONDAY, ..., SUNDAY.
935
936cgi -- FieldStorage objects have a getvalue method that works like a
937dictionary's get method and returns the value attribute of the object.
938
939ConfigParser -- The parser object has new methods has_option,
940remove_section, remove_option, set, and write. They allow the module
941to be used for writing config files as well as reading them.
942
943ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000944optionally support the RFC 959 REST command.
945
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000946gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000947
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000948httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
949the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000950
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000951locale -- implement getdefaultlocale for Win32 and Macintosh
952
953marshal -- no longer dumps core when marshaling deeply nested or
954recursive data structures
955
956os -- new functions isatty, seteuid, setegid, setreuid, setregid
957
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000958os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
959support under Unix.
960
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000961os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000962
963os.path -- fix semantics of os.path.commonprefix
964
965smtplib -- support for sending very long messages
966
967socket -- new function getfqdn()
968
969readline -- new functions to read, write and truncate history files.
970The readline section of the library reference manual contains an
971example.
972
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000973select -- add interface to poll system call
974
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000975shutil -- new copyfileobj function
976
977SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
978HTTP server.
979
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000980Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000981
982urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +0000983e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000984
985whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +0000986
987
988Obsolete Modules
989----------------
990
991None. However note that 1.6 made a whole slew of modules obsolete:
992stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
993poly, zmod, strop, util, whatsound.
994
995
996Changed, New, Obsolete Tools
997----------------------------
998
Tim Peters8b092332000-09-05 20:15:25 +0000999None.
Guido van Rossume905e952000-09-05 12:42:46 +00001000
1001
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001002C-level Changes
1003---------------
1004
1005Several cleanup jobs were carried out throughout the source code.
1006
1007All C code was converted to ANSI C; we got rid of all uses of the
1008Py_PROTO() macro, which makes the header files a lot more readable.
1009
1010Most of the portability hacks were moved to a new header file,
1011pyport.h; several other new header files were added and some old
1012header files were removed, in an attempt to create a more rational set
1013of header files. (Few of these ever need to be included explicitly;
1014they are all included by Python.h.)
1015
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001016Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001017and Win64, especially for the new Intel Itanium processor. Mick also
1018added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001019
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001020The C APIs to return an object's size have been update to consistently
1021use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
1022previous versions, the abstract interfaces used PyXXX_Length and the
1023concrete interfaces used PyXXX_Size. The old names,
1024e.g. PyObject_Length, are still available for backwards compatibility
1025at the API level, but are deprecated.
1026
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001027The PyOS_CheckStack function has been implemented on Windows by
1028Fredrik Lundh. It prevents Python from failing with a stack overflow
1029on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001030
1031The GC changes resulted in creation of two new slots on object,
1032tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +00001033the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001034
1035The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +00001036C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001037
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001038PyErr_Format has been updated to automatically calculate the size of
1039the buffer needed to hold the formatted result string. This change
1040prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001041
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001042New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +00001043
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001044PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
1045that are the same as their non-Ex counterparts except they take an
1046extra flag argument that tells them to close the file when done.
1047
1048XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001049
Tim Peters8b092332000-09-05 20:15:25 +00001050
1051Windows Changes
1052---------------
1053
1054New popen2/popen3/peopen4 in os module (see Changed Modules above).
1055
1056os.popen is much more usable on Windows 95 and 98. See Microsoft
1057Knowledge Base article Q150956. The Win9x workaround described there
1058is implemented by the new w9xpopen.exe helper in the root of your
1059Python installation. Note that Python uses this internally; it is not
1060a standalone program.
1061
1062Administrator privileges are no longer required to install Python
1063on Windows NT or Windows 2000. If you have administrator privileges,
1064Python's registry info will be written under HKEY_LOCAL_MACHINE.
1065Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +00001066under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +00001067uses of Python, but will prevent some advanced uses from working
1068(for example, running a Python script as an NT service, or possibly
1069from CGI).
1070
1071[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
1072installer; instead, it installs the needed Tcl/Tk files directly in the
1073Python directory. If you already have a Tcl/Tk installation, this
1074wastes some disk space (about 4 Megs) but avoids problems with
1075conflicting Tcl/Tk installations, and makes it much easier for Python
1076to ensure that Tcl/Tk can find all its files.
1077
1078[This was new in 1.6] The Windows installer now installs by default in
1079\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
1080
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001081
1082Updates to the changes between 1.5.2 and 1.6
1083--------------------------------------------
1084
1085The 1.6 NEWS file can't be changed after the release is done, so here
1086is some late-breaking news:
1087
1088New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
1089and changes to getlocale() and setlocale().
1090
1091The new module is now enabled per default.
1092
1093It is not true that the encodings codecs cannot be used for normal
1094strings: the string.encode() (which is also present on 8-bit strings
1095!) allows using them for 8-bit strings too, e.g. to convert files from
1096cp1252 (Windows) to latin-1 or vice-versa.
1097
1098Japanese codecs are available from Tamito KAJIYAMA:
1099http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
1100
1101
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001102======================================================================