blob: 8c68529a2deefac4a8ab31763b5eeb08670798f1 [file] [log] [blame]
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001What's New in Python 2.0c1?
Guido van Rossum61000331997-08-15 04:39:58 +00002===========================
3
Guido van Rossum8ed602b2000-09-01 22:34:33 +00004Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +00005changes are in the file HISTORY. If you are making the jump directly
6from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
7HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +00008
Guido van Rossumf2ffce02000-09-05 04:38:34 +00009Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
10the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
11http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +000012
Guido van Rossumf2ffce02000-09-05 04:38:34 +000013--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +000014
15======================================================================
16
Jeremy Hyltoned9e6442000-10-09 18:26:42 +000017What's new in 2.0 release candidate 1 (since beta 2)?
18=====================================================
19
20All the changes since the last beta release are bug fixes or changes
21to build support for specific platforms.
22
23Core language, builtins, and interpreter
24
25- A bug that caused crashes when __coerce__ was used with augmented
26 assignment, e.g. +=, was fixed.
27
28- Raise ZeroDivisionError when raising zero to a negative number,
29 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
30 power operator and the result of math.pow(0.0, -2.0) will vary by
31 platform. On Linux, it raises a ValueError.
32
33- A bug in Unicode string interpolation was fixed that occasionally
34 caused errors with formats including "%%". For example, the
35 following expression "%% %s" % u"abc" no longer raises a TypeError.
36
37- Compilation of deeply nested expressions raises MemoryError instead
38 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
39
40- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
41 rendering them useless. They are now written in binary mode again.
42
43Standard library
44
45- Keyword arguments are now accepted for most pattern and match object
46 methods in SRE, the standard regular expression engine.
47
48- In SRE, fix error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +000049 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +000050
51- Tkinter now supports Unicode strings and will set a Python exception
52 when an error occurs handling a specific Unicode string.
53
54- Fix memory management errors in Merge() and Tkapp_Call() routines.
55
56- Several changes were made to cStringIO to make it compatible with
57 the file-like object interface and with StringIO. If operations are
58 performed on a closed object, an exception is raised. The truncate
59 method now accepts a position argument and readline accepts a size
60 argument.
61
62- There were many changes made to the linuxaudiodev module and its
63 test suite; as a result, a short, unexpected audio sample should now
64 play when the regression test is run.
65
66 Note that this module is named poorly, because it should work
67 correctly on any platform that supports the Open Sound System
68 (OSS).
69
70 The module now raises exceptions when errors occur instead of
71 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
72 audio) and defines a getptr() method that calls the
73 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
74
75- The library_version attribute, introduced in an earlier beta, was
76 removed because it can not be supported with early versions of the C
77 readline library, which provides no way to determine the version at
78 compile-time.
79
80- The binascii module is now enabled on Win64.
81
Tim Peters46446d62000-10-09 21:19:31 +000082- tokenize.py no longer suffers "recursion depth" errors when parsing
83 programs with very long string literals.
84
Jeremy Hyltoned9e6442000-10-09 18:26:42 +000085Internals
86
87- Fix several buffer overflow vulnerabilities in calculate_path(),
88 which is called when the interpreter starts up to determine where
89 the standard library is installed. These vulnerabilities affect all
90 previous versions of Python and can be exploited by setting very
91 long values for PYTHONHOME or argv[0]. The risk is greatest for a
92 setuid Python script, although use of the wrapper in
93 Misc/setuid-prog.c will eliminate the vulnerability.
94
95- Fixed garbage collection bugs in instance creation that were
96 triggered when errors occurred during initialization. The solution,
97 applied in cPickle and in PyInstance_New(), is to call
98 PyObject_GC_Init() after the initialization of the object's
99 container attributes is complete.
100
101- pyexpat adds definitions of PyModule_AddStringConstant and
102 PyModule_AddObject if the Python version is less than 2.0, which
103 provides compatibility with PyXML on Python 1.5.2.
104
105- If the platform has a bogus definition for LONG_BIT (the number of
106 bits in a long), an error will be reported at compile time.
107
108- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
109 collection crashes and possibly other, unreported crashes.
110
111- Fixed a memory leak in _PyUnicode_Fini().
112
113Build issues
114
115- configure now accepts a --with-suffix option that specifies the
116 executable. This is useful for builds on Cygwin and Mac OS X, for
117 example.
118
119- The mmap.PAGESIZE constant is now initialized using sysconf when
120 possible, which eliminates a dependency on -lucb for Reliant UNIX.
121
122- The md5 file should now compile on all platforms.
123
124- The select module now compiles on platforms that do not define
125 POLLRDNORM and related constants.
126
127- Darwin (Mac OS X): Initial support for static builds on this
128 platform.
129
Jeremy Hylton10921202000-10-09 18:34:12 +0000130- BeOS: A number of changes were made to the build and installation
131 process. ar-fake now operates on a directory of object files.
132 dl_export.h is gone, and its macros now appear on the mwcc command
133 line during build on PPC BeOS.
134
135 Platform directory in lib/python2.0 is "plat-beos5" (or
136 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000137
138- Cygwin: Support for shared libraries, Tkinter, and sockets.
139
140- SunOS 4.1.4_JL: Fix test for directory existence in configure.
141
142Tools and other miscellany
143
144- Removed debugging prints from main used with freeze.
145
Tim Peters46446d62000-10-09 21:19:31 +0000146- IDLE auto-indent no longer crashes when it encounters Unicode
147 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000148
149What's new in 2.0 beta 2 (since beta 1)?
150========================================
151
152Core language, builtins, and interpreter
153
Tim Peters482c0212000-09-26 06:33:09 +0000154- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000155 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000156
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000157- Add -h and -V command line options to print the usage message and
158 Python version number and exit immediately.
159
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000160- eval() and exec accept Unicode objects as code parameters.
161
162- getattr() and setattr() now also accept Unicode objects for the
163 attribute name, which are converted to strings using the default
164 encoding before lookup.
165
166- Multiplication on string and Unicode now does proper bounds
167 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
168 string is too long."
169
170- Better error message when continue is found in try statement in a
171 loop.
172
Jeremy Hylton1b618592000-09-26 05:32:36 +0000173
174Standard library and extensions
175
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000176- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +0000177 argument checking; it still takes no arguments.
178
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000179- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000180
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000181- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000182
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000183- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000184
185- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000186 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000187
188- copy: Copy Unicode objects atomically.
189
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000190- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000191
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000192- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000193
Fred Drake67233bc2000-09-26 16:40:27 +0000194- dbm: Add get() and setdefault() methods to dbm object. Add constant
195 `library' to module that names the library used. Added doc strings
196 and method names to error messages. Uses configure to determine
197 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
198 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000199
200- distutils: Update to version 0.9.3.
201
202- dl: Add several dl.RTLD_ constants.
203
204- fpectl: Now supported on FreeBSD.
205
206- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
207 found by the collector will be saved in gc.garbage. This is useful
208 for debugging a program that creates reference cycles.
209
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000210- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +0000211 of HTTP class. Do not close socket on zero-length response. Do not
212 crash when server sends invalid content-length header.
213
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000214- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000215
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000216- marshal: When reading a short, sign-extend on platforms where shorts
217 are bigger than 16 bits. When reading a long, repair the unportable
218 sign extension that was being done for 64-bit machines. (It assumed
219 that signed right shift sign-extends.)
220
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000221- operator: Add contains(), invert(), __invert__() as aliases for
222 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000223
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000224- os: Add support for popen2() and popen3() on all platforms where
225 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000226
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000227- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +0000228 clicking on a file in Explorer (or passing the file name to the
229 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000230
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000231- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +0000232 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000233
234- pickle: Now raises ValueError when an invalid pickle that contains
235 a non-string repr where a string repr was expected. This behavior
236 matches cPickle.
237
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000238- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000239
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000240- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000241
242- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000243 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000244 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000245
246- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000247 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000248
249- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +0000250 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +0000251 few cycles during startup since the first call to
252 setdefaultencoding() will initialize the codec registry and the
253 encodings package.
254
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000255- socket: Support for size hint in readlines() method of object returned
256 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000257
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000258- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +0000259 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +0000260 is followed by whitespace.
261
Fred Drake64bb3802000-09-26 16:21:35 +0000262- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000263
264- struct: Check ranges for bytes and shorts.
265
266- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000267 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000268
269- Tkinter: Image objects are now guaranteed to have unique ids. Set
270 event.delta to zero if Tk version doesn't support mousewheel.
271 Removed some debugging prints.
272
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000273- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000274
Fred Drake67233bc2000-09-26 16:40:27 +0000275- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000276 which works around a bug in Norton AntiVirus 2000 that leads directly
277 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000278
279- xml: New version detection code allows PyXML to override standard
280 XML package if PyXML version is greater than 0.6.1.
281
Fred Drake64bb3802000-09-26 16:21:35 +0000282- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
283 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
284 tree only for nodes which are sufficiently interesting to a specific
285 application. Does not provide the HTML-specific extensions. Still
286 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000287
Fred Drake64bb3802000-09-26 16:21:35 +0000288- xml.sax: SAX 2 support for Python, including all the handler
289 interfaces needed to process XML 1.0 compliant XML. Some
290 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000291
Fred Drake64bb3802000-09-26 16:21:35 +0000292- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
293 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000294
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000295
Jeremy Hylton1b618592000-09-26 05:32:36 +0000296C API
297
298- Add three new convenience functions for module initialization --
299 PyModule_AddObject(), PyModule_AddIntConstant(), and
300 PyModule_AddStringConstant().
301
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000302- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +0000303 removed and add #error to Python.h if NULL isn't defined after
304 #include of stdio.h.
305
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000306- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +0000307 backwards compatibility (at the source level) with old extensions.
308
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000309- A wrapper API was added for signal() and sigaction(). Instead of
310 either function, always use PyOS_getsig() to get a signal handler
311 and PyOS_setsig() to set one. A new convenience typedef
312 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000313
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000314- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +0000315 internal data buffer and size of a string object -- or the default
316 encoded version of a Unicode object.
317
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000318- PyString_Size() and PyString_AsString() accept Unicode objects.
319
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000320- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +0000321 exists). INT_MAX and LONG_MAX will always be defined, even if
322 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000323
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000324- PyFloat_FromString takes a second argument, pend, that was
325 effectively useless. It is now officially useless but preserved for
326 backwards compatibility. If the pend argument is not NULL, *pend is
327 set to NULL.
328
329- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
330 for the attribute name. See note on getattr() above.
331
332- A few bug fixes to argument processing for Unicode.
333 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
334 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
335 pointer to the default encoded string data instead of to the raw
336 UTF-16.
337
338- Py_BuildValue accepts B format (for bgen-generated code).
339
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000340
Jeremy Hylton1b618592000-09-26 05:32:36 +0000341Internals
342
343- On Unix, fix code for finding Python installation directory so that
344 it works when argv[0] is a relative path.
345
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000346- Added a true tnicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000347 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +0000348 rather than by generating a copy of the object.
349
Tim Peters482c0212000-09-26 06:33:09 +0000350- Several of the internal Unicode tables are much smaller now, and
351 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000352
Jeremy Hylton97693b02000-09-26 17:42:51 +0000353- In the garbage collector: Fixed bug in collection of tuples. Fixed
354 bug that caused some instances to be removed from the container set
355 while they were still live. Fixed parsing in gc.set_debug() for
356 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000357
358- Fixed refcount problem in instance deallocation that only occurred
359 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
360
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000361- On Windows, getpythonregpath is now protected against null data in
362 registry key.
363
364- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
365 condition.
366
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000367
Jeremy Hylton1b618592000-09-26 05:32:36 +0000368Build and platform-specific issues
369
370- Better support of GNU Pth via --with-pth configure option.
371
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000372- Python/C API now properly exposed to dynamically-loaded extension
373 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000374
375- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
376 Don't define MS_SYNC to be zero when it is undefined. Added missing
377 prototypes in posixmodule.c.
378
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000379- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000380 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000381
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000382- Fix largefile support on older NetBSD systems and OpenBSD by adding
383 define for TELL64.
384
385
386Tools and other miscellany
387
388- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
389
390- freeze: The modulefinder now works with 2.0 opcodes.
391
392- IDLE:
393 Move hackery of sys.argv until after the Tk instance has been
394 created, which allows the application-specific Tkinter
395 initialization to be executed if present; also pass an explicit
396 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +0000397
Jeremy Hylton1b618592000-09-26 05:32:36 +0000398
399What's new in 2.0 beta 1?
400=========================
401
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000402Source Incompatibilities
403------------------------
404
405None. Note that 1.6 introduced several incompatibilities with 1.5.2,
406such as single-argument append(), connect() and bind(), and changes to
407str(long) and repr(float).
408
409
410Binary Incompatibilities
411------------------------
412
413- Third party extensions built for Python 1.5.x or 1.6 cannot be used
414with Python 2.0; these extensions will have to be rebuilt for Python
4152.0.
416
417- On Windows, attempting to import a third party extension built for
418Python 1.5.x or 1.6 results in an immediate crash; there's not much we
419can do about this. Check your PYTHONPATH environment variable!
420
421- Python bytecode files (*.pyc and *.pyo) are not compatible between
422releases.
423
424
425Overview of Changes Since 1.6
426-----------------------------
427
428There are many new modules (including brand new XML support through
429the xml package, and i18n support through the gettext module); a list
430of all new modules is included below. Lots of bugs have been fixed.
431
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000432The process for making major new changes to the language has changed
433since Python 1.6. Enhancements must now be documented by a Python
434Enhancement Proposal (PEP) before they can be accepted.
435
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000436There are several important syntax enhancements, described in more
437detail below:
438
439 - Augmented assignment, e.g. x += 1
440
441 - List comprehensions, e.g. [x**2 for x in range(10)]
442
443 - Extended import statement, e.g. import Module as Name
444
445 - Extended print statement, e.g. print >> file, "Hello"
446
447Other important changes:
448
449 - Optional collection of cyclical garbage
450
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000451Python Enhancement Proposal (PEP)
452---------------------------------
453
454PEP stands for Python Enhancement Proposal. A PEP is a design
455document providing information to the Python community, or describing
456a new feature for Python. The PEP should provide a concise technical
457specification of the feature and a rationale for the feature.
458
459We intend PEPs to be the primary mechanisms for proposing new
460features, for collecting community input on an issue, and for
461documenting the design decisions that have gone into Python. The PEP
462author is responsible for building consensus within the community and
463documenting dissenting opinions.
464
465The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000466
467Augmented Assignment
468--------------------
469
470This must have been the most-requested feature of the past years!
471Eleven new assignment operators were added:
472
Guido van Rossume905e952000-09-05 12:42:46 +0000473 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000474
475For example,
476
477 A += B
478
479is similar to
480
481 A = A + B
482
483except that A is evaluated only once (relevant when A is something
484like dict[index].attr).
485
486However, if A is a mutable object, A may be modified in place. Thus,
487if A is a number or a string, A += B has the same effect as A = A+B
488(except A is only evaluated once); but if a is a list, A += B has the
489same effect as A.extend(B)!
490
491Classes and built-in object types can override the new operators in
492order to implement the in-place behavior; the not-in-place behavior is
493used automatically as a fallback when an object doesn't implement the
494in-place behavior. For classes, the method name is derived from the
495method name for the corresponding not-in-place operator by inserting
496an 'i' in front of the name, e.g. __iadd__ implements in-place
497__add__.
498
499Augmented assignment was implemented by Thomas Wouters.
500
501
502List Comprehensions
503-------------------
504
505This is a flexible new notation for lists whose elements are computed
506from another list (or lists). The simplest form is:
507
508 [<expression> for <variable> in <sequence>]
509
Guido van Rossum56db0952000-09-06 23:34:25 +0000510For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000511This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000512
513You can also add a condition:
514
515 [<expression> for <variable> in <sequence> if <condition>]
516
517For example, [w for w in words if w == w.lower()] would yield the list
518of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000519than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000520
521You can also have nested for loops and more than one 'if' clause. For
522example, here's a function that flattens a sequence of sequences::
523
524 def flatten(seq):
525 return [x for subseq in seq for x in subseq]
526
527 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
528
529This prints
530
531 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
532
533List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000534Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000535
536
537Extended Import Statement
538-------------------------
539
540Many people have asked for a way to import a module under a different
541name. This can be accomplished like this:
542
543 import foo
544 bar = foo
545 del foo
546
547but this common idiom gets old quickly. A simple extension of the
548import statement now allows this to be written as follows:
549
550 import foo as bar
551
552There's also a variant for 'from ... import':
553
554 from foo import bar as spam
555
556This also works with packages; e.g. you can write this:
557
558 import test.regrtest as regrtest
559
560Note that 'as' is not a new keyword -- it is recognized only in this
561context (this is only possible because the syntax for the import
562statement doesn't involve expressions).
563
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000564Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000565
566
567Extended Print Statement
568------------------------
569
570Easily the most controversial new feature, this extension to the print
571statement adds an option to make the output go to a different file
572than the default sys.stdout.
573
574For example, to write an error message to sys.stderr, you can now
575write:
576
577 print >> sys.stderr, "Error: bad dog!"
578
579As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +0000580evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000581
582 print >> None, "Hello world"
583
584is equivalent to
585
586 print "Hello world"
587
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000588Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000589
590
591Optional Collection of Cyclical Garbage
592---------------------------------------
593
594Python is now equipped with a garbage collector that can hunt down
595cyclical references between Python objects. It's no replacement for
596reference counting; in fact, it depends on the reference counts being
597correct, and decides that a set of objects belong to a cycle if all
598their reference counts can be accounted for from their references to
599each other. This devious scheme was first proposed by Eric Tiedemann,
600and brought to implementation by Neil Schemenauer.
601
602There's a module "gc" that lets you control some parameters of the
603garbage collection. There's also an option to the configure script
604that lets you enable or disable the garbage collection. In 2.0b1,
605it's on by default, so that we (hopefully) can collect decent user
606experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +0000607performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000608off by default in the final 2.0 release.
609
610
611Smaller Changes
612---------------
613
614A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
615map(None, seq1, seq2, ...) when the sequences have the same length;
616i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
617the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000618zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000619
620sys.version_info is a tuple (major, minor, micro, level, serial).
621
622Dictionaries have an odd new method, setdefault(key, default).
623dict.setdefault(key, default) returns dict[key] if it exists; if not,
624it sets dict[key] to default and returns that value. Thus:
625
626 dict.setdefault(key, []).append(item)
627
628does the same work as this common idiom:
629
630 if not dict.has_key(key):
631 dict[key] = []
632 dict[key].append(item)
633
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000634There are two new variants of SyntaxError that are raised for
635indentation-related errors: IndentationError and TabError.
636
637Changed \x to consume exactly two hex digits; see PEP 223. Added \U
638escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000639
640The limits on the size of expressions and file in Python source code
641have been raised from 2**16 to 2**32. Previous versions of Python
642were limited because the maximum argument size the Python VM accepted
643was 2**16. This limited the size of object constructor expressions,
644e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
645limit was raised thanks to a patch by Charles Waldman that effectively
646fixes the problem. It is now much more likely that you will be
647limited by available memory than by an arbitrary limit in Python.
648
649The interpreter's maximum recursion depth can be modified by Python
650programs using sys.getrecursionlimit and sys.setrecursionlimit. This
651limit is the maximum number of recursive calls that can be made by
652Python code. The limit exists to prevent infinite recursion from
653overflowing the C stack and causing a core dump. The default value is
6541000. The maximum safe value for a particular platform can be found
655by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000656
657New Modules and Packages
658------------------------
659
660atexit - for registering functions to be called when Python exits.
661
662imputil - Greg Stein's alternative API for writing custom import
663hooks.
664
665pyexpat - an interface to the Expat XML parser, contributed by Paul
666Prescod.
667
668xml - a new package with XML support code organized (so far) in three
669subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
670would fill a volume. There's a special feature whereby a
671user-installed package named _xmlplus overrides the standard
672xmlpackage; this is intended to give the XML SIG a hook to distribute
673backwards-compatible updates to the standard xml package.
674
675webbrowser - a platform-independent API to launch a web browser.
676
677
Guido van Rossume905e952000-09-05 12:42:46 +0000678Changed Modules
679---------------
680
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000681array -- new methods for array objects: count, extend, index, pop, and
682remove
683
684binascii -- new functions b2a_hex and a2b_hex that convert between
685binary data and its hex representation
686
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000687calendar -- Many new functions that support features including control
688over which day of the week is the first day, returning strings instead
689of printing them. Also new symbolic constants for days of week,
690e.g. MONDAY, ..., SUNDAY.
691
692cgi -- FieldStorage objects have a getvalue method that works like a
693dictionary's get method and returns the value attribute of the object.
694
695ConfigParser -- The parser object has new methods has_option,
696remove_section, remove_option, set, and write. They allow the module
697to be used for writing config files as well as reading them.
698
699ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000700optionally support the RFC 959 REST command.
701
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000702gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000703
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000704httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
705the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000706
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000707locale -- implement getdefaultlocale for Win32 and Macintosh
708
709marshal -- no longer dumps core when marshaling deeply nested or
710recursive data structures
711
712os -- new functions isatty, seteuid, setegid, setreuid, setregid
713
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000714os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
715support under Unix.
716
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000717os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000718
719os.path -- fix semantics of os.path.commonprefix
720
721smtplib -- support for sending very long messages
722
723socket -- new function getfqdn()
724
725readline -- new functions to read, write and truncate history files.
726The readline section of the library reference manual contains an
727example.
728
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000729select -- add interface to poll system call
730
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000731shutil -- new copyfileobj function
732
733SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
734HTTP server.
735
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000736Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000737
738urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +0000739e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000740
741whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +0000742
743
744Obsolete Modules
745----------------
746
747None. However note that 1.6 made a whole slew of modules obsolete:
748stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
749poly, zmod, strop, util, whatsound.
750
751
752Changed, New, Obsolete Tools
753----------------------------
754
Tim Peters8b092332000-09-05 20:15:25 +0000755None.
Guido van Rossume905e952000-09-05 12:42:46 +0000756
757
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000758C-level Changes
759---------------
760
761Several cleanup jobs were carried out throughout the source code.
762
763All C code was converted to ANSI C; we got rid of all uses of the
764Py_PROTO() macro, which makes the header files a lot more readable.
765
766Most of the portability hacks were moved to a new header file,
767pyport.h; several other new header files were added and some old
768header files were removed, in an attempt to create a more rational set
769of header files. (Few of these ever need to be included explicitly;
770they are all included by Python.h.)
771
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000772Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000773and Win64, especially for the new Intel Itanium processor. Mick also
774added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000775
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000776The C APIs to return an object's size have been update to consistently
777use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
778previous versions, the abstract interfaces used PyXXX_Length and the
779concrete interfaces used PyXXX_Size. The old names,
780e.g. PyObject_Length, are still available for backwards compatibility
781at the API level, but are deprecated.
782
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000783The PyOS_CheckStack function has been implemented on Windows by
784Fredrik Lundh. It prevents Python from failing with a stack overflow
785on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000786
787The GC changes resulted in creation of two new slots on object,
788tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +0000789the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000790
791The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +0000792C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000793
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000794PyErr_Format has been updated to automatically calculate the size of
795the buffer needed to hold the formatted result string. This change
796prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000797
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000798New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +0000799
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000800PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
801that are the same as their non-Ex counterparts except they take an
802extra flag argument that tells them to close the file when done.
803
804XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000805
Tim Peters8b092332000-09-05 20:15:25 +0000806
807Windows Changes
808---------------
809
810New popen2/popen3/peopen4 in os module (see Changed Modules above).
811
812os.popen is much more usable on Windows 95 and 98. See Microsoft
813Knowledge Base article Q150956. The Win9x workaround described there
814is implemented by the new w9xpopen.exe helper in the root of your
815Python installation. Note that Python uses this internally; it is not
816a standalone program.
817
818Administrator privileges are no longer required to install Python
819on Windows NT or Windows 2000. If you have administrator privileges,
820Python's registry info will be written under HKEY_LOCAL_MACHINE.
821Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +0000822under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +0000823uses of Python, but will prevent some advanced uses from working
824(for example, running a Python script as an NT service, or possibly
825from CGI).
826
827[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
828installer; instead, it installs the needed Tcl/Tk files directly in the
829Python directory. If you already have a Tcl/Tk installation, this
830wastes some disk space (about 4 Megs) but avoids problems with
831conflicting Tcl/Tk installations, and makes it much easier for Python
832to ensure that Tcl/Tk can find all its files.
833
834[This was new in 1.6] The Windows installer now installs by default in
835\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
836
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000837
838Updates to the changes between 1.5.2 and 1.6
839--------------------------------------------
840
841The 1.6 NEWS file can't be changed after the release is done, so here
842is some late-breaking news:
843
844New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
845and changes to getlocale() and setlocale().
846
847The new module is now enabled per default.
848
849It is not true that the encodings codecs cannot be used for normal
850strings: the string.encode() (which is also present on 8-bit strings
851!) allows using them for 8-bit strings too, e.g. to convert files from
852cp1252 (Windows) to latin-1 or vice-versa.
853
854Japanese codecs are available from Tamito KAJIYAMA:
855http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
856
857
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000858======================================================================